[Cluster-devel] [PATCH 2/3] gfs2_edit: Fix find_mtype and support gfs1 structures
Steven Whitehouse
swhiteho at redhat.com
Fri May 25 10:40:07 UTC 2012
Hi,
On Fri, 2012-05-25 at 11:27 +0100, Andrew Price wrote:
> On 25/05/12 11:07, Andrew Price wrote:
> > Fixes up find_mtype to really iterate over the metadata array and to
> > choose between gfs2 and gfs1 structures.
> >
> > Signed-off-by: Andrew Price<anprice at redhat.com>
> > ---
> > gfs2/edit/hexedit.c | 9 +++++----
> > 1 files changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
> > index 69d1940..8311534 100644
> > --- a/gfs2/edit/hexedit.c
> > +++ b/gfs2/edit/hexedit.c
> > @@ -813,14 +813,15 @@ int display_block_type(int from_restore)
> > return ret_type;
> > }
> >
> > -static const struct lgfs2_metadata *find_mtype(uint32_t mtype)
> > +static const struct lgfs2_metadata *find_mtype(uint32_t mtype, int gfs1)
> > {
> > const struct lgfs2_metadata *m = lgfs2_metadata;
> > unsigned n = 0;
> >
> > do {
> > - if (m->gfs2&& m->mh_type == mtype)
> > - return m;
> > + if (((gfs1&& m[n].gfs1) || (!gfs1&& m[n].gfs2))
>
> I'm wondering if we should represent the version metadata as flags
> instead of separate gfs1 and gfs2 fields and define some constants so we
> can do the comparison in one go, e.g.
>
> if ((m[n].versions & versions) ...
>
> Where versions is some combination of defined constants passed into the
> function like LGFS2_VER_1 | LGFS2_VER_2
>
> But that has its own drawbacks I guess so I'm probably just splitting
> hairs. What do you think?
>
> Andy
>
I think that makes sense. I don't remember now why I did that with a
bitfield and not flags, but it is probably better to convert it to
flags. We'll want to give them a longer name though, as everything in
the library will land up with a LGFS2_ or lgfs2_ prefix in the end,
Steve.
More information about the Cluster-devel
mailing list