gfs2-utils: master - fsck.gfs2: fsck.gfs2: Ask to reclaim unlinked meta per-rgrp only

Bob Peterson rpeterso at fedoraproject.org
Tue Aug 30 20:25:39 UTC 2011


Gitweb:        http://git.fedorahosted.org/git/gfs2-utils.git?p=gfs2-utils.git;a=commitdiff;h=72da15f9d14524957bd731722cd59201d502b24a
Commit:        72da15f9d14524957bd731722cd59201d502b24a
Parent:        1e178e7efd900508bd82e72f584b5acf83691b66
Author:        Bob Peterson <rpeterso at redhat.com>
AuthorDate:    Mon Aug 8 15:16:01 2011 -0500
Committer:     Bob Peterson <rpeterso at redhat.com>
CommitterDate: Mon Aug 29 12:53:02 2011 -0500

fsck.gfs2: fsck.gfs2: Ask to reclaim unlinked meta per-rgrp only

Before this patch, fsck.gfs2 would ask for every unlinked metadata bit
whether you wanted to reclaim it as free space.  This patch makes it
ask only once per resource group, and reports which resource group
so that the user doesn't think it's stuck in an infinite loop.

rhbz#675723
---
 gfs2/fsck/initialize.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/gfs2/fsck/initialize.c b/gfs2/fsck/initialize.c
index 18d13cc..c0e83a7 100644
--- a/gfs2/fsck/initialize.c
+++ b/gfs2/fsck/initialize.c
@@ -195,7 +195,7 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct rgrp_list *rgd,
 				 int *this_rg_bad)
 {
 	uint32_t rg_free, rg_reclaimed;
-	int rgb, x, y, off, bytes_to_check, total_bytes_to_check;
+	int rgb, x, y, off, bytes_to_check, total_bytes_to_check, asked = 0;
 	unsigned int state;
 
 	rg_free = rg_reclaimed = 0;
@@ -234,9 +234,17 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct rgrp_list *rgd,
 				}
 				/* GFS2_BLKST_UNLINKED */
 				*this_rg_bad = 1;
-				if (!(*fixit)) {
-					if (query(_("Okay to reclaim unlinked "
-						    "inodes? (y/n)")))
+				if (!asked) {
+					char msg[256];
+
+					asked = 1;
+					sprintf(msg,
+						_("Okay to reclaim unlinked "
+						  "inodes in resource group "
+						  "%lld (0x%llx)? (y/n)"),
+						(unsigned long long)rgd->ri.ri_addr,
+						(unsigned long long)rgd->ri.ri_addr);
+					if (query("%s", msg))
 						*fixit = 1;
 				}
 				if (!(*fixit))


More information about the cluster-commits mailing list