If the test setups a loop device itself (not created by _nvmet_target_setup), _nvmet_target_cleanup should not cleanup the block device automatically. Because _nvmet_target_cleanup has no way to figure this out by itself if it is managed or not, the caller needs to pass in the block device type. Signed-off-by: Daniel Wagner <dwagner@xxxxxxx> --- tests/nvme/rc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/nvme/rc b/tests/nvme/rc index 4ad6cb640627..9d47c737f9b0 100644 --- a/tests/nvme/rc +++ b/tests/nvme/rc @@ -855,9 +855,14 @@ _nvmet_target_cleanup() { local port local blkdev local subsysnqn="${def_subsysnqn}" + local blkdev_type="" while [[ $# -gt 0 ]]; do case $1 in + --blkdev) + blkdev_type="$2" + shift 2 + ;; --subsysnqn) subsysnqn="$2" shift 2 @@ -878,7 +883,9 @@ _nvmet_target_cleanup() { _remove_nvmet_subsystem "${subsysnqn}" _remove_nvmet_host "${def_hostnqn}" - _cleanup_blkdev + if [[ "${blkdev_type}" == "device" ]]; then + _cleanup_blkdev + fi } _nvmet_passthru_target_setup() { -- 2.44.0