Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Cluster Development (http://www.linux-archive.org/cluster-development/)
-   -   gfs2_edit: Fix find_mtype and support gfs1 structures (http://www.linux-archive.org/cluster-development/670895-gfs2_edit-fix-find_mtype-support-gfs1-structures.html)

Andrew Price 05-25-2012 10:07 AM

gfs2_edit: Fix find_mtype and support gfs1 structures
 
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@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))
+ && 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


All times are GMT. The time now is 02:12 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.