summaryrefslogtreecommitdiff
path: root/src/test/test-udev-util.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-04-15 12:23:48 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-05-04 17:16:14 +0900
commita1af9668ec78fc11a2e7ac942397eac0c8fceced (patch)
treeda4b83bc763b96a95b524e28f83d8eab41641e4f /src/test/test-udev-util.c
parent29d02458327234333cba109d9355181c78030eb4 (diff)
downloadsystemd-a1af9668ec78fc11a2e7ac942397eac0c8fceced.tar.gz
udev: make newer event also blocked by DEVPATH_OLD
Previously, a device has DEVPATH_OLD is blocked by a previous event whose devpath is equivalent to the DEVPATH_OLD. This extends the condtion. 1. an event has DEVPATH_OLD is blocked by a previous event whose devpath is a parent of, child of, or equivalent to the DEVPATH_OLD. 2. an event is blocked by a previous event whose DEVPATH_OLD is a parent of, child of, or equivalent to the devpath of the new event. I am not sure such check is really necessary. But, the cost of the check is expected to be extremely small, as device renaming does not occur so frequently. Hence, it should not introduce any significant performance regression.
Diffstat (limited to 'src/test/test-udev-util.c')
-rw-r--r--src/test/test-udev-util.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/test-udev-util.c b/src/test/test-udev-util.c
index d413997189..02be7a0b3c 100644
--- a/src/test/test-udev-util.c
+++ b/src/test/test-udev-util.c
@@ -155,4 +155,17 @@ TEST(udev_resolve_subsys_kernel) {
test_udev_resolve_subsys_kernel_one("[net/lo]/address", true, 0, "00:00:00:00:00:00");
}
+TEST(devpath_conflict) {
+ assert_se(!devpath_conflict(NULL, NULL));
+ assert_se(!devpath_conflict(NULL, "/devices/pci0000:00/0000:00:1c.4"));
+ assert_se(!devpath_conflict("/devices/pci0000:00/0000:00:1c.4", NULL));
+ assert_se(!devpath_conflict("/devices/pci0000:00/0000:00:1c.4", "/devices/pci0000:00/0000:00:00.0"));
+ assert_se(!devpath_conflict("/devices/virtual/net/veth99", "/devices/virtual/net/veth999"));
+
+ assert_se(devpath_conflict("/devices/pci0000:00/0000:00:1c.4", "/devices/pci0000:00/0000:00:1c.4"));
+ assert_se(devpath_conflict("/devices/pci0000:00/0000:00:1c.4", "/devices/pci0000:00/0000:00:1c.4/0000:3c:00.0"));
+ assert_se(devpath_conflict("/devices/pci0000:00/0000:00:1c.4/0000:3c:00.0/nvme/nvme0/nvme0n1",
+ "/devices/pci0000:00/0000:00:1c.4/0000:3c:00.0/nvme/nvme0/nvme0n1/nvme0n1p1"));
+}
+
DEFINE_TEST_MAIN(LOG_INFO);