Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: ublk: cleanup backfile automatically

Use global array of $UBLK_BACKFILES for storing all backfile name, then
clean them automatically.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250412023035.2649275-4-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Ming Lei and committed by
Jens Axboe
8d31a7e5 9cad26d6

+70 -89
+24 -12
tools/testing/selftests/ublk/test_common.sh
··· 30 30 } 31 31 32 32 _create_backfile() { 33 - local my_size=$1 34 - local my_file 33 + local index=$1 34 + local new_size=$2 35 + local old_file 36 + local new_file 35 37 36 - my_file=$(mktemp ublk_file_"${my_size}"_XXXXX) 37 - truncate -s "${my_size}" "${my_file}" 38 - echo "$my_file" 38 + old_file="${UBLK_BACKFILES[$index]}" 39 + [ -f "$old_file" ] && rm -f "$old_file" 40 + 41 + new_file=$(mktemp ublk_file_"${new_size}"_XXXXX) 42 + truncate -s "${new_size}" "${new_file}" 43 + UBLK_BACKFILES["$index"]="$new_file" 39 44 } 40 45 41 - _remove_backfile() { 42 - local file=$1 46 + _remove_files() { 47 + local file 43 48 44 - [ -f "$file" ] && rm -f "$file" 49 + for file in "${UBLK_BACKFILES[@]}"; do 50 + [ -f "$file" ] && rm -f "$file" 51 + done 52 + [ -f "$UBLK_TMP" ] && rm -f "$UBLK_TMP" 45 53 } 46 54 47 55 _create_tmp_dir() { ··· 137 129 echo "$1 : [FAIL]" 138 130 fi 139 131 fi 140 - [ "$2" -ne 0 ] && exit "$2" 132 + if [ "$2" -ne 0 ]; then 133 + _remove_files 134 + exit "$2" 135 + fi 141 136 return 0 142 137 } 143 138 ··· 149 138 { 150 139 local tid=$1 151 140 local code=$2 152 - shift 2 141 + 153 142 if [ "${code}" -ne 0 ]; then 154 - _remove_test_files "$@" 155 143 _show_result "${tid}" "${code}" 156 144 fi 157 145 } 158 146 159 147 _cleanup_test() { 160 148 "${UBLK_PROG}" del -a 161 - rm -f "$UBLK_TMP" 149 + 150 + _remove_files 162 151 } 163 152 164 153 _have_feature() ··· 258 247 UBLK_PROG=$(_ublk_test_top_dir)/kublk 259 248 UBLK_TEST_QUIET=1 260 249 UBLK_TEST_SHOW_RESULT=1 250 + UBLK_BACKFILES=() 261 251 export UBLK_PROG 262 252 export UBLK_TEST_QUIET 263 253 export UBLK_TEST_SHOW_RESULT
+3 -5
tools/testing/selftests/ublk/test_loop_01.sh
··· 12 12 13 13 _prep_test "loop" "write and verify test" 14 14 15 - backfile_0=$(_create_backfile 256M) 15 + _create_backfile 0 256M 16 16 17 - dev_id=$(_add_ublk_dev -t loop "$backfile_0") 18 - _check_add_dev $TID $? "${backfile_0}" 17 + dev_id=$(_add_ublk_dev -t loop "${UBLK_BACKFILES[0]}") 18 + _check_add_dev $TID $? 19 19 20 20 # run fio over the ublk disk 21 21 _run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=256M 22 22 ERR_CODE=$? 23 23 24 24 _cleanup_test "loop" 25 - 26 - _remove_backfile "$backfile_0" 27 25 28 26 _show_result $TID $ERR_CODE
+3 -5
tools/testing/selftests/ublk/test_loop_02.sh
··· 8 8 9 9 _prep_test "loop" "mkfs & mount & umount" 10 10 11 - backfile_0=$(_create_backfile 256M) 12 - dev_id=$(_add_ublk_dev -t loop "$backfile_0") 13 - _check_add_dev $TID $? "$backfile_0" 11 + _create_backfile 0 256M 12 + dev_id=$(_add_ublk_dev -t loop "${UBLK_BACKFILES[0]}") 13 + _check_add_dev $TID $? 14 14 15 15 _mkfs_mount_test /dev/ublkb"${dev_id}" 16 16 ERR_CODE=$? 17 17 18 18 _cleanup_test "loop" 19 - 20 - _remove_backfile "$backfile_0" 21 19 22 20 _show_result $TID $ERR_CODE
+3 -5
tools/testing/selftests/ublk/test_loop_03.sh
··· 12 12 13 13 _prep_test "loop" "write and verify over zero copy" 14 14 15 - backfile_0=$(_create_backfile 256M) 16 - dev_id=$(_add_ublk_dev -t loop -z "$backfile_0") 17 - _check_add_dev $TID $? "$backfile_0" 15 + _create_backfile 0 256M 16 + dev_id=$(_add_ublk_dev -t loop -z "${UBLK_BACKFILES[0]}") 17 + _check_add_dev $TID $? 18 18 19 19 # run fio over the ublk disk 20 20 _run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=256M 21 21 ERR_CODE=$? 22 22 23 23 _cleanup_test "loop" 24 - 25 - _remove_backfile "$backfile_0" 26 24 27 25 _show_result $TID $ERR_CODE
+4 -5
tools/testing/selftests/ublk/test_loop_04.sh
··· 8 8 9 9 _prep_test "loop" "mkfs & mount & umount with zero copy" 10 10 11 - backfile_0=$(_create_backfile 256M) 12 - dev_id=$(_add_ublk_dev -t loop -z "$backfile_0") 13 - _check_add_dev $TID $? "$backfile_0" 11 + _create_backfile 0 256M 12 + 13 + dev_id=$(_add_ublk_dev -t loop -z "${UBLK_BACKFILES[0]}") 14 + _check_add_dev $TID $? 14 15 15 16 _mkfs_mount_test /dev/ublkb"${dev_id}" 16 17 ERR_CODE=$? 17 18 18 19 _cleanup_test "loop" 19 - 20 - _remove_backfile "$backfile_0" 21 20 22 21 _show_result $TID $ERR_CODE
+3 -5
tools/testing/selftests/ublk/test_loop_05.sh
··· 12 12 13 13 _prep_test "loop" "write and verify test" 14 14 15 - backfile_0=$(_create_backfile 256M) 15 + _create_backfile 0 256M 16 16 17 - dev_id=$(_add_ublk_dev -q 2 -t loop "$backfile_0") 18 - _check_add_dev $TID $? "${backfile_0}" 17 + dev_id=$(_add_ublk_dev -q 2 -t loop "${UBLK_BACKFILES[0]}") 18 + _check_add_dev $TID $? 19 19 20 20 # run fio over the ublk disk 21 21 _run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=256M 22 22 ERR_CODE=$? 23 23 24 24 _cleanup_test "loop" 25 - 26 - _remove_backfile "$backfile_0" 27 25 28 26 _show_result $TID $ERR_CODE
+6 -10
tools/testing/selftests/ublk/test_stress_01.sh
··· 10 10 { 11 11 local size=$1 12 12 shift 1 13 - local backfile="" 14 - if echo "$@" | grep -q "loop"; then 15 - backfile=${*: -1} 16 - fi 13 + 17 14 DEV_ID=$(_add_ublk_dev "$@") 18 - _check_add_dev $TID $? "${backfile}" 15 + _check_add_dev $TID $? 19 16 20 17 [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs. remove device(ublk add $*)" 21 18 if ! __run_io_and_remove "${DEV_ID}" "${size}" "no"; then 22 19 echo "/dev/ublkc${DEV_ID} isn't removed" 23 - _remove_backfile "${backfile}" 24 20 exit 255 25 21 fi 26 22 } ··· 29 33 _show_result $TID $ERR_CODE 30 34 fi 31 35 32 - BACK_FILE=$(_create_backfile 256M) 33 - ublk_io_and_remove 256M -t loop -q 4 "${BACK_FILE}" 36 + _create_backfile 0 256M 37 + 38 + ublk_io_and_remove 256M -t loop -q 4 "${UBLK_BACKFILES[0]}" 34 39 ERR_CODE=$? 35 40 if [ ${ERR_CODE} -ne 0 ]; then 36 41 _show_result $TID $ERR_CODE 37 42 fi 38 43 39 - ublk_io_and_remove 256M -t loop -q 4 -z "${BACK_FILE}" 44 + ublk_io_and_remove 256M -t loop -q 4 -z "${UBLK_BACKFILES[0]}" 40 45 ERR_CODE=$? 41 46 _cleanup_test "stress" 42 - _remove_backfile "${BACK_FILE}" 43 47 _show_result $TID $ERR_CODE
+6 -10
tools/testing/selftests/ublk/test_stress_02.sh
··· 10 10 { 11 11 local size=$1 12 12 shift 1 13 - local backfile="" 14 - if echo "$@" | grep -q "loop"; then 15 - backfile=${*: -1} 16 - fi 13 + 17 14 DEV_ID=$(_add_ublk_dev "$@") 18 - _check_add_dev $TID $? "${backfile}" 15 + _check_add_dev $TID $? 19 16 20 17 [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs kill ublk server(ublk add $*)" 21 18 if ! __run_io_and_remove "${DEV_ID}" "${size}" "yes"; then 22 19 echo "/dev/ublkc${DEV_ID} isn't removed res ${res}" 23 - _remove_backfile "${backfile}" 24 20 exit 255 25 21 fi 26 22 } ··· 29 33 _show_result $TID $ERR_CODE 30 34 fi 31 35 32 - BACK_FILE=$(_create_backfile 256M) 33 - ublk_io_and_kill_daemon 256M -t loop -q 4 "${BACK_FILE}" 36 + _create_backfile 0 256M 37 + 38 + ublk_io_and_kill_daemon 256M -t loop -q 4 "${UBLK_BACKFILES[0]}" 34 39 ERR_CODE=$? 35 40 if [ ${ERR_CODE} -ne 0 ]; then 36 41 _show_result $TID $ERR_CODE 37 42 fi 38 43 39 - ublk_io_and_kill_daemon 256M -t loop -q 4 -z "${BACK_FILE}" 44 + ublk_io_and_kill_daemon 256M -t loop -q 4 -z "${UBLK_BACKFILES[0]}" 40 45 ERR_CODE=$? 41 46 _cleanup_test "stress" 42 - _remove_backfile "${BACK_FILE}" 43 47 _show_result $TID $ERR_CODE
+4 -8
tools/testing/selftests/ublk/test_stripe_01.sh
··· 12 12 13 13 _prep_test "stripe" "write and verify test" 14 14 15 - backfile_0=$(_create_backfile 256M) 16 - backfile_1=$(_create_backfile 256M) 15 + _create_backfile 0 256M 16 + _create_backfile 1 256M 17 17 18 - dev_id=$(_add_ublk_dev -t stripe "$backfile_0" "$backfile_1") 19 - _check_add_dev $TID $? "${backfile_0}" 18 + dev_id=$(_add_ublk_dev -t stripe "${UBLK_BACKFILES[0]}" "${UBLK_BACKFILES[1]}") 19 + _check_add_dev $TID $? 20 20 21 21 # run fio over the ublk disk 22 22 _run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=512M 23 23 ERR_CODE=$? 24 24 25 25 _cleanup_test "stripe" 26 - 27 - _remove_backfile "$backfile_0" 28 - _remove_backfile "$backfile_1" 29 - 30 26 _show_result $TID $ERR_CODE
+5 -8
tools/testing/selftests/ublk/test_stripe_02.sh
··· 8 8 9 9 _prep_test "stripe" "mkfs & mount & umount" 10 10 11 - backfile_0=$(_create_backfile 256M) 12 - backfile_1=$(_create_backfile 256M) 13 - dev_id=$(_add_ublk_dev -t stripe "$backfile_0" "$backfile_1") 14 - _check_add_dev $TID $? "$backfile_0" "$backfile_1" 11 + _create_backfile 0 256M 12 + _create_backfile 1 256M 13 + 14 + dev_id=$(_add_ublk_dev -t stripe "${UBLK_BACKFILES[0]}" "${UBLK_BACKFILES[1]}") 15 + _check_add_dev $TID $? 15 16 16 17 _mkfs_mount_test /dev/ublkb"${dev_id}" 17 18 ERR_CODE=$? 18 19 19 20 _cleanup_test "stripe" 20 - 21 - _remove_backfile "$backfile_0" 22 - _remove_backfile "$backfile_1" 23 - 24 21 _show_result $TID $ERR_CODE
+4 -8
tools/testing/selftests/ublk/test_stripe_03.sh
··· 12 12 13 13 _prep_test "stripe" "write and verify test" 14 14 15 - backfile_0=$(_create_backfile 256M) 16 - backfile_1=$(_create_backfile 256M) 15 + _create_backfile 0 256M 16 + _create_backfile 1 256M 17 17 18 - dev_id=$(_add_ublk_dev -q 2 -t stripe "$backfile_0" "$backfile_1") 19 - _check_add_dev $TID $? "${backfile_0}" 18 + dev_id=$(_add_ublk_dev -q 2 -t stripe "${UBLK_BACKFILES[0]}" "${UBLK_BACKFILES[1]}") 19 + _check_add_dev $TID $? 20 20 21 21 # run fio over the ublk disk 22 22 _run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=512M 23 23 ERR_CODE=$? 24 24 25 25 _cleanup_test "stripe" 26 - 27 - _remove_backfile "$backfile_0" 28 - _remove_backfile "$backfile_1" 29 - 30 26 _show_result $TID $ERR_CODE
+5 -8
tools/testing/selftests/ublk/test_stripe_04.sh
··· 8 8 9 9 _prep_test "stripe" "mkfs & mount & umount on zero copy" 10 10 11 - backfile_0=$(_create_backfile 256M) 12 - backfile_1=$(_create_backfile 256M) 13 - dev_id=$(_add_ublk_dev -t stripe -z -q 2 "$backfile_0" "$backfile_1") 14 - _check_add_dev $TID $? "$backfile_0" "$backfile_1" 11 + _create_backfile 0 256M 12 + _create_backfile 1 256M 13 + 14 + dev_id=$(_add_ublk_dev -t stripe -z -q 2 "${UBLK_BACKFILES[0]}" "${UBLK_BACKFILES[1]}") 15 + _check_add_dev $TID $? 15 16 16 17 _mkfs_mount_test /dev/ublkb"${dev_id}" 17 18 ERR_CODE=$? 18 19 19 20 _cleanup_test "stripe" 20 - 21 - _remove_backfile "$backfile_0" 22 - _remove_backfile "$backfile_1" 23 - 24 21 _show_result $TID $ERR_CODE