]> git.ipfire.org Git - thirdparty/util-linux.git/blob - tests/ts/blkdiscard/offsets
288841199ae4225b326f7dd7e12a7961a0215b11
[thirdparty/util-linux.git] / tests / ts / blkdiscard / offsets
1 #!/bin/bash
2
3 #
4 # Copyright (C) 2014 Federico Simoncelli <fsimonce@redhat.com>
5 #
6 # This file is part of util-linux.
7 #
8 # This file is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
12 #
13 # This file is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 TS_TOPDIR="${0%/*}/../.."
19 TS_DESC="offsets"
20
21 . $TS_TOPDIR/functions.sh
22 ts_init "$*"
23
24 ts_check_test_command "$TS_CMD_BLKDISCARD"
25
26 ts_skip_nonroot
27 ts_check_losetup
28
29 ORIGPWD=$(pwd)
30 IMAGE_NAME="${TS_TESTNAME}-loop.img"
31 IMAGE_PATH="$TS_OUTDIR/$IMAGE_NAME"
32
33 truncate -s 10M $IMAGE_PATH
34
35 ts_log "create loop device from image"
36 DEVICE=$($TS_CMD_LOSETUP --show -f $IMAGE_PATH)
37 ts_register_loop_device "$DEVICE"
38
39 function run_tscmd {
40 local ret
41 "$@" >> $TS_OUTPUT 2>&1
42 ret=$?
43 echo "ret: $ret" >> "$TS_OUTPUT"
44 return $ret
45 }
46
47 ts_log "testing offsets with full block size"
48 run_tscmd $TS_CMD_BLKDISCARD -v $DEVICE
49 if [ "$?" != "0" ]; then
50 # Skip the rest? For example loop backing files on NFS seem unsupported.
51 grep -q "BLKDISCARD ioctl failed: Operation not supported" "$TS_OUTPUT" \
52 && ts_skip "BLKDISCARD not supported"
53 fi
54 run_tscmd $TS_CMD_BLKDISCARD -v -o 1 $DEVICE
55 run_tscmd $TS_CMD_BLKDISCARD -v -o 511 $DEVICE
56 run_tscmd $TS_CMD_BLKDISCARD -v -o 512 $DEVICE
57 run_tscmd $TS_CMD_BLKDISCARD -v -o 1024 $DEVICE
58
59 ts_log "testing offsets with specific length"
60 run_tscmd $TS_CMD_BLKDISCARD -v -l 5242880 $DEVICE
61 run_tscmd $TS_CMD_BLKDISCARD -v -l 5242881 $DEVICE
62 run_tscmd $TS_CMD_BLKDISCARD -v -l 5243391 $DEVICE
63 run_tscmd $TS_CMD_BLKDISCARD -v -o 1 -l 5242880 $DEVICE
64 run_tscmd $TS_CMD_BLKDISCARD -v -o 511 -l 5242880 $DEVICE
65 run_tscmd $TS_CMD_BLKDISCARD -v -o 512 -l 5242880 $DEVICE
66 run_tscmd $TS_CMD_BLKDISCARD -v -o 1024 -l 5242880 $DEVICE
67
68 ts_log "testing aligned steps full device"
69 run_tscmd $TS_CMD_BLKDISCARD -v -p 5242880 $DEVICE
70 run_tscmd $TS_CMD_BLKDISCARD -v -p 1310720 $DEVICE
71
72 ts_log "testing aligned steps with offsets and length"
73 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -l 1024 $DEVICE
74 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -o 1 -l 1024 $DEVICE
75 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -o 1 -l 1536 $DEVICE
76 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -o 511 -l 1536 $DEVICE
77 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -o 512 -l 1536 $DEVICE
78 run_tscmd $TS_CMD_BLKDISCARD -v -p 512 -o 1024 -l 1024 $DEVICE
79
80 ts_log "testing misaligned steps full device"
81 run_tscmd $TS_CMD_BLKDISCARD -v -p 1 $DEVICE
82 run_tscmd $TS_CMD_BLKDISCARD -v -p 256 $DEVICE
83 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 $DEVICE
84 run_tscmd $TS_CMD_BLKDISCARD -v -p 513 $DEVICE
85 run_tscmd $TS_CMD_BLKDISCARD -v -p 768 $DEVICE
86
87 ts_log "testing misaligned steps with offsets and length"
88 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -l 1024 $DEVICE
89 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -o 1 -l 1536 $DEVICE
90 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -o 511 -l 1536 $DEVICE
91 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -l 10240 $DEVICE
92 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -o 1 -l 10240 $DEVICE
93 run_tscmd $TS_CMD_BLKDISCARD -v -p 511 -o 511 -l 10240 $DEVICE
94
95 sed -i "s#$DEVICE:\s##" $TS_OUTPUT
96
97 ts_log "detach loop device from image"
98
99 ts_cd "$ORIGPWD"
100
101 ts_finalize