[packages/systemd] update net rename patch (untested)
atler
atler at pld-linux.org
Sat Apr 13 14:49:26 CEST 2019
commit 7cd4982d519c31d5ef7e27c36e075537428af567
Author: Jan Palus <atler at pld-linux.org>
Date: Sat Apr 13 14:29:27 2019 +0200
update net rename patch (untested)
net-rename-revert.patch | 72 ++++++++++++++++++++++++++++---------------------
1 file changed, 41 insertions(+), 31 deletions(-)
---
diff --git a/net-rename-revert.patch b/net-rename-revert.patch
index e8bf17b..21f2659 100644
--- a/net-rename-revert.patch
+++ b/net-rename-revert.patch
@@ -9,55 +9,54 @@ We need to keep supporting systems with 75-persistent-net-generator.rules
generated names for a while after switching to net.ifnames. Re-apply this old
hack to make the renaming less likely to fail.
---
- src/udev/udev-event.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 46 insertions(+), 5 deletions(-)
-
-diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
-index 07b7365..f67b295 100644
---- a/src/udev/udev-event.c
-+++ b/src/udev/udev-event.c
-@@ -680,6 +680,7 @@ static int rename_netif(UdevEvent *event) {
- const char *action, *oldname;
- char name[IFNAMSIZ];
+--- systemd-242/src/udev/udev-event.c.orig 2019-04-11 18:28:36.000000000 +0200
++++ systemd-242/src/udev/udev-event.c 2019-04-13 14:19:13.346990771 +0200
+@@ -698,6 +698,8 @@
+ sd_device *dev = event->dev;
+ const char *oldname;
int ifindex, r;
++ char name[IFNAMSIZ];
+ int loop;
if (!event->name)
return 0; /* No new name is requested. */
-@@ -705,17 +706,57 @@ static int rename_netif(UdevEvent *event) {
+@@ -719,22 +720,66 @@
return log_device_error_errno(dev, r, "Failed to get ifindex: %m");
- strscpy(name, IFNAMSIZ, event->name);
-+
- r = rtnl_set_link_name(&event->rtnl, ifindex, name);
-- if (r < 0)
-- return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m", ifindex, oldname, name);
+ r = rtnl_set_link_name(&event->rtnl, ifindex, event->name);
+ if (r >= 0) {
-+ r = device_rename(dev, event->name);
++ /* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */
++ r = device_add_property(dev, "ID_RENAMING", "1");
+ if (r < 0)
-+ return log_warning_errno(r, "Network interface %i is renamed from '%s' to '%s', but could not update sd_device object: %m", ifindex, oldname, name);
++ log_device_warning_errno(dev, r, "Failed to add 'ID_RENAMING' property: %m");
+
-+ log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, name);
++ r = device_rename(dev, event->name);
++ if (r < 0)
++ log_device_warning_errno(dev, r, "Failed to update properties with new name '%s': %m", event->name);
+
++ log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, event->name);
+ return 1;
+ }
+
+ /* keep trying if the destination interface name already exists */
+ if (r != -EEXIST)
+ goto out;
-
-- r = device_rename(dev, event->name);
++
+ /* free our own name, another process may wait for us */
+ snprintf(name, IFNAMSIZ, "rename%u", ifindex);
+ r = rtnl_set_link_name(&event->rtnl, ifindex, name);
if (r < 0)
-- return log_warning_errno(r, "Network interface %i is renamed from '%s' to '%s', but could not update sd_device object: %m", ifindex, oldname, name);
+- return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m",
+- ifindex, oldname, event->name);
+ goto out;
-
++
+ /* log temporary name */
- log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, name);
++ log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, event->name);
-- return 1;
+- /* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */
+- r = device_add_property(dev, "ID_RENAMING", "1");
+- if (r < 0)
+- log_device_warning_errno(dev, r, "Failed to add 'ID_RENAMING' property: %m");
+ /* wait a maximum of 90 seconds for our target to become available */
+ strscpy(name, IFNAMSIZ, event->name);
+ loop = 90 * 20;
@@ -68,22 +67,33 @@ index 07b7365..f67b295 100644
+
+ r = rtnl_set_link_name(&event->rtnl, ifindex, name);
+ if (r >= 0) {
-+ r = device_rename(dev, event->name);
++ /* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */
++ r = device_add_property(dev, "ID_RENAMING", "1");
+ if (r < 0)
-+ return log_warning_errno(r, "Network interface %i is renamed from '%s' to '%s', but could not update sd_device object: %m", ifindex, oldname, name);
++ log_device_warning_errno(dev, r, "Failed to add 'ID_RENAMING' property: %m");
+
-+ log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, name);
++ r = device_rename(dev, event->name);
++ if (r < 0)
++ log_device_warning_errno(dev, r, "Failed to update properties with new name '%s': %m", event->name);
+
++ log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, event->name);
+ return 1;
+ }
+ if (r != -EEXIST)
+ goto out;
+ }
-+
+
+- r = device_rename(dev, event->name);
+out:
-+ if (r < 0)
-+ return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m", ifindex, oldname, name);
+ if (r < 0)
+- log_device_warning_errno(dev, r, "Failed to update properties with new name '%s': %m", event->name);
++ return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m",
++ ifindex, oldname, event->name);
+ return r;
+
+- log_device_debug(dev, "Network interface %i is renamed from '%s' to '%s'", ifindex, oldname, event->name);
+
+- return 1;
}
static int update_devnode(UdevEvent *event) {
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/systemd.git/commitdiff/452e45bc153cd7e562e82f2374dfb31705c32e49
More information about the pld-cvs-commit
mailing list