2021-03-13 14:07:22

by Jianlin Lv

[permalink] [raw]
Subject: [PATCH net-next] bonding: Added -ENODEV interpret for slaves option

After upgrading the kernel, the slave interface name is changed,
Systemd cannot use the original configuration to create bond interface,
thereby losing the connection with the host.

Adding log for ENODEV will make it easier to find out such problem lies.

Signed-off-by: Jianlin Lv <[email protected]>
---
drivers/net/bonding/bond_options.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index 77d7c38bd435..c9d3604ae129 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -640,6 +640,15 @@ static void bond_opt_error_interpret(struct bonding *bond,
netdev_err(bond->dev, "option %s: unable to set because the bond device is up\n",
opt->name);
break;
+ case -ENODEV:
+ if (val && val->string) {
+ p = strchr(val->string, '\n');
+ if (p)
+ *p = '\0';
+ netdev_err(bond->dev, "option %s: interface %s does not exist!\n",
+ opt->name, val->string);
+ }
+ break;
default:
break;
}
--
2.25.1


2021-03-13 19:56:36

by Jay Vosburgh

[permalink] [raw]
Subject: Re: [PATCH net-next] bonding: Added -ENODEV interpret for slaves option

Jianlin Lv <[email protected]> wrote:

>After upgrading the kernel, the slave interface name is changed,
>Systemd cannot use the original configuration to create bond interface,
>thereby losing the connection with the host.
>
>Adding log for ENODEV will make it easier to find out such problem lies.

To be clear, this specifically affects add/remove of interfaces
to/from the bond via the "slaves" sysfs interface.

Please update your log to better describe this (that it affects
the sysfs API only) and resubmit.

I'm sympathetic to the problem this is trying to solve, and the
message shouldn't spam the kernel log particularly, but the commit log
needs to more clearly describe what the problem is and how it's being
fixed.

Thanks,

-J

>Signed-off-by: Jianlin Lv <[email protected]>
>---
> drivers/net/bonding/bond_options.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
>diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
>index 77d7c38bd435..c9d3604ae129 100644
>--- a/drivers/net/bonding/bond_options.c
>+++ b/drivers/net/bonding/bond_options.c
>@@ -640,6 +640,15 @@ static void bond_opt_error_interpret(struct bonding *bond,
> netdev_err(bond->dev, "option %s: unable to set because the bond device is up\n",
> opt->name);
> break;
>+ case -ENODEV:
>+ if (val && val->string) {
>+ p = strchr(val->string, '\n');
>+ if (p)
>+ *p = '\0';
>+ netdev_err(bond->dev, "option %s: interface %s does not exist!\n",
>+ opt->name, val->string);
>+ }
>+ break;
> default:
> break;
> }
>--
>2.25.1
>

---
-Jay Vosburgh, [email protected]