]> www.infradead.org Git - users/sagi/blktests.git/commitdiff
nvme: Ensure all ports and subsystems are removed on cleanup
authorLogan Gunthorpe <logang@deltatee.com>
Wed, 17 Jul 2019 17:12:57 +0000 (11:12 -0600)
committerOmar Sandoval <osandov@osandov.com>
Mon, 29 Jul 2019 17:13:14 +0000 (10:13 -0700)
This ensures any test that fails or is interrupted will cleanup
their subsystems. This will prevent the system from being left
in an inconsistent state that will fail subsequent tests.

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
tests/nvme/rc

index 16bdb7f0c083aba2e46c1059bd6c9141628462bc..a6b4d593868027436a85e4adae9cb74562cf37da 100644 (file)
@@ -25,6 +25,49 @@ _test_dev_is_nvme() {
 }
 
 _cleanup_nvmet() {
+       local dev
+       local port
+       local subsys
+       local transport
+       local name
+
+       if [[ ! -d "${NVMET_CFS}" ]]; then
+               return 0
+       fi
+
+       # Don't let successive Ctrl-Cs interrupt the cleanup processes
+       stty -isig
+
+       shopt -s nullglob
+
+       for dev in /sys/class/nvme/nvme*; do
+               dev="$(basename "$dev")"
+               transport="$(cat "/sys/class/nvme/${dev}/transport")"
+               if [[ "$transport" == "loop" ]]; then
+                       echo "WARNING: Test did not clean up loop device: ${dev}"
+                       nvme disconnect -d "${dev}"
+               fi
+       done
+
+       for port in "${NVMET_CFS}"/ports/*; do
+               name=$(basename "${port}")
+               echo "WARNING: Test did not clean up port: ${name}"
+               rm -f "${port}"/subsystems/*
+               rmdir "${port}"
+       done
+
+       for subsys in "${NVMET_CFS}"/subsystems/*; do
+               name=$(basename "${subsys}")
+               echo "WARNING: Test did not clean up subsystem: ${name}"
+               for ns in "${subsys}"/namespaces/*; do
+                       rmdir "${ns}"
+               done
+               rmdir "${subsys}"
+       done
+
+       shopt -u nullglob
+       stty isig
+
        modprobe -r nvme-loop
        modprobe -r nvmet
 }