From: Filipe Manana Date: Fri, 12 Jul 2024 09:54:24 +0000 (+0100) Subject: btrfs: fix _require_btrfs_send_version to detect btrfs-progs support X-Git-Tag: v2024.07.14~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ef59ba956bf85b845dbc4ece9cf2406156391c53;p=xfstests-dev.git btrfs: fix _require_btrfs_send_version to detect btrfs-progs support Commit 199d0a992536df3702a0c4843d2a449d54f399c2 ("common/btrfs: introduce _require_btrfs_send_version") turned _require_btrfs_send_v2 into a generic helper to detect support for any send stream version, however it's only working for detecting kernel support, it misses detecting the support from btrfs-progs - it always checks only that it supports v2 (the send command supports the --compressed-data option). Fix that by verifying that btrfs-progs supports the requested version. Reviewed-by: Qu Wenruo Signed-off-by: Filipe Manana Reviewed-by: Anand Jain Signed-off-by: Anand Jain --- diff --git a/common/btrfs b/common/btrfs index be5948db..c0be7c08 100644 --- a/common/btrfs +++ b/common/btrfs @@ -777,17 +777,29 @@ _require_btrfs_corrupt_block() _require_btrfs_send_version() { local version=$1 + local ret - # Check first if btrfs-progs supports the v2 stream. - _require_btrfs_command send --compressed-data - - # Now check the kernel support. If send_stream_version does not exists, + # Check the kernel support. If send_stream_version does not exists, # then it's a kernel that only supports v1. [ -f /sys/fs/btrfs/features/send_stream_version ] || \ _notrun "kernel does not support send stream $version" [ $(cat /sys/fs/btrfs/features/send_stream_version) -ge $version ] || \ _notrun "kernel does not support send stream $version" + + # Now check that btrfs-progs supports the requested stream version. + _scratch_mkfs &> /dev/null || \ + _fail "mkfs failed at _require_btrfs_send_version" + _scratch_mount + $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap &> /dev/null + $BTRFS_UTIL_PROG send --proto $version $SCRATCH_MNT/snap &> /dev/null + ret=$? + _scratch_unmount + + if [ $ret -ne 0 ]; then + _notrun "btrfs-progs does not support send stream version $version" + fi } # Get the bytenr associated to a file extent item at a given file offset.