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 <[email protected]> --- 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
