return ERR_PTR(error);
 }
 
-static void gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
+static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
 {
        struct gfs2_dinode_host *di = &ip->i_di;
        const struct gfs2_dinode *str = buf;
 
-       gfs2_meta_header_in(&di->di_header, buf);
-       gfs2_inum_in(&di->di_num, &str->di_num);
+       if (ip->i_num.no_addr != be64_to_cpu(str->di_num.no_addr)) {
+               if (gfs2_consist_inode(ip))
+                       gfs2_dinode_print(ip);
+               return -EIO;
+       }
+       if (ip->i_num.no_formal_ino != be64_to_cpu(str->di_num.no_formal_ino))
+               return -ESTALE;
 
        di->di_mode = be32_to_cpu(str->di_mode);
        di->di_uid = be32_to_cpu(str->di_uid);
        di->di_entries = be32_to_cpu(str->di_entries);
 
        di->di_eattr = be64_to_cpu(str->di_eattr);
+       return 0;
 }
 
 /**
                return -EIO;
        }
 
-       gfs2_dinode_in(ip, dibh->b_data);
+       error = gfs2_dinode_in(ip, dibh->b_data);
 
        brelse(dibh);
-
-       if (ip->i_num.no_addr != ip->i_di.di_num.no_addr) {
-               if (gfs2_consist_inode(ip))
-                       gfs2_dinode_print(ip);
-               return -EIO;
-       }
-       if (ip->i_num.no_formal_ino != ip->i_di.di_num.no_formal_ino)
-               return -ESTALE;
-
        ip->i_vn = ip->i_gl->gl_vn;
 
-       return 0;
+       return error;
 }
 
 int gfs2_dinode_dealloc(struct gfs2_inode *ip)
 
        printk(KERN_INFO "  no_addr = %llu\n", (unsigned long long)no->no_addr);
 }
 
-void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf)
+static void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf)
 {
        const struct gfs2_meta_header *str = buf;
 
        str->mh_format = cpu_to_be32(mh->mh_format);
 }
 
-static void gfs2_meta_header_print(const struct gfs2_meta_header_host *mh)
-{
-       pv(mh, mh_magic, "0x%.8X");
-       pv(mh, mh_type, "%u");
-       pv(mh, mh_format, "%u");
-}
-
 void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf)
 {
        const struct gfs2_sb *str = buf;
        const struct gfs2_dinode_host *di = &ip->i_di;
        struct gfs2_dinode *str = buf;
 
-       gfs2_meta_header_out(&di->di_header, buf);
-       gfs2_inum_out(&di->di_num, (char *)&str->di_num);
+       str->di_header.mh_magic = cpu_to_be32(GFS2_MAGIC);
+       str->di_header.mh_type = cpu_to_be32(GFS2_METATYPE_DI);
+       str->di_header.__pad0 = 0;
+       str->di_header.mh_format = cpu_to_be32(GFS2_FORMAT_DI);
+       str->di_header.__pad1 = 0;
+
+       gfs2_inum_out(&ip->i_num, &str->di_num);
 
        str->di_mode = cpu_to_be32(di->di_mode);
        str->di_uid = cpu_to_be32(di->di_uid);
        str->di_entries = cpu_to_be32(di->di_entries);
 
        str->di_eattr = cpu_to_be64(di->di_eattr);
-
 }
 
 void gfs2_dinode_print(const struct gfs2_inode *ip)
 {
        const struct gfs2_dinode_host *di = &ip->i_di;
 
-       gfs2_meta_header_print(&di->di_header);
-       gfs2_inum_print(&di->di_num);
+       gfs2_inum_print(&ip->i_num);
 
        pv(di, di_mode, "0%o");
        pv(di, di_uid, "%u");
 
 };
 
 struct gfs2_dinode_host {
-       struct gfs2_meta_header_host di_header;
-
-       struct gfs2_inum_host di_num;
-
        __u32 di_mode;  /* mode of file */
        __u32 di_uid;   /* owner's user id */
        __u32 di_gid;   /* owner's group id */
 
 extern void gfs2_inum_in(struct gfs2_inum_host *no, const void *buf);
 extern void gfs2_inum_out(const struct gfs2_inum_host *no, void *buf);
-extern void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf);
 extern void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf);
 extern void gfs2_rindex_in(struct gfs2_rindex_host *ri, const void *buf);
 extern void gfs2_rindex_out(const struct gfs2_rindex_host *ri, void *buf);