On Mon, Dec 03, 2018 at 05:42:55PM +1100, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > As per the copy_file_range() man page: > > EINVAL > Requested range extends beyond the end of the source file; > ..... > > These tests actually attempt to copy beyond the end of the source > file and so should fail with EINVAL. The kernel does not check this > and so needs fixing. These operations should fail, so fix the tests. > > Also move the tests to the copy_range group so they are distinct > from the copy group which refers to xfs_copy tests. > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Looks ok; sorry I didn't notice this on the original patch. Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > tests/generic/430 | 5 +---- > tests/generic/430.out | 6 ++---- > tests/generic/431 | 1 + > tests/generic/431.out | 1 + > tests/generic/434 | 5 +++-- > tests/generic/434.out | 4 ++-- > tests/generic/group | 10 +++++----- > 7 files changed, 15 insertions(+), 17 deletions(-) > > diff --git a/tests/generic/430 b/tests/generic/430 > index 1b11f60df059..ab15ce0e37d4 100755 > --- a/tests/generic/430 > +++ b/tests/generic/430 > @@ -70,11 +70,8 @@ cmp -n 1000 $testdir/file $testdir/end 4000 > echo "md5sums after copying end:" > md5sum $testdir/{file,end} | _filter_test_dir > > -echo "Copy beyond end of original file" > +echo "Copy beyond end of original file - should fail" > $XFS_IO_PROG -f -c "copy_range -s 4000 -l 2000 $testdir/file" "$testdir/beyond" > -cmp -n 1000 $testdir/file $testdir/beyond 4000 > -echo "md5sums after copying beyond:" > -md5sum $testdir/{file,beyond} | _filter_test_dir > > echo "Copy creates hole in target file" > $XFS_IO_PROG -f -c "copy_range -s 1000 -l 3000 -d 1000 $testdir/file" "$testdir/hole" > diff --git a/tests/generic/430.out b/tests/generic/430.out > index 4b4ca75d5980..8dd7870658cb 100644 > --- a/tests/generic/430.out > +++ b/tests/generic/430.out > @@ -15,10 +15,8 @@ Copy end of original file > md5sums after copying end: > e11fbace556cba26bf0076e74cab90a3 TEST_DIR/test-430/file > e68d4a150c4e42f4f9ea3ffe4c9cf4ed TEST_DIR/test-430/end > -Copy beyond end of original file > -md5sums after copying beyond: > -e11fbace556cba26bf0076e74cab90a3 TEST_DIR/test-430/file > -e68d4a150c4e42f4f9ea3ffe4c9cf4ed TEST_DIR/test-430/beyond > +Copy beyond end of original file - should fail > +copy_range: Invalid argument > Copy creates hole in target file > md5sums after creating hole: > e11fbace556cba26bf0076e74cab90a3 TEST_DIR/test-430/file > diff --git a/tests/generic/431 b/tests/generic/431 > index f04ae2152bae..273068c78d40 100755 > --- a/tests/generic/431 > +++ b/tests/generic/431 > @@ -52,6 +52,7 @@ $XFS_IO_PROG -f -c "copy_range -s 2 -l 1 $testdir/file" "$testdir/c" > $XFS_IO_PROG -f -c "copy_range -s 3 -l 1 $testdir/file" "$testdir/d" > $XFS_IO_PROG -f -c "copy_range -s 4 -l 1 $testdir/file" "$testdir/e" > $XFS_IO_PROG -f -c "copy_range -s 4 -l 1 -d 1 $testdir/file" "$testdir/f" > +# this should fail with EINVAL and leave an empty file behind. > $XFS_IO_PROG -f -c "copy_range -s 5 -l 1 $testdir/file" "$testdir/g" > echo -n "a" | cmp $testdir/a > echo -n "b" | cmp $testdir/b > diff --git a/tests/generic/431.out b/tests/generic/431.out > index 978c4a1b56fc..834a5db6f56f 100644 > --- a/tests/generic/431.out > +++ b/tests/generic/431.out > @@ -4,6 +4,7 @@ Original md5sums: > ab56b4d92b40713acc5af89985d4b786 TEST_DIR/test-431/file > ab56b4d92b40713acc5af89985d4b786 TEST_DIR/test-431/copy > Small copies from various points in the original file > +copy_range: Invalid argument > md5sums after small copies > ab56b4d92b40713acc5af89985d4b786 TEST_DIR/test-431/file > 0cc175b9c0f1b6a831c399e269772661 TEST_DIR/test-431/a > diff --git a/tests/generic/434 b/tests/generic/434 > index 032f933dff76..4bcaf9bac04b 100755 > --- a/tests/generic/434 > +++ b/tests/generic/434 > @@ -41,15 +41,16 @@ $XFS_IO_PROG -f -c 'pwrite -S 0x61 0 1000' $testdir/file >> $seqres.full 2>&1 > mknod $testdir/dev1 c 1 3 > mkfifo $testdir/fifo > > -echo "Try to copy when source pos > source size" > +echo "Try to copy when source pos > source size - should fail" > $XFS_IO_PROG -f -c "copy_range -s 1000 -l 100 $testdir/file" "$testdir/copy" > -md5sum $testdir/copy | _filter_test_dir > > echo "Try to copy to a read-only file" > +rm -f $testdir/copy > $XFS_IO_PROG -r -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/copy" > md5sum $testdir/copy | _filter_test_dir > > echo "Try to copy to an append-only file" > +rm -f $testdir/copy > $XFS_IO_PROG -a -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/copy" > md5sum $testdir/copy | _filter_test_dir > > diff --git a/tests/generic/434.out b/tests/generic/434.out > index 4532ebbaf864..3659592b949b 100644 > --- a/tests/generic/434.out > +++ b/tests/generic/434.out > @@ -1,7 +1,7 @@ > QA output created by 434 > Create the original files > -Try to copy when source pos > source size > -d41d8cd98f00b204e9800998ecf8427e TEST_DIR/test-434/copy > +Try to copy when source pos > source size - should fail > +copy_range: Invalid argument > Try to copy to a read-only file > copy_range: Bad file descriptor > d41d8cd98f00b204e9800998ecf8427e TEST_DIR/test-434/copy > diff --git a/tests/generic/group b/tests/generic/group > index 58318608e7a9..cc05792ba3b6 100644 > --- a/tests/generic/group > +++ b/tests/generic/group > @@ -432,11 +432,11 @@ > 427 auto quick aio rw > 428 auto quick dax > 429 auto encrypt > -430 auto quick copy > -431 auto quick copy > -432 auto quick copy > -433 auto quick copy > -434 auto quick copy > +430 auto quick copy_range > +431 auto quick copy_range > +432 auto quick copy_range > +433 auto quick copy_range > +434 auto quick copy_range > 435 auto encrypt > 436 auto quick rw > 437 auto quick dax > -- > 2.19.1 >