From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17472 invoked by alias); 31 Aug 2009 17:53:50 -0000 Received: (qmail 17463 invoked by alias); 31 Aug 2009 17:53:50 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_22,J_CHICKENPOX_33,SPF_HELO_PASS X-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_22,J_CHICKENPOX_33,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion2.fedora.phx.redhat.com Subject: cluster: STABLE2 - Allow gfs2_edit to display and print gfs1 rgrps To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/STABLE2 X-Git-Reftype: branch X-Git-Oldrev: 161466f80b118454b73946cd06ca553b67f6b4d1 X-Git-Newrev: 0844bbd134790d48e39375e04ac360798f30d9d8 From: Bob Peterson Message-Id: <20090831175319.83D19120276@lists.fedorahosted.org> Date: Mon, 31 Aug 2009 17:53:00 -0000 X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q3/txt/msg00271.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=0844bbd134790d48e39375e04ac360798f30d9d8 Commit: 0844bbd134790d48e39375e04ac360798f30d9d8 Parent: 161466f80b118454b73946cd06ca553b67f6b4d1 Author: Bob Peterson AuthorDate: Mon Aug 31 11:17:14 2009 -0500 Committer: Bob Peterson CommitterDate: Mon Aug 31 12:54:41 2009 -0500 Allow gfs2_edit to display and print gfs1 rgrps Before gfs2_edit was interpreting gfs1 rgrps as gfs2 rgrps for displaying and printing purposes. rhbz#503529 --- gfs2/edit/gfs2hex.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 62 insertions(+), 2 deletions(-) diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c index b8414e2..0d74720 100644 --- a/gfs2/edit/gfs2hex.c +++ b/gfs2/edit/gfs2hex.c @@ -53,6 +53,25 @@ const char *block_type_str[15] = { "Quota Change", }; +struct gfs1_rgrp { + struct gfs2_meta_header rg_header; + + uint32_t rg_flags; /* ?? */ + + uint32_t rg_free; /* Number (qty) of free data blocks */ + + /* Dinodes are USEDMETA, but are handled separately from other METAs */ + uint32_t rg_useddi; /* Number (qty) of dinodes (used or free) */ + uint32_t rg_freedi; /* Number (qty) of unused (free) dinodes */ + struct gfs2_inum rg_freedi_list; /* 1st block in chain of free dinodes */ + + /* These META statistics do not include dinodes (used or free) */ + uint32_t rg_usedmeta; /* Number (qty) of used metadata blocks */ + uint32_t rg_freemeta; /* Number (qty) of unused metadata blocks */ + + char rg_reserved[64]; +}; + void eol(int col) /* end of line */ { if (termlines) { @@ -461,6 +480,40 @@ void gfs2_sb_print2(struct gfs2_sb *sb) #endif } +/** + * gfs1_rgrp_in - read in a gfs1 rgrp + */ +void gfs1_rgrp_in(struct gfs1_rgrp *rgrp, char *rbuf) +{ + struct gfs1_rgrp *str = (struct gfs1_rgrp *)rbuf; + + gfs2_meta_header_in(&rgrp->rg_header, rbuf); + rgrp->rg_flags = be32_to_cpu(str->rg_flags); + rgrp->rg_free = be32_to_cpu(str->rg_free); + rgrp->rg_useddi = be32_to_cpu(str->rg_useddi); + rgrp->rg_freedi = be32_to_cpu(str->rg_freedi); + gfs2_inum_in(&rgrp->rg_freedi_list, (char *)&str->rg_freedi_list); + rgrp->rg_usedmeta = be32_to_cpu(str->rg_usedmeta); + rgrp->rg_freemeta = be32_to_cpu(str->rg_freemeta); + memcpy(rgrp->rg_reserved, str->rg_reserved, 64); +} + +/** + * gfs_rgrp_print - Print out a resource group header + */ +void gfs1_rgrp_print(struct gfs1_rgrp *rg) +{ + gfs2_meta_header_print(&rg->rg_header); + pv(rg, rg_flags, "%u", "0x%x"); + pv(rg, rg_free, "%u", "0x%x"); + pv(rg, rg_useddi, "%u", "0x%x"); + pv(rg, rg_freedi, "%u", "0x%x"); + gfs2_inum_print(&rg->rg_freedi_list); + + pv(rg, rg_usedmeta, "%u", "0x%x"); + pv(rg, rg_freemeta, "%u", "0x%x"); +} + /****************************************************************************** ******************************************************************************* ** @@ -510,8 +563,15 @@ int display_gfs2(void) break; case GFS2_METATYPE_RG: - gfs2_rgrp_in(&rg, buf); - gfs2_rgrp_print(&rg); + if (gfs1) { + struct gfs1_rgrp rg1; + + gfs1_rgrp_in(&rg1, buf); + gfs1_rgrp_print(&rg1); + } else { + gfs2_rgrp_in(&rg, buf); + gfs2_rgrp_print(&rg); + } break; case GFS2_METATYPE_RB: