#include "log.h"
 #include "inode.h"
 #include "trace_gfs2.h"
+#include "dir.h"
 
 #define BFITNOENT ((u32)~0)
 #define NO_BLOCK ((u64)~0)
 {
        struct gfs2_rgrpd *next = gfs2_rgrpd_get_next(rgd);
        struct gfs2_rgrp *str = buf;
+       u32 crc;
 
        str->rg_flags = cpu_to_be32(rgd->rd_flags & ~GFS2_RDF_MASK);
        str->rg_free = cpu_to_be32(rgd->rd_free);
        str->rg_data0 = cpu_to_be64(rgd->rd_data0);
        str->rg_data = cpu_to_be32(rgd->rd_data);
        str->rg_bitbytes = cpu_to_be32(rgd->rd_bitbytes);
+       str->rg_crc = 0;
+       crc = gfs2_disk_hash(buf, sizeof(struct gfs2_rgrp));
+       str->rg_crc = cpu_to_be32(crc);
 
        memset(&str->rg_reserved, 0, sizeof(str->rg_reserved));
 }
 
        __be64 rg_data0;     /* First data location */
        __be32 rg_data;      /* Number of data blocks in rgrp */
        __be32 rg_bitbytes;  /* Number of bytes in data bitmaps */
+       __be32 rg_crc;       /* crc32 of the structure with this field 0 */
 
-       __u8 rg_reserved[64]; /* Several fields from gfs1 now reserved */
+       __u8 rg_reserved[60]; /* Several fields from gfs1 now reserved */
 };
 
 /*