From b8562e417751467ba7d4373c8832f888929bae4e9b4e0eab34ef502aab23b040 Mon Sep 17 00:00:00 2001 From: Franck Bui Date: Fri, 12 Jan 2024 10:19:47 +0000 Subject: [PATCH] - Add 5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch 5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch It seems that systemd upstream has a dubious way to fix broken code these days... let's revert these hacks until a final decision is taken to solve https://github.com/systemd/systemd/issues/28141. See also https://github.com/systemd/systemd/pull/30075. OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=1483 --- ...te-devlink-with-the-newer-device-nod.patch | 37 +++++++++++++++++++ ...rt-workarounds-for-issues-caused-by-.patch | 36 ++++++++++++++++++ systemd.changes | 11 ++++++ systemd.spec | 2 + 4 files changed, 86 insertions(+) create mode 100644 5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch create mode 100644 5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch diff --git a/5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch b/5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch new file mode 100644 index 00000000..691f628a --- /dev/null +++ b/5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch @@ -0,0 +1,37 @@ +From 323274d5e7545013b09c280254879dcbf1430fbf Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Fri, 12 Jan 2024 10:54:57 +0100 +Subject: [PATCH 5001/5002] Revert "udev: update devlink with the newer device + node even when priority is equivalent" + +This reverts commit 277cb24ffb7a520f640eb36d11340f11bf0c7c4f. +--- + src/udev/udev-node.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c +index 74a70185bc..75845413cf 100644 +--- a/src/udev/udev-node.c ++++ b/src/udev/udev-node.c +@@ -468,13 +468,13 @@ static int link_update(sd_device *dev, const char *slink, bool add) { + /* The devlink priority is downgraded. Another device may have a higher + * priority now. Let's find the device node with the highest priority. */ + } else { +- if (current_prio > prio) +- /* The devlink with a higher priority already exists and is owned by +- * another device. Hence, it is not necessary to recreate it. */ ++ if (current_prio >= prio) ++ /* The devlink with equal or higher priority already exists and is ++ * owned by another device. Hence, it is not necessary to recreate it. */ + return 0; + +- /* This device has the equal or a higher priority than the current. Let's +- * create the devlink to our device node. */ ++ /* This device has a higher priority than the current. Let's create the ++ * devlink to our device node. */ + return node_symlink(dev, NULL, slink); + } + +-- +2.35.3 + diff --git a/5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch b/5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch new file mode 100644 index 00000000..37e58f64 --- /dev/null +++ b/5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch @@ -0,0 +1,36 @@ +From 65b0ae29194a335dc2cc1410d57acf7307251791 Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Fri, 12 Jan 2024 10:55:17 +0100 +Subject: [PATCH 5002/5002] Revert "udev: revert workarounds for issues caused + by the devlink creation optimization" + +This reverts commit b8fa62589271a0a7552c6eb02e6beac3ca759ba7. +--- + rules.d/60-persistent-storage.rules.in | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/rules.d/60-persistent-storage.rules.in b/rules.d/60-persistent-storage.rules.in +index 835263f3cb..d5e0f5f705 100644 +--- a/rules.d/60-persistent-storage.rules.in ++++ b/rules.d/60-persistent-storage.rules.in +@@ -134,6 +134,17 @@ KERNEL!="sr*|mmcblk[0-9]boot[0-9]", IMPORT{builtin}="blkid" + LABEL="persistent_storage_blkid_probe_end" + {% endif %} + ++# Decrease devlink priority for whole disk of ISO hybrid images, and make the ++# priority for partitions in the image relatively higher. This is for the case ++# that a disk and one of its partition have the same label or so. ++# See issue #28468. ++ENV{ID_FS_TYPE}=="iso9660", ENV{DEVTYPE}=="disk", OPTIONS+="link_priority=-10" ++ ++# Decrease devlink priority for encrypted partitions, and make the priority for ++# decrypted DM devices relatively higher. This is for the case that an encrypted ++# partition and its decrypted DM device have the same label. ++ENV{ID_FS_USAGE}=="crypto", OPTIONS+="link_priority=-10" ++ + # by-label/by-uuid links (filesystem metadata) + ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" + ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +-- +2.35.3 + diff --git a/systemd.changes b/systemd.changes index da9da129..40bd609f 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Fri Jan 12 10:12:15 UTC 2024 - Franck Bui + +- Add 5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch + 5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch + + It seems that systemd upstream has a dubious way to fix broken code these + days... let's revert these hacks until a final decision is taken to solve + https://github.com/systemd/systemd/issues/28141. See also + https://github.com/systemd/systemd/pull/30075. + ------------------------------------------------------------------- Fri Jan 12 09:34:14 UTC 2024 - Franck Bui diff --git a/systemd.spec b/systemd.spec index 1255bb8f..3d98cedc 100644 --- a/systemd.spec +++ b/systemd.spec @@ -219,6 +219,8 @@ Patch5: 0008-sysv-generator-translate-Required-Start-into-a-Wants.patch # very few cases, some stuff might be broken in upstream and need to be fixed or # worked around quickly. In these cases, the patches are added temporarily and # will be removed as soon as a proper fix will be merged by upstream. +Patch5001: 5001-Revert-udev-update-devlink-with-the-newer-device-nod.patch +Patch5002: 5002-Revert-udev-revert-workarounds-for-issues-caused-by-.patch %description Systemd is a system and service manager, compatible with SysV and LSB