From: Gao Xiang Date: Tue, 11 May 2021 23:32:26 +0000 (+0800) Subject: common/xfs: add _require_scratch_xfs_shrink helper X-Git-Tag: v2022.05.01~408 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=8a44508c507a2a04ea84f34b09e34aa45de20b56 common/xfs: add _require_scratch_xfs_shrink helper In order to detect whether the current kernel supports XFS shrinking. Reviewed-by: Darrick J. Wong Signed-off-by: Gao Xiang Signed-off-by: Eryu Guan --- diff --git a/common/xfs b/common/xfs index 5cd7b35c..0ec5b03c 100644 --- a/common/xfs +++ b/common/xfs @@ -786,6 +786,26 @@ _require_xfs_mkfs_without_validation() fi } +_require_scratch_xfs_shrink() +{ + _require_scratch + _require_command "$XFS_GROWFS_PROG" xfs_growfs + + _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs >/dev/null + . $tmp.mkfs + _scratch_mount + # here just to check if kernel supports, no need do more extra work + local errmsg=$($XFS_GROWFS_PROG -D$((dblocks-1)) "$SCRATCH_MNT" 2>&1) + if [ "$?" -ne 0 ]; then + echo "$errmsg" | grep 'XFS_IOC_FSGROWFSDATA xfsctl failed: Invalid argument' > /dev/null && \ + _notrun "kernel does not support shrinking" + echo "$errmsg" | grep 'data size .* too small, old size is ' > /dev/null && \ + _notrun "xfsprogs does not support shrinking" + _fail "$XFS_GROWFS_PROG failed unexpectedly: $errmsg" + fi + _scratch_unmount +} + # XFS ability to change UUIDs on V5/CRC filesystems # _require_meta_uuid()