Recently it is observed that list corruption is triggered when running scsi disk rebind in case of blk-cgroup. Add one such test case for covering this unusual operation. Cc: Changhui Zhong <czhong@xxxxxxxxxx> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> --- tests/block/035 | 54 +++++++++++++++++++++++++++++++++++++++++++++ tests/block/035.out | 2 ++ 2 files changed, 56 insertions(+) create mode 100755 tests/block/035 create mode 100644 tests/block/035.out diff --git a/tests/block/035 b/tests/block/035 new file mode 100755 index 0000000..a1057a3 --- /dev/null +++ b/tests/block/035 @@ -0,0 +1,54 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2024 Ming Lei +# +# blk-cgroup is usually initialized in disk allocation code, and +# de-initialized in disk release code. And scsi disk rebind needs +# to re-allocate/re-add disk, meantime request queue is kept as +# live during the whole cycle. +# +# Add this test for covering blk-cgroup & disk rebind. + +. tests/block/rc +. common/scsi_debug +. common/cgroup + +DESCRIPTION="test cgroup vs. scsi_debug rebind" +QUICK=1 + +requires() { + _have_cgroup2_controller io + _have_scsi_debug + _have_fio +} + +scsi_debug_rebind() { + if ! _configure_scsi_debug; then + return + fi + + _init_cgroup2 + + echo "+io" > "/sys/fs/cgroup/cgroup.subtree_control" + echo "+io" > "$CGROUP2_DIR/cgroup.subtree_control" + mkdir -p "$CGROUP2_DIR/${TEST_NAME}" + + local dev dev_path hctl + dev=${SCSI_DEBUG_DEVICES[0]} + dev_path="$(realpath "/sys/block/${dev}/device")" + hctl="$(basename "$dev_path")" + + echo -n "${hctl}" > "/sys/bus/scsi/drivers/sd/unbind" + echo -n "${hctl}" > "/sys/bus/scsi/drivers/sd/bind" + + _exit_cgroup2 + _exit_scsi_debug +} + +test() { + echo "Running ${TEST_NAME}" + + scsi_debug_rebind + + echo "Test complete" +} diff --git a/tests/block/035.out b/tests/block/035.out new file mode 100644 index 0000000..6ffa504 --- /dev/null +++ b/tests/block/035.out @@ -0,0 +1,2 @@ +Running block/035 +Test complete -- 2.41.0