]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
[GFS2] split gfs2_dinode into on-disk and host variants
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 14 Oct 2006 00:11:25 +0000 (20:11 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 30 Nov 2006 15:32:50 +0000 (10:32 -0500)
The latter is used as part of gfs2-private part of struct inode.
It actually stores a lot of fields differently; for now the
declaration is just cloned, inode field is swtiched and changes
propagated.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/inode.c
fs/gfs2/ondisk.c
include/linux/gfs2_ondisk.h

index d470e5286ecd7715e0804a7fc54a6e34015c7559..191a3df93d67cd1dcbecf77062c32b66f7182f88 100644 (file)
@@ -48,7 +48,7 @@
 void gfs2_inode_attr_in(struct gfs2_inode *ip)
 {
        struct inode *inode = &ip->i_inode;
-       struct gfs2_dinode *di = &ip->i_di;
+       struct gfs2_dinode_host *di = &ip->i_di;
 
        inode->i_ino = ip->i_num.no_addr;
 
@@ -98,7 +98,7 @@ void gfs2_inode_attr_in(struct gfs2_inode *ip)
 void gfs2_inode_attr_out(struct gfs2_inode *ip)
 {
        struct inode *inode = &ip->i_inode;
-       struct gfs2_dinode *di = &ip->i_di;
+       struct gfs2_dinode_host *di = &ip->i_di;
        gfs2_assert_withdraw(GFS2_SB(inode),
                (di->di_mode & S_IFMT) == (inode->i_mode & S_IFMT));
        di->di_mode = inode->i_mode;
index 1025960b0e6e8242d8f97bdd2f288576c0d2416f..52cb9a2dc0588c4c506e35a6ffd62b4be8cb5e1f 100644 (file)
@@ -153,7 +153,7 @@ void gfs2_quota_in(struct gfs2_quota *qu, const void *buf)
        qu->qu_value = be64_to_cpu(str->qu_value);
 }
 
-void gfs2_dinode_in(struct gfs2_dinode *di, const void *buf)
+void gfs2_dinode_in(struct gfs2_dinode_host *di, const void *buf)
 {
        const struct gfs2_dinode *str = buf;
 
@@ -187,7 +187,7 @@ void gfs2_dinode_in(struct gfs2_dinode *di, const void *buf)
 
 }
 
-void gfs2_dinode_out(const struct gfs2_dinode *di, void *buf)
+void gfs2_dinode_out(const struct gfs2_dinode_host *di, void *buf)
 {
        struct gfs2_dinode *str = buf;
 
@@ -221,7 +221,7 @@ void gfs2_dinode_out(const struct gfs2_dinode *di, void *buf)
 
 }
 
-void gfs2_dinode_print(const struct gfs2_dinode *di)
+void gfs2_dinode_print(const struct gfs2_dinode_host *di)
 {
        gfs2_meta_header_print(&di->di_header);
        gfs2_inum_print(&di->di_num);
index a7ae7c177cacbb3044ed372976f09b7cfe48338f..f334b4bd291533ca1ea5e669da3da21b5ad400a3 100644 (file)
@@ -270,6 +270,48 @@ struct gfs2_dinode {
        __u8 di_reserved[56];
 };
 
+struct gfs2_dinode_host {
+       struct gfs2_meta_header di_header;
+
+       struct gfs2_inum di_num;
+
+       __be32 di_mode; /* mode of file */
+       __be32 di_uid;  /* owner's user id */
+       __be32 di_gid;  /* owner's group id */
+       __be32 di_nlink;        /* number of links to this file */
+       __be64 di_size; /* number of bytes in file */
+       __be64 di_blocks;       /* number of blocks in file */
+       __be64 di_atime;        /* time last accessed */
+       __be64 di_mtime;        /* time last modified */
+       __be64 di_ctime;        /* time last changed */
+       __be32 di_major;        /* device major number */
+       __be32 di_minor;        /* device minor number */
+
+       /* This section varies from gfs1. Padding added to align with
+         * remainder of dinode
+        */
+       __be64 di_goal_meta;    /* rgrp to alloc from next */
+       __be64 di_goal_data;    /* data block goal */
+       __be64 di_generation;   /* generation number for NFS */
+
+       __be32 di_flags;        /* GFS2_DIF_... */
+       __be32 di_payload_format;  /* GFS2_FORMAT_... */
+       __u16 __pad1;   /* Was ditype in gfs1 */
+       __be16 di_height;       /* height of metadata */
+       __u32 __pad2;   /* Unused incarnation number from gfs1 */
+
+       /* These only apply to directories  */
+       __u16 __pad3;   /* Padding */
+       __be16 di_depth;        /* Number of bits in the table */
+       __be32 di_entries;      /* The number of entries in the directory */
+
+       struct gfs2_inum __pad4; /* Unused even in current gfs1 */
+
+       __be64 di_eattr;        /* extended attribute block number */
+
+       __u8 di_reserved[56];
+};
+
 /*
  * directory structure - many of these per directory file
  */
@@ -422,8 +464,8 @@ extern void gfs2_rgrp_in(struct gfs2_rgrp *rg, const void *buf);
 extern void gfs2_rgrp_out(const struct gfs2_rgrp *rg, void *buf);
 extern void gfs2_quota_in(struct gfs2_quota *qu, const void *buf);
 extern void gfs2_quota_out(const struct gfs2_quota *qu, void *buf);
-extern void gfs2_dinode_in(struct gfs2_dinode *di, const void *buf);
-extern void gfs2_dinode_out(const struct gfs2_dinode *di, void *buf);
+extern void gfs2_dinode_in(struct gfs2_dinode_host *di, const void *buf);
+extern void gfs2_dinode_out(const struct gfs2_dinode_host *di, void *buf);
 extern void gfs2_ea_header_in(struct gfs2_ea_header *ea, const void *buf);
 extern void gfs2_ea_header_out(const struct gfs2_ea_header *ea, void *buf);
 extern void gfs2_log_header_in(struct gfs2_log_header *lh, const void *buf);
@@ -436,7 +478,7 @@ extern void gfs2_quota_change_in(struct gfs2_quota_change *qc, const void *buf);
 /* Printing functions */
 
 extern void gfs2_rindex_print(const struct gfs2_rindex *ri);
-extern void gfs2_dinode_print(const struct gfs2_dinode *di);
+extern void gfs2_dinode_print(const struct gfs2_dinode_host *di);
 
 #endif /* __KERNEL__ */