]> www.infradead.org Git - users/hch/blktests.git/commitdiff
zbd/007: Add --force option to blkzone reset
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Mon, 8 Jun 2020 02:44:58 +0000 (11:44 +0900)
committerOmar Sandoval <osandov@fb.com>
Mon, 15 Jun 2020 23:11:53 +0000 (16:11 -0700)
The test case zbd/007 utilizes blkzone command from util-linux project
to reset zones of test target devices. Recently, blkzone was modified to
report EBUSY error when it was called to change zone status of devices
used by the system. This avoids unintended zone status change by mistake
and good for most of use cases.

However this change triggered failure of the test case zbd/007 with the
EBUSY error. The test case executes blkzone to reset zones of block devices
which the system maps to container devices such as dm-linear.

To avoid this failure, modify zbd/007 to check if blkzone supports --force
option. And if it is supported, add it to blkzone command line. This option
was introduced to blkzone to allow zone status change of devices even when
the system use them.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
tests/zbd/007

index 2376b3aedaa05749e30144f1e2e6f65a273138af..9d7ca677244ab4544d85f8adad9f4c1b3dd6f1e4 100755 (executable)
@@ -68,7 +68,7 @@ test_device() {
 
        # Reset and move write pointers of the container device
        for ((i=0; i < ${#test_z[@]}; i++)); do
-               local -a arr
+               local -a arr opts
 
                read -r -a arr < <(_get_dev_container_and_sector \
                                           "${test_z_start[i]}")
@@ -77,8 +77,11 @@ test_device() {
 
                echo "${container_dev}" "${container_start}" >> "$FULL"
 
-               if ! blkzone reset -o "${container_start}" -c 1 \
-                    "${container_dev}"; then
+               opts=(-o "${container_start}" -c 1)
+               if blkzone -h | grep -q -e --force; then
+                       opts+=(--force)
+               fi
+               if ! blkzone reset "${opts[@]}" "${container_dev}"; then
                        echo "Reset zone failed"
                        return 1
                fi