From ffc8893a6687ec0490fd178c6b756ddec364ec24 Mon Sep 17 00:00:00 2001 From: Anand Jain Date: Fri, 4 Jun 2021 14:25:47 +0800 Subject: [PATCH] btrfs/029: fix the test compatible with older cp(1) cp(1) versions 8.30 and 8.32 are compared with its --reflink=always option and they have different semantic if the target-file (with zero sizes) must be created when the cp --reflink=alaways fails with a cross-device link error. As shown below. $ cp --version | head -1 cp (GNU coreutils) 8.30 $ cp --reflink=always /mnt/scratch/original /mnt/test/test-029/copy cp: failed to clone '/mnt/test/test-029/copy' from '/mnt/scratch/original': Invalid cross-device link $ ls -l /mnt/test/test-029/copy ls: cannot access '/mnt/test/test-029/copy': No such file or directory $ cp --version | head -1 cp (GNU coreutils) 8.32 $ cp --reflink=always /mnt/scratch/original /mnt/test/test-029/copy; cp: failed to clone '/mnt/test/test-029/copy' from '/mnt/scratch/original': Invalid cross-device link $ ls -l /mnt/test/test-029/copy -rw------- 1 root root 0 Jun 4 13:29 /mnt/test/test-029/copy Reported-by: Wang Yugui Signed-off-by: Anand Jain Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- tests/btrfs/029 | 6 ++++-- tests/btrfs/029.out | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/btrfs/029 b/tests/btrfs/029 index bbbb7970..0234a7f0 100755 --- a/tests/btrfs/029 +++ b/tests/btrfs/029 @@ -65,8 +65,10 @@ _create_reflinks() echo "reflink=always:" cp --reflink=always $1 $2 >> $seqres.full 2>&1 || echo "cp reflink failed" - # The failed target actually gets created by cp: - ls $2 | _filter_testdir_and_scratch + # The failed target gets created with zero sizes by cp(1) version 8.32. But + # in older cp(1) version 8.30 target file is not created when the + # cp --reflink=always fails. + ls $2 >> $seqres.full 2>&1 } echo "test reflinks across different devices" diff --git a/tests/btrfs/029.out b/tests/btrfs/029.out index 0547d280..f1c88780 100644 --- a/tests/btrfs/029.out +++ b/tests/btrfs/029.out @@ -5,11 +5,9 @@ reflink=auto: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/test-029/copy reflink=always: cp reflink failed -TEST_DIR/test-029/copy test reflinks across different mountpoints of same device reflink=auto: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/original 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/test-029/copy reflink=always: cp reflink failed -TEST_DIR/test-029/copy -- 2.30.2