@@ -2063,3 +2063,9 @@ _require_xfs_scratch_metadir()
_scratch_unmount
fi
}
+
+# Extract a statfs attribute of the given mounted XFS filesystem.
+_xfs_statfs_field()
+{
+ $XFS_IO_PROG -c 'statfs' "$1" | grep -E "$2" | cut -d ' ' -f 3
+}
@@ -49,7 +49,7 @@ fi
_scratch_mount
_xfs_force_bdev data $SCRATCH_MNT
-old_dblocks=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | grep geom.datablocks)
+old_dblocks=$(_xfs_statfs_field "$SCRATCH_MNT" geom.datablocks)
mkdir $SCRATCH_MNT/save/
sino=$(stat -c '%i' $SCRATCH_MNT/save)
@@ -172,7 +172,7 @@ for ((ino = target_ino; ino >= icluster_ino; ino--)); do
res=$?
# Make sure shrink did not work
- new_dblocks=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | grep geom.datablocks)
+ new_dblocks=$(_xfs_statfs_field "$SCRATCH_MNT" geom.datablocks)
if [ "$new_dblocks" != "$old_dblocks" ]; then
echo "should not have shrank $old_dblocks -> $new_dblocks"
break
@@ -79,8 +79,8 @@ _xfs_force_bdev realtime $SCRATCH_MNT
# Set the extent size hint larger than the realtime extent size. This is
# necessary to exercise the minlen constraints on the realtime allocator.
-fsbsize=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | grep geom.bsize | awk '{print $3}')
-rtextsize_blks=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | grep geom.rtextsize | awk '{print $3}')
+fsbsize=$(_xfs_statfs_field "$SCRATCH_MNT" geom.bsize)
+rtextsize_blks=$(_xfs_statfs_field "$SCRATCH_MNT" geom.rtextsize)
extsize=$((2 * rtextsize_blks * fsbsize))
echo "rtextsize_blks=$rtextsize_blks extsize=$extsize" >> $seqres.full
@@ -136,7 +136,7 @@ rtextsize_bytes=$((fsbsize * rtextsize_blks))
$here/src/punch-alternating $SCRATCH_MNT/bigfile -o $((punch_off / rtextsize_bytes))
# Make sure we have some free rtextents.
-free_rtx=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | grep statfs.f_bavail | awk '{print $3}')
+free_rtx=$(_xfs_statfs_field "$SCRATCH_MNT" statfs.f_bavail)
if [ $free_rtx -eq 0 ]; then
echo "Expected fragmented free rt space, found none."
fi
@@ -83,13 +83,11 @@ test $grow_extszhint -eq 0 || \
echo "expected post-grow extszhint 0, got $grow_extszhint"
# Check that we now have rt extents.
-rtextents=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | \
- grep 'geom.rtextents' | cut -d ' ' -f 3)
+rtextents=$(_xfs_statfs_field "$SCRATCH_MNT" geom.rtextents)
test $rtextents -gt 0 || echo "expected rtextents > 0"
# Check the new rt extent size.
-after_rtextsz_blocks=$($XFS_IO_PROG -c 'statfs' $SCRATCH_MNT | \
- grep 'geom.rtextsize' | cut -d ' ' -f 3)
+after_rtextsz_blocks=$(_xfs_statfs_field "$SCRATCH_MNT" geom.rtextsize)
test $after_rtextsz_blocks -eq $new_rtextsz_blocks || \
echo "expected rtextsize $new_rtextsz_blocks, got $after_rtextsz_blocks"