diff --git a/lib/nvme/nvme_uevent.c b/lib/nvme/nvme_uevent.c index 1bcfff1cb..a41f8bbe4 100644 --- a/lib/nvme/nvme_uevent.c +++ b/lib/nvme/nvme_uevent.c @@ -144,9 +144,7 @@ parse_event(const char *buf, struct spdk_uevent *event) return -1; } spdk_pci_addr_fmt(event->traddr, sizeof(event->traddr), &pci_addr); - return 1; - } - if (!strncmp(driver, "vfio-pci", 8)) { + } else if (!strncmp(driver, "vfio-pci", 8)) { struct spdk_pci_addr pci_addr; event->subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_VFIO; @@ -161,10 +159,11 @@ parse_event(const char *buf, struct spdk_uevent *event) return -1; } spdk_pci_addr_fmt(event->traddr, sizeof(event->traddr), &pci_addr); - return 1; - + } else { + event->subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; } - return -1; + + return 1; } int diff --git a/lib/nvme/nvme_uevent.h b/lib/nvme/nvme_uevent.h index 778d73c2a..94f67101e 100644 --- a/lib/nvme/nvme_uevent.h +++ b/lib/nvme/nvme_uevent.h @@ -41,6 +41,7 @@ #ifndef SPDK_UEVENT_H_ #define SPDK_UEVENT_H_ +#define SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED 0 #define SPDK_NVME_UEVENT_SUBSYSTEM_UIO 1 #define SPDK_NVME_UEVENT_SUBSYSTEM_VFIO 2 diff --git a/test/unit/lib/nvme/nvme_uevent.c/nvme_uevent_ut.c b/test/unit/lib/nvme/nvme_uevent.c/nvme_uevent_ut.c index a9775c983..c5a94223d 100644 --- a/test/unit/lib/nvme/nvme_uevent.c/nvme_uevent_ut.c +++ b/test/unit/lib/nvme/nvme_uevent.c/nvme_uevent_ut.c @@ -47,8 +47,6 @@ enum uevent_parse_event_return_type { uevent_expected_continue = 1 }; -#define SPDK_NVME_UEVENT_SUBSYSTEM_NULL 0xFF - static void test_nvme_uevent_parse_event(void) { @@ -62,19 +60,19 @@ test_nvme_uevent_parse_event(void) /* Case 1: Add wrong non-uio or vfio-pci /devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0 */ commands = "ACTION=add\0DEVPATH=/devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0\0SUBSYSTEM= \0DRIVER= \0PCI_SLOT_NAME= \0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = 0xFF; uevent.action = 0; rc = parse_event(commands, &uevent); - CU_ASSERT(rc == uevent_abnormal_exit); - CU_ASSERT(uevent.subsystem == SPDK_NVME_UEVENT_SUBSYSTEM_NULL); + CU_ASSERT(rc == uevent_expected_continue); + CU_ASSERT(uevent.subsystem == SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED); CU_ASSERT(uevent.action == SPDK_NVME_UEVENT_ADD); /* Case 2: Add uio /devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0 */ commands = "ACTION=add \0DEVPATH=/devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0\0SUBSYSTEM=uio\0DRIVER=\0PCI_SLOT_NAME= \0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; uevent.action = 0; rc = parse_event(commands, &uevent); @@ -86,7 +84,7 @@ test_nvme_uevent_parse_event(void) /* Case 3: Remove uio /devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0 */ commands = "ACTION=remove\0DEVPATH=/devices/pci0000:80/0000:80:01.0/0000:81:00.0/uio/uio0\0SUBSYSTEM=uio\0DRIVER=\0PCI_SLOT_NAME= \0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; rc = parse_event(commands, &uevent); @@ -96,7 +94,7 @@ test_nvme_uevent_parse_event(void) /* Case 4: Add vfio-pci 0000:81:00.0 */ commands = "ACTION=bind\0DEVPATH=\0SUBSYSTEM= \0DRIVER=vfio-pci\0PCI_SLOT_NAME=0000:81:00.0\0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; rc = parse_event(commands, &uevent); @@ -106,7 +104,7 @@ test_nvme_uevent_parse_event(void) /* Case 5: Remove vfio-pci 0000:81:00.0 */ commands = "ACTION=remove\0DEVPATH= \0SUBSYSTEM= \0DRIVER=vfio-pci \0PCI_SLOT_NAME=0000:81:00.0\0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; rc = parse_event(commands, &uevent); @@ -116,7 +114,7 @@ test_nvme_uevent_parse_event(void) /* Case 6: Add wrong vfio-pci addr 000000 */ commands = "ACTION=bind\0DEVPATH= \0SUBSYSTEM= \0DRIVER=vfio-pci \0PCI_SLOT_NAME=000000\0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED; rc = parse_event(commands, &uevent); @@ -126,12 +124,12 @@ test_nvme_uevent_parse_event(void) /* Case 7: Add wrong type vfio 0000:81:00.0 */ commands = "ACTION=bind\0DEVPATH= \0SUBSYSTEM= \0DRIVER=vfio \0PCI_SLOT_NAME=0000:81:00.0\0"; - uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_NULL; + uevent.subsystem = SPDK_NVME_UEVENT_SUBSYSTEM_UIO; uevent.action = 0; rc = parse_event(commands, &uevent); - CU_ASSERT(rc == uevent_abnormal_exit); - CU_ASSERT(uevent.subsystem == SPDK_NVME_UEVENT_SUBSYSTEM_NULL); + CU_ASSERT(rc == uevent_expected_continue); + CU_ASSERT(uevent.subsystem == SPDK_NVME_UEVENT_SUBSYSTEM_UNRECOGNIZED); CU_ASSERT(uevent.action == SPDK_NVME_UEVENT_ADD); }