From: Minwoo Im Date: Thu, 16 May 2019 17:23:49 +0000 (-0700) Subject: nvme-cli: don't try to disconnect for ctrl with pcie transport X-Git-Tag: v1.9~50 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3bfedd3be05c0a443ac93b36105be358de55caf3;p=users%2Fsagi%2Fnvme-cli.git nvme-cli: don't try to disconnect for ctrl with pcie transport If a host system has both pcie and fabrics controllers, the following nvme-cli disconnect-all command will might not be working because contrlller with pcie transport does not have delete_controller in sysfs. root@target:~# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 foo QEMU NVMe Ctrl 1 536.87 MB / 536.87 MB 512 B + 0 B 1.0 /dev/nvme1n1 b92326b9b2323bf0 Linux 1 134.22 MB / 134.22 MB 512 B + 0 B 5.1.0-rc /dev/nvme2n1 65fa04eddd9bbac0 Linux 1 134.22 MB / 134.22 MB 512 B + 0 B 5.1.0-rc root@target:~/nvme-cli.git# nvme disconnect-all Failed to open /sys/class/nvme/nvme0/delete_controller: No such file or directory This patch checks the transport type of the controller in iteration. Reviewed-by: Sagi Grimberg Reviewed-by: Chaitanya Kulkarni Signed-off-by: Minwoo Im --- diff --git a/fabrics.c b/fabrics.c index 511de06a..733a24b7 100644 --- a/fabrics.c +++ b/fabrics.c @@ -1196,6 +1196,8 @@ int disconnect_all(const char *desc, int argc, char **argv) for (j = 0; j < subsys->nctrls; j++) { struct ctrl_list_item *ctrl = &subsys->ctrls[j]; + if (!strcmp(ctrl->transport, "pcie")) + continue; ret = disconnect_by_device(ctrl->name); if (ret)