| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # |
| # --rotate_auto_buf: COMMIT must unregister old auto_buf index before store. |
| |
| . "$(cd "$(dirname "$0")" && pwd)"/test_common.sh |
| |
| ERR_CODE=0 |
| |
| if ! _have_feature "BATCH_IO" || ! _have_feature "AUTO_BUF_REG"; then |
| exit "$UBLK_SKIP_CODE" |
| fi |
| if ! _have_program fio || ! _have_program timeout; then |
| exit "$UBLK_SKIP_CODE" |
| fi |
| |
| _prep_test "generic" "batch auto_buf unregister with rotating index" |
| |
| _create_backfile 0 64M |
| |
| dev_id=$(_add_ublk_dev_no_settle -t loop -q 1 --nthreads 1 -b --auto_zc \ |
| --rotate_auto_buf "${UBLK_BACKFILES[0]}") |
| _check_add_dev $TID $? |
| |
| for ((i = 0; i < 50; i++)); do |
| [ -b /dev/ublkb"${dev_id}" ] && break |
| sleep 0.1 |
| done |
| [ -b /dev/ublkb"${dev_id}" ] || { _cleanup_test; _show_result $TID 1; } |
| |
| timeout -k 2 5 fio --name=job1 --filename=/dev/ublkb"${dev_id}" \ |
| --ioengine=libaio --rw=write --direct=1 --bs=4k --iodepth=1 --size=64k \ |
| > /dev/null 2>&1 |
| ERR_CODE=$? |
| |
| if [ "$ERR_CODE" -ne 0 ]; then |
| kill -9 "$(_get_ublk_daemon_pid "$dev_id" 2>/dev/null)" 2>/dev/null || true |
| sleep 0.5 |
| pkill -9 fio 2>/dev/null || true |
| ERR_CODE=1 |
| fi |
| |
| _cleanup_test |
| _show_result $TID $ERR_CODE |