2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2016 Oracle, Inc. All Rights Reserved.
7 # Test the unsupported fallocate flags on a block device. No collapse
8 # or insert range, no regular fallocate, no forgetting keep-space on
9 # zero range, no punching past EOD, no requests that aren't aligned
10 # with the logicalsector size, and make sure the fallbacks work for
11 # devices that don't support write_same or discard.
14 seqres=$RESULT_DIR/$seq
15 echo "QA output created by $seq"
19 status=1 # failure is the default!
20 trap "_cleanup; exit \$status" 0 1 2 3 7 15
28 # get standard environment, filters and checks
33 # real QA test starts here
35 _require_xfs_io_command "falloc"
36 _require_xfs_io_command "finsert"
37 _require_xfs_io_command "fcollapse"
38 _require_xfs_io_command "fzero"
39 _require_xfs_io_command "fpunch"
42 echo "Create and format"
43 dev=$(_get_scsi_debug_dev 4096 4096 0 4 "lbpws=1 lbpws10=1")
44 _pwrite_byte 0x62 0 4m $dev >> $seqres.full
45 $XFS_IO_PROG -c "fsync" $dev
47 echo "Regular fallocate"
48 $XFS_IO_PROG -c "falloc 64k 64k" $dev
51 $XFS_IO_PROG -c "finsert 128k 64k" $dev
54 $XFS_IO_PROG -c "fcollapse 256k 64k" $dev
56 echo "Unaligned zero range"
57 $XFS_IO_PROG -c "fzero -k 512 512" $dev
59 echo "Unaligned punch"
60 $XFS_IO_PROG -c "fpunch 512 512" $dev
62 echo "Zero range past MAX_LFS_FILESIZE keep size"
63 # zod = MAX_LFS_FILESIZE
64 zod=$(_get_max_lfs_filesize)
65 $XFS_IO_PROG -c "fzero -k 512k $zod" $dev
67 echo "Zero range past MAX_LFS_FILESIZE"
68 $XFS_IO_PROG -c "fzero 512k $zod" $dev
70 echo "Zero range to MAX_LFS_FILESIZE fail w/o keepsize"
71 $XFS_IO_PROG -c "fzero 0 $zod" $dev
73 echo "Zero range starts past EOD"
74 $XFS_IO_PROG -c "fzero -k 900m 1m" $dev
76 echo "Punch starts past EOD"
77 $XFS_IO_PROG -c "fpunch 900m 1m" $dev
80 md5sum $dev | sed -e "s|$dev|SCSI_DEBUG_DEV|g"
85 echo "Create w/o unmap or writesame and format"
86 dev=$(_get_scsi_debug_dev 512 512 0 4 "lbpws=0 lbpws10=0 lbpu=0 write_same_length=0 unmap_max_blocks=0")
87 _pwrite_byte 0x62 0 4m $dev >> $seqres.full
88 $XFS_IO_PROG -c "fsync" $dev
90 echo "Zero punch, no fallback available"
91 $XFS_IO_PROG -c "fpunch 512k 512k" $dev
93 echo "Zero range, write fallback"
94 $XFS_IO_PROG -c "fzero -k 1536k 512k" $dev
97 md5sum $dev | sed -e "s|$dev|SCSI_DEBUG_DEV|g"