From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Fri, 25 May 2012 16:37:05 +0100 Subject: [Cluster-devel] [PATCH] libgfs2: Use flags for versions in metadata description In-Reply-To: <1337958328-22654-1-git-send-email-anprice@redhat.com> References: <1337958328-22654-1-git-send-email-anprice@redhat.com> Message-ID: <1337960225.2692.6.camel@menhir> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Looks good to me, Steve. On Fri, 2012-05-25 at 16:05 +0100, Andrew Price wrote: > Consolidate the .gfs1 and .gfs2 fields into one .versions field and add > constants so we can test lgfs2_metadata versions more easily. > > Signed-off-by: Andrew Price > --- > gfs2/edit/hexedit.c | 8 +++--- > gfs2/libgfs2/libgfs2.h | 5 ++- > gfs2/libgfs2/meta.c | 67 ++++++++++++++++++++---------------------------- > 3 files changed, 35 insertions(+), 45 deletions(-) > > diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c > index b4e6d15..2ff1125 100644 > --- a/gfs2/edit/hexedit.c > +++ b/gfs2/edit/hexedit.c > @@ -813,14 +813,13 @@ int display_block_type(int from_restore) > return ret_type; > } > > -static const struct lgfs2_metadata *find_mtype(uint32_t mtype, int gfs1) > +static const struct lgfs2_metadata *find_mtype(uint32_t mtype, const unsigned versions) > { > const struct lgfs2_metadata *m = lgfs2_metadata; > unsigned n = 0; > > do { > - if (((gfs1 && m[n].gfs1) || (!gfs1 && m[n].gfs2)) > - && m[n].mh_type == mtype) > + if ((m[n].versions & versions) && m[n].mh_type == mtype) > return &m[n]; > n++; > } while (n < lgfs2_metadata_size); > @@ -936,7 +935,8 @@ static int hexdump(uint64_t startaddr, int len) > } > print_gfs2("] "); > if (print_field >= 0) { > - const struct lgfs2_metadata *m = find_mtype(block_type, sbd.gfs1); > + const struct lgfs2_metadata *m = find_mtype(block_type, > + sbd.gfs1 ? LGFS2_MD_GFS1 : LGFS2_MD_GFS2); > if (m) { > const struct lgfs2_metafield *f; > unsigned n; > diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h > index 8ed08dd..2fc47de 100644 > --- a/gfs2/libgfs2/libgfs2.h > +++ b/gfs2/libgfs2/libgfs2.h > @@ -142,8 +142,9 @@ struct lgfs2_metafield { > }; > > struct lgfs2_metadata { > - const unsigned gfs1:1; > - const unsigned gfs2:1; > + const unsigned versions:2; > +#define LGFS2_MD_GFS1 0x01 > +#define LGFS2_MD_GFS2 0x02 > const unsigned header:1; > const uint32_t mh_type; > const uint32_t mh_format; > diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c > index 1f796c8..a677cdc 100644 > --- a/gfs2/libgfs2/meta.c > +++ b/gfs2/libgfs2/meta.c > @@ -478,7 +478,7 @@ RF(bt_pad) > > const struct lgfs2_metadata lgfs2_metadata[] = { > [LGFS2_MT_GFS2_SB] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_SB, > .mh_format = GFS2_FORMAT_SB, > @@ -488,7 +488,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_sb), > }, > [LGFS2_MT_GFS_SB] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_SB, > .mh_format = GFS_FORMAT_SB, > @@ -498,15 +498,14 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_sb), > }, > [LGFS2_MT_RINDEX] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "rindex", > .fields = gfs2_rindex_fields, > .nfields = ARRAY_SIZE(gfs2_rindex_fields), > .size = sizeof(struct gfs2_rindex), > }, > [LGFS2_MT_GFS2_RGRP] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_RG, > .mh_format = GFS2_FORMAT_RG, > @@ -516,7 +515,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_rgrp), > }, > [LGFS2_MT_GFS_RGRP] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_RG, > .mh_format = GFS2_FORMAT_RG, > @@ -526,8 +525,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_rgrp), > }, > [LGFS2_MT_RGRP_BITMAP] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_RB, > .mh_format = GFS2_FORMAT_RB, > @@ -537,7 +535,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_GFS2_DINODE] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_DI, > .mh_format = GFS2_FORMAT_DI, > @@ -547,7 +545,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_dinode), > }, > [LGFS2_MT_GFS_DINODE] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_DI, > .mh_format = GFS2_FORMAT_DI, > @@ -557,7 +555,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_dinode), > }, > [LGFS2_MT_GFS2_INDIRECT] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_IN, > .mh_format = GFS2_FORMAT_IN, > @@ -567,7 +565,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_GFS_INDIRECT] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_IN, > .mh_format = GFS2_FORMAT_IN, > @@ -577,8 +575,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_indirect), > }, > [LGFS2_MT_DIR_LEAF] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_LF, > .mh_format = GFS2_FORMAT_LF, > @@ -588,8 +585,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_leaf), > }, > [LGFS2_MT_JRNL_DATA] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_JD, > .mh_format = GFS2_FORMAT_JD, > @@ -599,7 +595,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_GFS2_LOG_HEADER] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_LH, > .mh_format = GFS2_FORMAT_LH, > @@ -609,7 +605,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_log_header), > }, > [LGFS2_MT_GFS_LOG_HEADER] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_LH, > .mh_format = GFS2_FORMAT_LH, > @@ -619,7 +615,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_log_header), > }, > [LGFS2_MT_GFS2_LOG_DESC] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_LD, > .mh_format = GFS2_FORMAT_LD, > @@ -629,7 +625,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_log_descriptor), > }, > [LGFS2_MT_GFS_LOG_DESC] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .header = 1, > .mh_type = GFS2_METATYPE_LD, > .mh_format = GFS2_FORMAT_LD, > @@ -639,7 +635,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs_log_descriptor), > }, > [LGFS2_MT_GFS2_LOG_BLOCK] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_LB, > .mh_format = GFS2_FORMAT_LB, > @@ -649,8 +645,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_EA_ATTR] = { > - .gfs2 = 1, > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_EA, > .mh_format = GFS2_FORMAT_EA, > @@ -660,8 +655,7 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_EA_DATA] = { > - .gfs2 = 1, > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .header = 1, > .mh_type = GFS2_METATYPE_ED, > .mh_format = GFS2_FORMAT_ED, > @@ -671,65 +665,60 @@ const struct lgfs2_metadata lgfs2_metadata[] = { > .size = sizeof(struct gfs2_meta_header), > }, > [LGFS2_MT_GFS2_QUOTA_CHANGE] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .name = "gfs2_quota_change", > .fields = gfs2_quota_change_fields, > .nfields = ARRAY_SIZE(gfs2_quota_change_fields), > .size = sizeof(struct gfs2_quota_change), > }, > [LGFS2_MT_DIRENT] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "gfs2_dirent", > .fields = gfs2_dirent_fields, > .nfields = ARRAY_SIZE(gfs2_dirent_fields), > .size = sizeof(struct gfs2_dirent), > }, > [LGFS2_MT_EA_HEADER] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "gfs2_ea_header", > .fields = gfs2_ea_header_fields, > .nfields = ARRAY_SIZE(gfs2_ea_header_fields), > .size = sizeof(struct gfs2_ea_header), > }, > [LGFS2_MT_GFS2_INUM_RANGE] = { > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS2, > .name = "gfs2_inum_range", > .fields = gfs2_inum_range_fields, > .nfields = ARRAY_SIZE(gfs2_inum_range_fields), > .size = sizeof(struct gfs2_inum_range), > }, > [LGFS2_MT_STATFS_CHANGE] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "gfs2_statfs_change", > .fields = gfs2_statfs_change_fields, > .nfields = ARRAY_SIZE(gfs2_statfs_change_fields), > .size = sizeof(struct gfs2_statfs_change), > }, > [LGFS2_MT_GFS_JINDEX] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .name = "gfs_jindex", > .fields = gfs_jindex_fields, > .nfields = ARRAY_SIZE(gfs_jindex_fields), > .size = sizeof(struct gfs_jindex), > }, > [LGFS2_MT_GFS_BLOCK_TAG] = { > - .gfs1 = 1, > + .versions = LGFS2_MD_GFS1, > .name = "gfs_block_tag", > .fields = gfs_block_tag_fields, > .nfields = ARRAY_SIZE(gfs_block_tag_fields), > .size = sizeof(struct gfs_block_tag), > }, > [LGFS2_MT_DATA] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "data", > }, > [LGFS2_MT_FREE] = { > - .gfs1 = 1, > - .gfs2 = 1, > + .versions = LGFS2_MD_GFS1 | LGFS2_MD_GFS2, > .name = "free", > }, > };