Fixes up find_mtype to really iterate over the metadata array and to choose between gfs2 and gfs1 structures.
Signed-off-by: Andrew Price <[email protected]> --- 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)) + && m[n].mh_type == mtype) + return &m[n]; n++; } while (n < lgfs2_metadata_size); @@ -934,7 +935,7 @@ static int hexdump(uint64_t startaddr, int len) } print_gfs2("] "); if (print_field >= 0) { - const struct lgfs2_metadata *m = find_mtype(get_block_type(bh)); + const struct lgfs2_metadata *m = find_mtype(get_block_type(bh), sbd.gfs1); if (m) { const struct lgfs2_metafield *f; unsigned n; -- 1.7.7.6
