@@ -50,16 +50,15 @@ test_device() {
_setup_nvmet
local nsdev
- local port
- port=$(_nvmet_passthru_target_setup "${def_subsysnqn}")
+ _nvmet_passthru_target_setup "${def_subsysnqn}"
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" "${def_subsysnqn}")
compare_dev_info "${nsdev}"
_nvme_disconnect_subsys "${def_subsysnqn}"
- _nvmet_passthru_target_cleanup "${port}" "${def_subsysnqn}"
+ _nvmet_passthru_target_cleanup "${def_subsysnqn}"
echo "Test complete"
}
@@ -21,15 +21,14 @@ test_device() {
local ctrldev
local nsdev
- local port
- port=$(_nvmet_passthru_target_setup "${def_subsysnqn}")
+ _nvmet_passthru_target_setup "${def_subsysnqn}"
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" "${def_subsysnqn}")
_run_fio_verify_io --size="${nvme_img_size}" --filename="${nsdev}"
_nvme_disconnect_subsys "${def_subsysnqn}"
- _nvmet_passthru_target_cleanup "${port}" "${def_subsysnqn}"
+ _nvmet_passthru_target_cleanup "${def_subsysnqn}"
echo "Test complete"
}
@@ -27,15 +27,14 @@ test_device() {
local ctrldev
local nsdev
- local port
- port=$(_nvmet_passthru_target_setup "${def_subsysnqn}")
+ _nvmet_passthru_target_setup "${def_subsysnqn}"
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" "${def_subsysnqn}")
_xfs_run_fio_verify_io "${nsdev}" "${nvme_img_size}"
_nvme_disconnect_subsys "${def_subsysnqn}"
- _nvmet_passthru_target_cleanup "${port}" "${def_subsysnqn}"
+ _nvmet_passthru_target_cleanup "${def_subsysnqn}"
echo "Test complete"
}
@@ -19,9 +19,8 @@ test_device() {
_setup_nvmet
local ctrldev
- local port
- port=$(_nvmet_passthru_target_setup "${def_subsysnqn}")
+ _nvmet_passthru_target_setup "${def_subsysnqn}"
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" "${def_subsysnqn}")
ctrldev=$(_find_nvme_dev "${def_subsysnqn}")
@@ -31,7 +30,7 @@ test_device() {
fi
_nvme_disconnect_subsys "${def_subsysnqn}"
- _nvmet_passthru_target_cleanup "${port}" "${def_subsysnqn}"
+ _nvmet_passthru_target_cleanup "${def_subsysnqn}"
echo "Test complete"
}
@@ -20,15 +20,14 @@ test_device() {
local subsys="blktests-subsystem-"
local iterations=10
local ctrldev
- local port
for ((i = 0; i < iterations; i++)); do
- port=$(_nvmet_passthru_target_setup "${subsys}${i}")
+ _nvmet_passthru_target_setup "${subsys}${i}"
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" \
"${subsys}${i}")
_nvme_disconnect_subsys "${subsys}${i}" >>"${FULL}" 2>&1
- _nvmet_passthru_target_cleanup "${port}" "${subsys}${i}"
+ _nvmet_passthru_target_cleanup "${subsys}${i}"
done
echo "Test complete"
@@ -712,6 +712,19 @@ _remove_nvmet_subsystem_from_port() {
rm "${NVMET_CFS}/ports/${port}/subsystems/${nvmet_subsystem}"
}
+_get_nvmet_ports() {
+ local nvmet_subsystem="$1"
+ local -n nvmet_ports="$2"
+ local cfs_path="${NVMET_CFS}/ports"
+ local sarg
+
+ sarg="s;^${cfs_path}/\([0-9]\+\)/subsystems/${nvmet_subsystem}$;\1;p"
+
+ for path in "${cfs_path}/"*"/subsystems/${nvmet_subsystem}"; do
+ nvmet_ports+=("$(echo "${path}" | sed -n -s "${sarg}")")
+ done
+}
+
_set_nvmet_hostkey() {
local nvmet_hostnqn="$1"
local nvmet_hostkey="$2"
@@ -781,13 +794,12 @@ _find_nvme_passthru_loop_dev() {
_nvmet_passthru_target_setup() {
local subsys_name=$1
+ local port
_create_nvmet_passthru "${subsys_name}"
port="$(_create_nvmet_port "${nvme_trtype}")"
_add_nvmet_subsys_to_port "${port}" "${subsys_name}"
_create_nvmet_host "${subsys_name}" "${def_hostnqn}"
-
- echo "$port"
}
_nvmet_passthru_target_connect() {
@@ -806,11 +818,17 @@ _nvmet_passthru_target_connect() {
}
_nvmet_passthru_target_cleanup() {
- local port=$1
- local subsys_name=$2
+ local subsys_name=$1
+ local ports
+ local port
+
+ _get_nvmet_ports "${subsys_name}" ports
+
+ for port in "${ports[@]}"; do
+ _remove_nvmet_subsystem_from_port "${port}" "${subsys_name}"
+ _remove_nvmet_port "${port}"
+ done
- _remove_nvmet_subsystem_from_port "${port}" "${subsys_name}"
- _remove_nvmet_port "${port}"
_remove_nvmet_passhtru "${subsys_name}"
_remove_nvmet_host "${def_hostnqn}"
}
The passthru nvmet setup and cleanup helpers are using the port as handle to track resources. Instead returning the port from the setup call, we figure out in the cleanup code which resources have been allocated. This avoids passing around awkward handles. Signed-off-by: Daniel Wagner <dwagner@suse.de> --- tests/nvme/033 | 5 ++--- tests/nvme/034 | 5 ++--- tests/nvme/035 | 5 ++--- tests/nvme/036 | 5 ++--- tests/nvme/037 | 5 ++--- tests/nvme/rc | 30 ++++++++++++++++++++++++------ 6 files changed, 34 insertions(+), 21 deletions(-)