gfs2-utils: RHEL7 - libgfs2: Remove exit call from build_rgrps

Andrew Price andyp at fedoraproject.org
Mon Sep 8 17:32:42 UTC 2014


Gitweb:        http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=3d2d0dd68f17d00f4c2cc9d27f95ca0ae75ae22d
Commit:        3d2d0dd68f17d00f4c2cc9d27f95ca0ae75ae22d
Parent:        81226a0bb89b5b926dd47481c2314202783812c0
Author:        Andrew Price <anprice at redhat.com>
AuthorDate:    Mon Jan 27 14:11:40 2014 +0000
Committer:     Andrew Price <anprice at redhat.com>
CommitterDate: Thu Jul 24 16:56:22 2014 +0100

libgfs2: Remove exit call from build_rgrps

Change build_rgrps to return an error value instead of void and push the
exit call down into fsck.gfs2 and gfs2_grow.

Signed-off-by: Andrew Price <anprice at redhat.com>
---
 gfs2/fsck/rgrepair.c       |    5 ++++-
 gfs2/libgfs2/fs_geometry.c |   10 ++++------
 gfs2/libgfs2/libgfs2.h     |    2 +-
 gfs2/mkfs/main_grow.c      |    5 ++++-
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c
index 1ebdc70..2c1d613 100644
--- a/gfs2/fsck/rgrepair.c
+++ b/gfs2/fsck/rgrepair.c
@@ -654,7 +654,10 @@ static int gfs2_rindex_calculate(struct gfs2_sbd *sdp, int *num_rgs)
 	/* Compute the default resource group layout as mkfs would have done */
 	compute_rgrp_layout(sdp, &sdp->rgcalc, TRUE);
 	debug_print_rgrps(sdp, &sdp->rgcalc);
-	build_rgrps(sdp, FALSE); /* FALSE = calc but don't write to disk. */
+	if (build_rgrps(sdp, FALSE)) { /* FALSE = calc but don't write to disk. */
+		fprintf(stderr, _("Failed to build resource groups\n"));
+		exit(-1);
+	}
 	log_debug( _("fs_total_size = 0x%llx blocks.\n"),
 		  (unsigned long long)sdp->device.length);
 	log_warn( _("L3: number of rgs in the index = %d.\n"), *num_rgs);
diff --git a/gfs2/libgfs2/fs_geometry.c b/gfs2/libgfs2/fs_geometry.c
index 932a2e6..4bdb64a 100644
--- a/gfs2/libgfs2/fs_geometry.c
+++ b/gfs2/libgfs2/fs_geometry.c
@@ -171,7 +171,7 @@ uint32_t rgblocks2bitblocks(const unsigned int bsize, const uint32_t rgblocks, u
  * If fd > 0, write the data to the given file handle.
  * Otherwise, use gfs2 buffering in buf.c.
  */
-void build_rgrps(struct gfs2_sbd *sdp, int do_write)
+int build_rgrps(struct gfs2_sbd *sdp, int do_write)
 {
 	struct osi_node *n, *next = NULL;
 	struct rgrp_tree *rl;
@@ -207,11 +207,8 @@ void build_rgrps(struct gfs2_sbd *sdp, int do_write)
 		rl->rg.rg_header.mh_format = GFS2_FORMAT_RG;
 		rl->rg.rg_free = rgblocks;
 
-		if (gfs2_compute_bitstructs(sdp->sd_sb.sb_bsize, rl)) {
-			fprintf(stderr, "%s: Unable to build resource groups "
-				"with these characteristics.\n", __FUNCTION__);
-			exit(-1);
-		}
+		if (gfs2_compute_bitstructs(sdp->sd_sb.sb_bsize, rl))
+			return -1;
 
 		if (do_write) {
 			for (x = 0; x < bitblocks; x++) {
@@ -231,4 +228,5 @@ void build_rgrps(struct gfs2_sbd *sdp, int do_write)
 		sdp->blks_total += rgblocks;
 		sdp->fssize = ri->ri_data0 + ri->ri_data;
 	}
+	return 0;
 }
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index d044bc6..6372128 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -431,7 +431,7 @@ extern uint64_t how_many_rgrps(struct gfs2_sbd *sdp, struct device *dev,
 			       int rgsize_specified);
 extern void compute_rgrp_layout(struct gfs2_sbd *sdp, struct osi_root *rgtree,
 				int rgsize_specified);
-extern void build_rgrps(struct gfs2_sbd *sdp, int write);
+extern int build_rgrps(struct gfs2_sbd *sdp, int write);
 
 /* fs_ops.c */
 #define IS_LEAF     (1)
diff --git a/gfs2/mkfs/main_grow.c b/gfs2/mkfs/main_grow.c
index 541b0f2..718bb30 100644
--- a/gfs2/mkfs/main_grow.c
+++ b/gfs2/mkfs/main_grow.c
@@ -181,7 +181,10 @@ static void initialize_new_portion(struct gfs2_sbd *sdp, int *old_rg_count)
 	discard_blocks(sdp->device_fd, rl->start * sdp->bsize,
 		       (sdp->device.length - rl->start) * sdp->bsize);
 	/* Build the remaining resource groups */
-	build_rgrps(sdp, !test);
+	if (build_rgrps(sdp, !test)) {
+		fprintf(stderr, _("Failed to build resource groups\n"));
+		exit(-1);
+	}
 
 	inode_put(&sdp->md.riinode);
 	inode_put(&sdp->master_dir);


More information about the cluster-commits mailing list