[Cluster-devel] [PATCH 2/2] libgfs2: fix compute_rgrp_layout

Carlos Maiolino cmaiolino at redhat.com
Fri Sep 2 20:42:48 UTC 2011


The function uses the same buggy trick as
gfs2_grow to calculate rgsize, which cause
a segmentation fault if there is only one
RG into the filesystem.
This patch makes compute_rgrp_layout() to
use figure_out_rgsize() function.

Signed-off-by: Carlos Maiolino <cmaiolino at redhat.com>
---
 gfs2/libgfs2/fs_geometry.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/gfs2/libgfs2/fs_geometry.c b/gfs2/libgfs2/fs_geometry.c
index 2b70f11..bdc8225 100644
--- a/gfs2/libgfs2/fs_geometry.c
+++ b/gfs2/libgfs2/fs_geometry.c
@@ -80,8 +80,8 @@ void compute_rgrp_layout(struct gfs2_sbd *sdp, struct osi_root *rgtree,
 	struct device *dev;
 	struct rgrp_tree *rl, *rlast = NULL, *rlast2 = NULL;
 	struct osi_node *n, *next = NULL;
-	unsigned int rgrp = 0, nrgrp;
-	uint64_t rglength, rgaddr;
+	unsigned int rgrp = 0, nrgrp, rglength;
+	uint64_t rgaddr;
 
 	sdp->new_rgrps = 0;
 	dev = &sdp->device;
@@ -113,7 +113,7 @@ void compute_rgrp_layout(struct gfs2_sbd *sdp, struct osi_root *rgtree,
 			rlast = rl;
 		}
 		rlast->start = rlast->ri.ri_addr;
-		rglength = rlast->ri.ri_addr - rlast2->ri.ri_addr;
+		rglength = figure_out_rgsize(sdp);
 		rlast->length = rglength;
 		old_length = rlast->ri.ri_addr + rglength;
 		new_chunk = dev->length - old_length;
-- 
1.7.6




More information about the Cluster-devel mailing list