The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
---
drivers/net/Kconfig | 21 +++++++++++++++++----
drivers/net/ifb.c | 2 +-
2 files changed, 18 insertions(+), 5 deletions(-)
@@ -110,12 +110,25 @@ config IFBThisisanintermediatedriverthatallowssharingofresources.Tocompilethisdriverasamodule,chooseMhere:themodule-willbecalledifb.Ifyouwanttousemorethanoneifb-deviceatatime,youneedtocompilethisdriverasamodule.-Insteadof'ifb',thedeviceswillthenbecalled'ifb0',-'ifb1'etc.+willbecalledifb.+Lookattheiproute2documentationdirectoryforusageetc+configIFB_COUNT+int"Number of ifb devices to pre-create at init time"+depends onIFB+default3+help+Staticnumberofifbdevicestobeunconditionallypre-created+atinittime.++Thisdefaultvaluecanbeoverwrittenonthekernelcommand+lineorwithmodule-parameterifb.numifbs.++Thehistoricdefaultis3.Ifamid-2007versionofiproute2+isused(v2.6.23orlater),itcanbesetto0,sinceneeded+ifbdevicescanbedynamicallyallocatedviartnetlink.+source"drivers/net/team/Kconfig"configMACVLAN
From: Jamal Hadi Salim <jhs@mojatatu.com> Date: 2016-01-12 12:55:25
On 16-01-12 06:56 AM, Lubomir Rintel wrote:
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
I guess module options are frowned upon. so:
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
cheers,
jamal
From: Tom Gundersen <hidden> Date: 2016-01-12 15:10:58
On Tue, Jan 12, 2016 at 12:56 PM, Lubomir Rintel [off-list ref] wrote:
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
This has been a nuisance, so would be great to see it fixed upstream.
Acked-by: Tom Gundersen <redacted>
@@ -110,12 +110,25 @@ config IFBThisisanintermediatedriverthatallowssharingofresources.Tocompilethisdriverasamodule,chooseMhere:themodule-willbecalledifb.Ifyouwanttousemorethanoneifb-deviceatatime,youneedtocompilethisdriverasamodule.-Insteadof'ifb',thedeviceswillthenbecalled'ifb0',-'ifb1'etc.+willbecalledifb.+Lookattheiproute2documentationdirectoryforusageetc+configIFB_COUNT+int"Number of ifb devices to pre-create at init time"+depends onIFB+default3+help+Staticnumberofifbdevicestobeunconditionallypre-created+atinittime.++Thisdefaultvaluecanbeoverwrittenonthekernelcommand+lineorwithmodule-parameterifb.numifbs.++Thehistoricdefaultis3.Ifamid-2007versionofiproute2+isused(v2.6.23orlater),itcanbesetto0,sinceneeded+ifbdevicescanbedynamicallyallocatedviartnetlink.+source"drivers/net/team/Kconfig"configMACVLAN
From: Daniel Borkmann <daniel@iogearbox.net> Date: 2016-01-12 15:20:05
On 01/12/2016 12:56 PM, Lubomir Rintel wrote:
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Thanks for the set in general, good to see it fixed!
+config IFB_COUNT
+ int "Number of ifb devices to pre-create at init time"
+ depends on IFB
+ default 3
Should that not be 2?
+ help
+ Static number of ifb devices to be unconditionally pre-created
+ at init time.
+
+ This default value can be overwritten on the kernel command
+ line or with module-parameter ifb.numifbs.
+
+ The historic default is 3. If a mid-2007 version of iproute2
+ is used (v2.6.23 or later), it can be set to 0, since needed
+ ifb devices can be dynamically allocated via rtnetlink.
[...]
-static int numifbs = 2;
^^^^^^^^^^^^
+static int numifbs = CONFIG_IFB_COUNT;
module_param(numifbs, int, 0);
MODULE_PARM_DESC(numifbs, "Number of ifb devices");
From: Daniel Borkmann <daniel@iogearbox.net> Date: 2016-01-12 15:35:41
On 01/12/2016 04:19 PM, Daniel Borkmann wrote:
On 01/12/2016 12:56 PM, Lubomir Rintel wrote:
quoted
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Thanks for the set in general, good to see it fixed!
+config IFB_COUNT
+ int "Number of ifb devices to pre-create at init time"
+ depends on IFB
+ default 3
Should that not be 2?
quoted
+ help
+ Static number of ifb devices to be unconditionally pre-created
+ at init time.
+
+ This default value can be overwritten on the kernel command
+ line or with module-parameter ifb.numifbs.
+
+ The historic default is 3. If a mid-2007 version of iproute2
+ is used (v2.6.23 or later), it can be set to 0, since needed
+ ifb devices can be dynamically allocated via rtnetlink.
[...]
quoted
-static int numifbs = 2;
^^^^^^^^^^^^
quoted
+static int numifbs = CONFIG_IFB_COUNT;
module_param(numifbs, int, 0);
MODULE_PARM_DESC(numifbs, "Number of ifb devices");
Btw, perhaps there should also be a pr_info() or the like to warn the user
that relying on modprobe creating these devs is deprecated and scheduled
for removal in future, so they should switch to ip link instead ...
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
---
Changes since v1:
- The default number of devices is 2 not 3.
drivers/net/Kconfig | 21 +++++++++++++++++----
drivers/net/ifb.c | 2 +-
2 files changed, 18 insertions(+), 5 deletions(-)
@@ -110,12 +110,25 @@ config IFBThisisanintermediatedriverthatallowssharingofresources.Tocompilethisdriverasamodule,chooseMhere:themodule-willbecalledifb.Ifyouwanttousemorethanoneifb-deviceatatime,youneedtocompilethisdriverasamodule.-Insteadof'ifb',thedeviceswillthenbecalled'ifb0',-'ifb1'etc.+willbecalledifb.+Lookattheiproute2documentationdirectoryforusageetc+configIFB_COUNT+int"Number of ifb devices to pre-create at init time"+depends onIFB+default2+help+Staticnumberofifbdevicestobeunconditionallypre-created+atinittime.++Thisdefaultvaluecanbeoverwrittenonthekernelcommand+lineorwithmodule-parameterifb.numifbs.++Thehistoricdefaultis3.Ifamid-2007versionofiproute2+isused(v2.6.23orlater),itcanbesetto0,sinceneeded+ifbdevicescanbedynamicallyallocatedviartnetlink.+source"drivers/net/team/Kconfig"configMACVLAN
On Tue, 2016-01-12 at 16:19 +0100, Daniel Borkmann wrote:
On 01/12/2016 12:56 PM, Lubomir Rintel wrote:
quoted
The devices can be created at run-time for quite some time already
and the
load-time device creation collides with attempts to create the
device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop
devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default
for
compatibility.
Let's do that here as well.
Thanks for the set in general, good to see it fixed!
On Tue, 2016-01-12 at 16:35 +0100, Daniel Borkmann wrote:
On 01/12/2016 04:19 PM, Daniel Borkmann wrote:
quoted
On 01/12/2016 12:56 PM, Lubomir Rintel wrote:
...
quoted
quoted
-static int numifbs = 2;
^^^^^^^^^^^^
quoted
+static int numifbs = CONFIG_IFB_COUNT;
module_param(numifbs, int, 0);
MODULE_PARM_DESC(numifbs, "Number of ifb devices");
Btw, perhaps there should also be a pr_info() or the like to warn the user
that relying on modprobe creating these devs is deprecated and scheduled
for removal in future, so they should switch to ip link instead ...
I don't know, is it actually is scheduled for removal?
I was under impression that changes in default behavior users can rely
on are generally near impossible to do since the potential problems
largely outweigh the benefits. The distributions will do the changes in
their kernels anyway and changing behavior on kernel upgrades in random
old systems might be risky.
That said, it's just an impression. I don't follow the development
closely enough to be sure about anything.
Lubo
From: Daniel Borkmann <daniel@iogearbox.net> Date: 2016-01-12 16:04:32
On 01/12/2016 04:43 PM, Lubomir Rintel wrote:
On Tue, 2016-01-12 at 16:35 +0100, Daniel Borkmann wrote:
quoted
On 01/12/2016 04:19 PM, Daniel Borkmann wrote:
quoted
On 01/12/2016 12:56 PM, Lubomir Rintel wrote:
...
quoted
quoted
quoted
-static int numifbs = 2;
^^^^^^^^^^^^
quoted
+static int numifbs = CONFIG_IFB_COUNT;
module_param(numifbs, int, 0);
MODULE_PARM_DESC(numifbs, "Number of ifb devices");
Btw, perhaps there should also be a pr_info() or the like to warn the user
that relying on modprobe creating these devs is deprecated and scheduled
for removal in future, so they should switch to ip link instead ...
I don't know, is it actually is scheduled for removal?
I was under impression that changes in default behavior users can rely
on are generally near impossible to do since the potential problems
largely outweigh the benefits. The distributions will do the changes in
their kernels anyway and changing behavior on kernel upgrades in random
old systems might be risky.
BLK_DEV_LOOP_MIN_COUNT is 8 by default on upstream today, 0 in Fedora kernels
since Fedora 19 (2013) onwards [1] (F18 to F19 made the switch apparently).
If the same happens one day to these options here and all major distros
play along, then perhaps after still long enough time it might be an option
(and if not, people at least switched to use ip link ;)).
That said, it's just an impression. I don't follow the development
closely enough to be sure about anything.
From: Stephen Hemminger <stephen@networkplumber.org> Date: 2016-01-12 18:44:32
On Tue, 12 Jan 2016 07:55:22 -0500
Jamal Hadi Salim [off-list ref] wrote:
On 16-01-12 06:56 AM, Lubomir Rintel wrote:
quoted
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
I guess module options are frowned upon. so:
I would prefer that this were done with a module parameter, the same as dummy.
Only developers build their own configured kernels. Having the value set later
at module load time is preferable.
From: David Miller <davem@davemloft.net> Date: 2016-01-12 20:42:58
Please, when you are asked to make changes to a patch within
a series, always resubmit the entire series freshly, including
the cover letter.
Also, please be mindful of:
http://marc.info/?l=linux-netdev&m=145248145925834&w=2
Thanks.
From: David Miller <davem@davemloft.net> Date: 2016-01-12 20:54:44
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 12 Jan 2016 10:44:37 -0800
On Tue, 12 Jan 2016 07:55:22 -0500
Jamal Hadi Salim [off-list ref] wrote:
quoted
On 16-01-12 06:56 AM, Lubomir Rintel wrote:
quoted
The devices can be created at run-time for quite some time already and the
load-time device creation collides with attempts to create the device of
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block loop devices
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the default for
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
I guess module options are frowned upon. so:
I would prefer that this were done with a module parameter, the same as dummy.
Only developers build their own configured kernels. Having the value set later
at module load time is preferable.
I like this even less, it means tools behave significantly differently
based upon what module options were passed to the kernel.
Module options really should not change kernel behavior like this..
On Tue, 2016-01-12 at 15:54 -0500, David Miller wrote:
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Tue, 12 Jan 2016 10:44:37 -0800
quoted
On Tue, 12 Jan 2016 07:55:22 -0500
Jamal Hadi Salim [off-list ref] wrote:
quoted
On 16-01-12 06:56 AM, Lubomir Rintel wrote:
quoted
The devices can be created at run-time for quite some time
already and the
quoted
quoted
quoted
load-time device creation collides with attempts to create the
device of
quoted
quoted
quoted
the same name:
# rmmod ifb
# ip link add ifb0 type ifb
RTNETLINK answers: File exists
This is pretty much the same situation as was with the block
loop devices
quoted
quoted
quoted
which was solved by adding a build-time configuration that the
distributions could use as they deem fit while keeping the
default for
quoted
quoted
quoted
compatibility.
Let's do that here as well.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
I guess module options are frowned upon. so:
I would prefer that this were done with a module parameter, the
same as dummy.
quoted
Only developers build their own configured kernels. Having the
value set later
quoted
at module load time is preferable.
I like this even less, it means tools behave significantly
differently
based upon what module options were passed to the kernel.
Module options really should not change kernel behavior like this..
The module option is already there. It's defaults (creating the devices
noone asked for and that potentially collide with what the user tried
to create) are what we find bothersome.
Lubo