* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
@ 2015-10-30 8:57 shuang.qiu
2015-11-04 12:49 ` Cyril Hrubis
2015-11-06 17:16 ` Jiri Jaburek
0 siblings, 2 replies; 10+ messages in thread
From: shuang.qiu @ 2015-10-30 8:57 UTC (permalink / raw)
To: ltp
From: Shuang Qiu <shuang.qiu@oracle.com>
If dummy is compiled as module in kernel,it is loaded dynamically when
adding dummy device.And it will also create a default dummy interface.So
the sysfs_after will have one more interface than sysfs_before which
makes testcase #3 failed.Loading dummy module before collecting sysfs
interface to workaround such issue.
Signed-off-by: Shuang Qiu <shuang.qiu@oracle.com>
---
testcases/kernel/containers/netns/netns_sysfs.sh | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
index 7dea52b..b5791bd 100755
--- a/testcases/kernel/containers/netns/netns_sysfs.sh
+++ b/testcases/kernel/containers/netns/netns_sysfs.sh
@@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
tst_brkm TBROK "unable to create a new network namespace"
fi
TST_CLEANUP=cleanup
+
+#Load dummy module before collecting sysfs interface
+lsmod | grep dummy || modprobe dummy
+[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
ls /sys/class/net >sysfs_before
ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
--
1.7.7
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-10-30 8:57 [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface shuang.qiu
@ 2015-11-04 12:49 ` Cyril Hrubis
2015-11-05 4:46 ` Shuang Qiu
2015-11-06 17:16 ` Jiri Jaburek
1 sibling, 1 reply; 10+ messages in thread
From: Cyril Hrubis @ 2015-11-04 12:49 UTC (permalink / raw)
To: ltp
Hi!
> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
> index 7dea52b..b5791bd 100755
> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
> tst_brkm TBROK "unable to create a new network namespace"
> fi
> TST_CLEANUP=cleanup
> +
> +#Load dummy module before collecting sysfs interface
> +lsmod | grep dummy || modprobe dummy
> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
But this will fail when dummy wasn't compiled in the kernel, right?
Since modprobe will exit with 1 when module couldn't be found. So we
should either just call 'modprobe dummy' and ignore the return value or
change the code to ignore the default dummy interface.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-04 12:49 ` Cyril Hrubis
@ 2015-11-05 4:46 ` Shuang Qiu
2015-11-05 14:05 ` Cyril Hrubis
0 siblings, 1 reply; 10+ messages in thread
From: Shuang Qiu @ 2015-11-05 4:46 UTC (permalink / raw)
To: ltp
Hi Cyril,
Thanks for review.
On 11/04/2015 08:49 PM, Cyril Hrubis wrote:
> Hi!
>> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
>> index 7dea52b..b5791bd 100755
>> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
>> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
>> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
>> tst_brkm TBROK "unable to create a new network namespace"
>> fi
>> TST_CLEANUP=cleanup
>> +
>> +#Load dummy module before collecting sysfs interface
>> +lsmod | grep dummy || modprobe dummy
>> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
> But this will fail when dummy wasn't compiled in the kernel, right?
Yes,if dummy wasn't compiled in the kernel,it will also fail when adding
dummy device in the next step:
===cut===
ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
tst_brkm TBROK "failed to add a new dummy device"
===cut===
>
> Since modprobe will exit with 1 when module couldn't be found. So we
> should either just call 'modprobe dummy' and ignore the return value or
> change the code to ignore the default dummy interface.
I prefer 'modprobe dummy' and ignore the return value,because I'm not
sure whether there is any other default dummy interface name except
"dummy0".
Thanks
Shuang
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-05 4:46 ` Shuang Qiu
@ 2015-11-05 14:05 ` Cyril Hrubis
2015-11-06 10:28 ` Shuang Qiu
0 siblings, 1 reply; 10+ messages in thread
From: Cyril Hrubis @ 2015-11-05 14:05 UTC (permalink / raw)
To: ltp
Hi!
> >> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
> >> index 7dea52b..b5791bd 100755
> >> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
> >> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
> >> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
> >> tst_brkm TBROK "unable to create a new network namespace"
> >> fi
> >> TST_CLEANUP=cleanup
> >> +
> >> +#Load dummy module before collecting sysfs interface
> >> +lsmod | grep dummy || modprobe dummy
> >> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
> > But this will fail when dummy wasn't compiled in the kernel, right?
> Yes,if dummy wasn't compiled in the kernel,it will also fail when adding
> dummy device in the next step:
> ===cut===
> ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
> tst_brkm TBROK "failed to add a new dummy device"
> ===cut===
I meaned "wasn't compiled as module" i.e. compiled in kernel, sorry for
the confusion. In that case this would work fine but the modprobe would
fail.
> > Since modprobe will exit with 1 when module couldn't be found. So we
> > should either just call 'modprobe dummy' and ignore the return value or
> > change the code to ignore the default dummy interface.
> I prefer 'modprobe dummy' and ignore the return value,because I'm not
> sure whether there is any other default dummy interface name except
> "dummy0".
Sounds good to me.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-05 14:05 ` Cyril Hrubis
@ 2015-11-06 10:28 ` Shuang Qiu
0 siblings, 0 replies; 10+ messages in thread
From: Shuang Qiu @ 2015-11-06 10:28 UTC (permalink / raw)
To: ltp
On 11/05/2015 10:05 PM, Cyril Hrubis wrote:
> Hi!
>>>> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
>>>> index 7dea52b..b5791bd 100755
>>>> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
>>>> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
>>>> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
>>>> tst_brkm TBROK "unable to create a new network namespace"
>>>> fi
>>>> TST_CLEANUP=cleanup
>>>> +
>>>> +#Load dummy module before collecting sysfs interface
>>>> +lsmod | grep dummy || modprobe dummy
>>>> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
>>> But this will fail when dummy wasn't compiled in the kernel, right?
>> Yes,if dummy wasn't compiled in the kernel,it will also fail when adding
>> dummy device in the next step:
>> ===cut===
>> ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
>> tst_brkm TBROK "failed to add a new dummy device"
>> ===cut===
> I meaned "wasn't compiled as module" i.e. compiled in kernel, sorry for
> the confusion. In that case this would work fine but the modprobe would
> fail.
Aha,yes,thanks for clarification.
>
>>> Since modprobe will exit with 1 when module couldn't be found. So we
>>> should either just call 'modprobe dummy' and ignore the return value or
>>> change the code to ignore the default dummy interface.
>> I prefer 'modprobe dummy' and ignore the return value,because I'm not
>> sure whether there is any other default dummy interface name except
>> "dummy0".
> Sounds good to me.
ok,I will submit another patch.
Thanks
Shuang
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-10-30 8:57 [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface shuang.qiu
2015-11-04 12:49 ` Cyril Hrubis
@ 2015-11-06 17:16 ` Jiri Jaburek
2015-11-09 14:14 ` Cyril Hrubis
2015-11-10 4:03 ` Shuang Qiu
1 sibling, 2 replies; 10+ messages in thread
From: Jiri Jaburek @ 2015-11-06 17:16 UTC (permalink / raw)
To: ltp
On 10/30/2015 09:57 AM, shuang.qiu@oracle.com wrote:
> From: Shuang Qiu <shuang.qiu@oracle.com>
>
> If dummy is compiled as module in kernel,it is loaded dynamically when
> adding dummy device.And it will also create a default dummy interface.So
> the sysfs_after will have one more interface than sysfs_before which
> makes testcase #3 failed.Loading dummy module before collecting sysfs
> interface to workaround such issue.
I cannot reproduce this on any RHEL or Fedora system, but I can
reproduce it on Debian (Jessie). If we accounted only for the module
version of 'dummy', it could be countered by adding
options dummy numdummies=0
to any /etc/modprobe.d/* config (temporarily), however for the built-in
version of the module, such option would need to be passed via kernel
cmdline.
We could check [ -d /sys/module/dummy ] and if it exists, presume that
no extra setup is necessary, because
1) if it's a module, our creation of additional dummy interface won't
affect existing interfaces as dummy0 is created only on insmod
(dummy_init_one() is called during __init with numdummies=1)
2) if it's built in, well .. see (1)
otherwise we can try modprobing it and if it fails, end with CONF.
However - wouldn't it be simply easier to add an exception for dummy0
during the comparison check? The test operates with iface names other
than dummy0, so a possible namespace bug would be found anyway.
(See attached diff.)
However the (quite possibly) best solution would be a one which cleans
up after itself, so maybe the [ -d /sys/module/dummy ] solution with
explicit modprobe / modprobe -r would work better.
Your choice. :)
Jiri
> Signed-off-by: Shuang Qiu <shuang.qiu@oracle.com>
> ---
> testcases/kernel/containers/netns/netns_sysfs.sh | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
> index 7dea52b..b5791bd 100755
> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
> tst_brkm TBROK "unable to create a new network namespace"
> fi
> TST_CLEANUP=cleanup
> +
> +#Load dummy module before collecting sysfs interface
> +lsmod | grep dummy || modprobe dummy
> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
> ls /sys/class/net >sysfs_before
>
> ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
>
-------------- next part --------------
diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
index 7dea52b..e725a50 100755
--- a/testcases/kernel/containers/netns/netns_sysfs.sh
+++ b/testcases/kernel/containers/netns/netns_sysfs.sh
@@ -47,7 +47,10 @@ if [ $? -eq 1 ]; then
tst_brkm TBROK "unable to create a new network namespace"
fi
TST_CLEANUP=cleanup
-ls /sys/class/net >sysfs_before
+
+# exclude dummy0 from comparison as it gets automatically created by the
+# dummy device driver upon insmod/modprobe (during ip link add)
+ls /sys/class/net | grep -v dummy0 >sysfs_before
ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
ns_exec $NS_HANDLE $NS_TYPE ip link add $DUMMYDEV type dummy || \
@@ -84,7 +87,7 @@ fi
# TEST CASE #3
-ls /sys/class/net >sysfs_after
+ls /sys/class/net | grep -v dummy0 >sysfs_after
diff sysfs_before sysfs_after
if [ $? -eq 0 ]; then
tst_resm TPASS "sysfs not affected by a separate namespace"
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-06 17:16 ` Jiri Jaburek
@ 2015-11-09 14:14 ` Cyril Hrubis
2015-11-09 15:20 ` Jiri Jaburek
2015-11-10 4:03 ` Shuang Qiu
1 sibling, 1 reply; 10+ messages in thread
From: Cyril Hrubis @ 2015-11-09 14:14 UTC (permalink / raw)
To: ltp
Hi!
> However - wouldn't it be simply easier to add an exception for dummy0
> during the comparison check? The test operates with iface names other
> than dummy0, so a possible namespace bug would be found anyway.
> (See attached diff.)
>
> However the (quite possibly) best solution would be a one which cleans
> up after itself, so maybe the [ -d /sys/module/dummy ] solution with
> explicit modprobe / modprobe -r would work better.
Either one works for me.
> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
> index 7dea52b..e725a50 100755
> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
> @@ -47,7 +47,10 @@ if [ $? -eq 1 ]; then
> tst_brkm TBROK "unable to create a new network namespace"
> fi
> TST_CLEANUP=cleanup
> -ls /sys/class/net >sysfs_before
> +
> +# exclude dummy0 from comparison as it gets automatically created by the
> +# dummy device driver upon insmod/modprobe (during ip link add)
> +ls /sys/class/net | grep -v dummy0 >sysfs_before
Maybe we should do grep -v dummy[0-9].* in order to skipp all dummy
interfaces if someone changes the number of interfaces created. If we
decide to go this way.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-09 14:14 ` Cyril Hrubis
@ 2015-11-09 15:20 ` Jiri Jaburek
2015-11-09 15:26 ` Cyril Hrubis
0 siblings, 1 reply; 10+ messages in thread
From: Jiri Jaburek @ 2015-11-09 15:20 UTC (permalink / raw)
To: ltp
On 11/09/2015 03:14 PM, Cyril Hrubis wrote:
> Hi!
>> However - wouldn't it be simply easier to add an exception for dummy0
>> during the comparison check? The test operates with iface names other
>> than dummy0, so a possible namespace bug would be found anyway.
>> (See attached diff.)
>>
>> However the (quite possibly) best solution would be a one which cleans
>> up after itself, so maybe the [ -d /sys/module/dummy ] solution with
>> explicit modprobe / modprobe -r would work better.
>
> Either one works for me.
I would send a patch with the more "clean" solution, but I'm not sure
how to modularize the cleanup function here as I need to add modprobe -r
only if the modprobe was previously done.
Furthermore, doing it that way would make the test impossible to run
multiple times in parallel.
So it boils down to either doing a preemptive modprobe 2>/dev/null or
ignoring dummy[0-9]+, it's up to you. :)
>
>> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
>> index 7dea52b..e725a50 100755
>> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
>> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
>> @@ -47,7 +47,10 @@ if [ $? -eq 1 ]; then
>> tst_brkm TBROK "unable to create a new network namespace"
>> fi
>> TST_CLEANUP=cleanup
>> -ls /sys/class/net >sysfs_before
>> +
>> +# exclude dummy0 from comparison as it gets automatically created by the
>> +# dummy device driver upon insmod/modprobe (during ip link add)
>> +ls /sys/class/net | grep -v dummy0 >sysfs_before
>
> Maybe we should do grep -v dummy[0-9].* in order to skipp all dummy
> interfaces if someone changes the number of interfaces created. If we
> decide to go this way.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-containers-netns-exclude-dummy0-from-before-after-co.patch
Type: text/x-patch
Size: 1338 bytes
Desc: not available
URL: <http://lists.linux.it/pipermail/ltp/attachments/20151109/7f8a8c7c/attachment-0001.bin>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-09 15:20 ` Jiri Jaburek
@ 2015-11-09 15:26 ` Cyril Hrubis
0 siblings, 0 replies; 10+ messages in thread
From: Cyril Hrubis @ 2015-11-09 15:26 UTC (permalink / raw)
To: ltp
Hi!
> So it boils down to either doing a preemptive modprobe 2>/dev/null or
> ignoring dummy[0-9]+, it's up to you. :)
I don't really care :), both are valid solutions. Maybe we should flip a
coin and decide.
Well since you attached a patch to this email allready I will spare us
from doubt and simply apply it, thanks.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 10+ messages in thread
* [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface
2015-11-06 17:16 ` Jiri Jaburek
2015-11-09 14:14 ` Cyril Hrubis
@ 2015-11-10 4:03 ` Shuang Qiu
1 sibling, 0 replies; 10+ messages in thread
From: Shuang Qiu @ 2015-11-10 4:03 UTC (permalink / raw)
To: ltp
Hi Jiri,
On 11/07/2015 01:16 AM, Jiri Jaburek wrote:
> On 10/30/2015 09:57 AM, shuang.qiu@oracle.com wrote:
>> From: Shuang Qiu <shuang.qiu@oracle.com>
>>
>> If dummy is compiled as module in kernel,it is loaded dynamically when
>> adding dummy device.And it will also create a default dummy interface.So
>> the sysfs_after will have one more interface than sysfs_before which
>> makes testcase #3 failed.Loading dummy module before collecting sysfs
>> interface to workaround such issue.
> I cannot reproduce this on any RHEL or Fedora system, but I can
> reproduce it on Debian (Jessie). If we accounted only for the module
> version of 'dummy', it could be countered by adding
>
> options dummy numdummies=0
>
> to any /etc/modprobe.d/* config (temporarily), however for the built-in
> version of the module, such option would need to be passed via kernel
> cmdline.
>
> We could check [ -d /sys/module/dummy ] and if it exists, presume that
> no extra setup is necessary, because
>
> 1) if it's a module, our creation of additional dummy interface won't
> affect existing interfaces as dummy0 is created only on insmod
> (dummy_init_one() is called during __init with numdummies=1)
> 2) if it's built in, well .. see (1)
>
> otherwise we can try modprobing it and if it fails, end with CONF.
>
> However - wouldn't it be simply easier to add an exception for dummy0
> during the comparison check? The test operates with iface names other
> than dummy0, so a possible namespace bug would be found anyway.
> (See attached diff.)
I did not learn dummy module much before and not sure if there is a
specify iface name.
As you explained,we will have a expect name and may find a namespace
bug,so I also prefer your way.
Thanks
Shuang
>
> However the (quite possibly) best solution would be a one which cleans
> up after itself, so maybe the [ -d /sys/module/dummy ] solution with
> explicit modprobe / modprobe -r would work better.
>
> Your choice. :)
>
> Jiri
>
>> Signed-off-by: Shuang Qiu <shuang.qiu@oracle.com>
>> ---
>> testcases/kernel/containers/netns/netns_sysfs.sh | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/testcases/kernel/containers/netns/netns_sysfs.sh b/testcases/kernel/containers/netns/netns_sysfs.sh
>> index 7dea52b..b5791bd 100755
>> --- a/testcases/kernel/containers/netns/netns_sysfs.sh
>> +++ b/testcases/kernel/containers/netns/netns_sysfs.sh
>> @@ -47,6 +47,10 @@ if [ $? -eq 1 ]; then
>> tst_brkm TBROK "unable to create a new network namespace"
>> fi
>> TST_CLEANUP=cleanup
>> +
>> +#Load dummy module before collecting sysfs interface
>> +lsmod | grep dummy || modprobe dummy
>> +[ $? -eq 0 ] || tst_brkm TBROK "failed to load dummy module"
>> ls /sys/class/net >sysfs_before
>>
>> ns_exec $NS_HANDLE $NS_TYPE mount --make-rprivate /sys
>>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-11-10 4:03 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-30 8:57 [LTP] [PATCH] containers/netns/netns_sysfs.sh:load dummy module before collecting sysfs interface shuang.qiu
2015-11-04 12:49 ` Cyril Hrubis
2015-11-05 4:46 ` Shuang Qiu
2015-11-05 14:05 ` Cyril Hrubis
2015-11-06 10:28 ` Shuang Qiu
2015-11-06 17:16 ` Jiri Jaburek
2015-11-09 14:14 ` Cyril Hrubis
2015-11-09 15:20 ` Jiri Jaburek
2015-11-09 15:26 ` Cyril Hrubis
2015-11-10 4:03 ` Shuang Qiu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox