[Cluster-devel] [PATCH 7/8] mkfs.gfs2: Set the rg_data0, rg_data and rg_bitbytes fields
Andrew Price
anprice at redhat.com
Thu Dec 7 11:53:38 UTC 2017
These fields are duplicated from the rindex entry associated with the
rgrp in order to reduce dependency on the rindex.
Signed-off-by: Andrew Price <anprice at redhat.com>
---
gfs2/libgfs2/rgrp.c | 6 +++++-
tests/mkfs.at | 16 ++++++++++++++++
tests/rgrifieldscheck.sh | 17 +++++++++++++++++
3 files changed, 38 insertions(+), 1 deletion(-)
create mode 100755 tests/rgrifieldscheck.sh
diff --git a/gfs2/libgfs2/rgrp.c b/gfs2/libgfs2/rgrp.c
index 4a2b1973..17178bd9 100644
--- a/gfs2/libgfs2/rgrp.c
+++ b/gfs2/libgfs2/rgrp.c
@@ -619,7 +619,11 @@ lgfs2_rgrp_t lgfs2_rgrps_append(lgfs2_rgrps_t rgs, struct gfs2_rindex *entry, ui
#ifdef GFS2_HAS_RG_SKIP
rg->rg.rg_skip = rg_skip;
#endif
-
+#ifdef GFS2_HAS_RG_RI_FIELDS
+ rg->rg.rg_data0 = rg->ri.ri_data0;
+ rg->rg.rg_data = rg->ri.ri_data;
+ rg->rg.rg_bitbytes = rg->ri.ri_bitbytes;
+#endif
compute_bitmaps(rg, rgs->sdp->bsize);
rg->rgrps = rgs;
return rg;
diff --git a/tests/mkfs.at b/tests/mkfs.at
index b90d55e2..be888171 100644
--- a/tests/mkfs.at
+++ b/tests/mkfs.at
@@ -139,3 +139,19 @@ AT_CHECK([rgskipcheck.sh $GFS_TGT], 0, [ignore], [ignore])
AT_CHECK([$GFS_MKFS -p lock_nolock -o test_topology=0:512:65536:393216:512 $GFS_TGT], 0, [ignore], [ignore])
AT_CHECK([rgskipcheck.sh $GFS_TGT], 0, [ignore], [ignore])
AT_CLEANUP
+
+AT_SETUP([Values of rg_data0, rg_data, rg_bitbytes])
+AT_KEYWORDS(mkfs.gfs2 mkfs)
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 2048 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 1024 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 512 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 219 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 32 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -o test_topology=0:512:65536:393216:512 $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([rgrifieldscheck.sh $GFS_TGT], 0, [ignore], [ignore])
+AT_CLEANUP
diff --git a/tests/rgrifieldscheck.sh b/tests/rgrifieldscheck.sh
new file mode 100755
index 00000000..c99470a9
--- /dev/null
+++ b/tests/rgrifieldscheck.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+dev=$1
+i=0
+gfs2_edit -p rindex $dev | while read field rival unused
+do
+ test $field = ri_data0 -o $field = ri_data -o $field = ri_bitbytes || continue
+ rgfield=$(echo $field | sed 's/ri/rg/')
+ rgval=$(gfs2_edit -p rg $i $dev | grep " $rgfield " | awk '{print $2}')
+
+ if test "$rival" != "$rgval"
+ then
+ echo "Bad $rgfield in rg $i: $rgval (expected: $rival)" >&2
+ exit 1
+ fi
+
+ test $field = ri_bitbytes && let i++
+done
--
2.13.6
More information about the Cluster-devel
mailing list