fstests: add _require_mknod
[xfstests-dev.git] / tests / generic / 434
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2017 Netapp, Inc. All rights reserved.
4 #
5 # FS QA Test No. 434
6 #
7 # Tests vfs_copy_file_range() error checking
8 seq=`basename $0`
9 seqres=$RESULT_DIR/$seq
10 echo "QA output created by $seq"
11
12 here=`pwd`
13 tmp=/tmp/$$
14 status=1    # failure is the default!
15 trap "_cleanup; exit \$status" 0 1 2 3 15
16
17 _cleanup()
18 {
19         cd /
20         rm -rf $tmp.*
21 }
22
23 # get standard environment
24 . common/rc
25 . common/filter
26
27 # real QA test starts here
28 _supported_fs generic
29 _supported_os Linux
30
31 _require_xfs_io_command "copy_range"
32 _require_test
33 _require_mknod
34
35 testdir=$TEST_DIR/test-$seq
36 rm -rf $testdir
37 mkdir $testdir
38 rm -f $seqres.full
39
40 echo "Create the original files"
41 $XFS_IO_PROG -f -c 'pwrite -S 0x61 0 1000' $testdir/file >> $seqres.full 2>&1
42 mknod $testdir/dev1 c 1 3
43 mkfifo $testdir/fifo
44
45 echo "Try to copy when source pos > source size"
46 $XFS_IO_PROG -f -c "copy_range -s 1000 -l 100 $testdir/file" "$testdir/copy"
47 md5sum $testdir/copy | _filter_test_dir
48
49 echo "Try to copy to a read-only file"
50 rm -f $testdir/copy
51 $XFS_IO_PROG -r -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/copy"
52 md5sum $testdir/copy | _filter_test_dir
53
54 echo "Try to copy to an append-only file"
55 rm -f $testdir/copy
56 $XFS_IO_PROG -a -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/copy"
57 md5sum $testdir/copy | _filter_test_dir
58
59 echo "Try to copy to a device"
60 $XFS_IO_PROG -a -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/dev1"
61
62 echo "Try to copy to a fifo"
63 $XFS_IO_PROG -a -f -c "copy_range -s 0 -l 100 $testdir/file" "$testdir/fifo"
64
65 #success, all done
66 status=0
67 exit