+ EXIT;
+ return res;
+}
+
+#define OBD_MD_FLMODE (1UL<<1)
+#define OBD_MD_FLUID (1UL<<2)
+#define OBD_MD_FLGID (1UL<<3)
+#define OBD_MD_FLSIZE (1UL<<4)
+#define OBD_MD_FLATIME (1UL<<5)
+#define OBD_MD_FLMTIME (1UL<<6)
+#define OBD_MD_FLCTIME (1UL<<7)
+#define OBD_MD_FLFLAGS (1UL<<8)
+#define OBD_MD_FLBLOCKS (1UL<<9)
+#define OBD_MD_FLOBDMD (1UL<<10)
+
+
+static __inline__ void obdo_cpy_md(obdattr *dst, obdattr *src, int mask)
+{
+ CDEBUG(D_INODE, "flags %x\n", mask);
+ if ( ! (mask & OBD_MD_FLMODE) )
+ dst->i_mode = src->i_mode;
+ if ( ! (mask & OBD_MD_FLUID) )
+ dst->i_uid = src->i_uid;
+ if ( ! (mask & OBD_MD_FLGID) )
+ dst->i_gid = src->i_gid;
+ if ( ! (mask & OBD_MD_FLSIZE) )
+ dst->i_size = src->i_size;
+ if ( ! (mask & OBD_MD_FLATIME) )
+ dst->i_atime = src->i_atime;
+ if ( ! (mask & OBD_MD_FLMTIME) )
+ dst->i_mtime = src->i_mtime;
+ if ( ! (mask & OBD_MD_FLCTIME) )
+ dst->i_ctime = src->i_ctime;
+ if ( ! (mask & OBD_MD_FLFLAGS) )
+ dst->i_flags = src->i_flags;
+ /* allocation of space */
+ if ( ! (mask & OBD_MD_FLBLOCKS) )
+ dst->i_blocks = src->i_blocks;
+ if ( ! (mask & OBD_MD_FLOBDMD) && !src->i_blocks ) {
+ CDEBUG(D_IOCTL, "copying inline data: ino %ld\n", dst->i_ino);
+ memcpy(&dst->u.ext2_i.i_data, &src->u.ext2_i.i_data,
+ sizeof(src->u.ext2_i.i_data));
+ } else {
+ CDEBUG(D_INODE, "XXXX cpy_obdmd: ino %ld iblocks not 0!\n", src->i_ino);
+ }
+}
+
+static __inline__ int obdo_cmp_md(obdattr *dst, obdattr *src, int mask)
+{
+ int res = 1;
+ if ( ! (mask & OBD_MD_FLMODE) )
+ res = (res && (dst->i_mode == src->i_mode));
+ if ( ! (mask & OBD_MD_FLUID) )
+ res = (res && (dst->i_uid == src->i_uid));
+ if ( ! (mask & OBD_MD_FLGID) )
+ res = (res && (dst->i_gid == src->i_gid));
+ if ( ! (mask & OBD_MD_FLSIZE) )
+ res = (res && (dst->i_size == src->i_size));
+ if ( ! (mask & OBD_MD_FLATIME) )
+ res = (res && (dst->i_atime == src->i_atime));
+ if ( ! (mask & OBD_MD_FLMTIME) )
+ res = (res && (dst->i_mtime == src->i_mtime));
+ if ( ! (mask & OBD_MD_FLCTIME) )
+ res = (res && (dst->i_ctime == src->i_ctime));
+ if ( ! (mask & OBD_MD_FLFLAGS) )
+ res = (res && (dst->i_flags == src->i_flags));
+ /* allocation of space */
+ if ( ! (mask & OBD_MD_FLBLOCKS) )
+ res = (res && (dst->i_blocks == src->i_blocks));