From: Rishikesh <ris...@li...> - 2007-06-26 13:49:03
|
Serge E. Hallyn wrote: > Quoting Serge E. Hallyn (se...@us...): >> Quoting Subrata Modak (su...@li...): >>> Hi Rishikesh/Sergei, >>> >>> Any fix available for the same ?? ;-) >> Please try the following patch... > > I'm sorry, that should handle archictures without unshare (?) but not > older kernels. > > The following patch adds a check for a 2.6.16 kernel, which it looks > like is where unshare was added. > > BTW, I may be off, but I think the comments for > lib/tst_kvercmp.c:tst_kvercmp() are wrong, aren't they? Doesn't it > return a positive int if arg < current kernel version, and positive int > if arg > current kernel version? Yep i verified it , it is correct arg > kernel version = it is returning negative . arg < kernel version = it is returning positive. Where arg = 2.6.17 , current kernel versions are = 2.6.15 & 2.6.18.8-el5 thanks Rishi > > thanks, > -serge > > diff -Nrup ltp/testcases/kernel/containers/Makefile ltp-patched/testcases/kernel/containers/Makefile > --- ltp/testcases/kernel/containers/Makefile 2007-04-26 13:02:50.000000000 +0200 > +++ ltp-patched/testcases/kernel/containers/Makefile 2007-06-26 04:08:24.000000000 +0200 > @@ -1,14 +1,23 @@ > SUBDIRS = libclone utsname > > -all noltp noltp_check: > - @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done > +CFLAGS += -I../../../include > > -install: > - @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i install ; done > - chmod ugo+x container_test.sh > - ln -f container_test.sh ../../bin/container_test.sh > +check_for_unshare: check_for_unshare.c > + $(CC) -o $@ $< ../../../lib/tst_kvercmp.c $(CFLAGS) > > -clean: > - @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i clean ; done > +all noltp noltp_check: check_for_unshare > + @set -e; if './check_for_unshare' > /dev/null 2>&1; then \ > + for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done \ > + else echo "system does not support unshare"; true; fi > > +install: check_for_unshare > + @set -e; ln -f check_for_unshare ../../bin/check_for_unshare; \ > + if './check_for_unshare' > /dev/null 2>&1; then \ > + for i in $(SUBDIRS); do $(MAKE) -C $$i install ; done; \ > + chmod ugo+x container_test.sh; \ > + ln -f container_test.sh ../../bin/container_test.sh; \ > + else echo "system does not support unshare"; true; fi > > +clean: > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i clean ; done > + rm -f check_for_unshare > diff -Nrup ltp/testcases/kernel/containers/check_for_unshare.c ltp-patched/testcases/kernel/containers/check_for_unshare.c > --- ltp/testcases/kernel/containers/check_for_unshare.c 1970-01-01 01:00:00.000000000 +0100 > +++ ltp-patched/testcases/kernel/containers/check_for_unshare.c 2007-06-26 04:08:52.000000000 +0200 > @@ -0,0 +1,34 @@ > +#include <stdio.h> > +#include <test.h> > + > +int kernel_is_too_old(void) { > + if (tst_kvercmp(2,6,16) < 0) > + return 1; > + return 0; > +} > + > +/* > + * yeah, to make the makefile coding easier, do_check returns > + * 1 if unshare is not supported, 0 if it is > + */ > +#ifndef SYS_unshare > +#ifdef __NR_unshare > +int do_check(void) { return kernel_is_too_old(); } > +#elif __i386__ > +int do_check(void) { return kernel_is_too_old(); } > +#elif __ia64__ > +int do_check(void) { return kernel_is_too_old(); } > +#elif __x86_64__ > +int do_check(void) { return kernel_is_too_old(); } > +#elif __s390x__ || __s390__ > +int do_check(void) { return kernel_is_too_old(); } > +#elif __powerpc__ > +int do_check(void) { return kernel_is_too_old(); } > +#else > +int do_check(void) { return 1; } > +#endif > +#endif > + > +int main() { > + return do_check(); > +} > diff -Nrup ltp/testcases/kernel/containers/container_test.sh ltp-patched/testcases/kernel/containers/container_test.sh > --- ltp/testcases/kernel/containers/container_test.sh 2007-04-26 13:02:50.000000000 +0200 > +++ ltp-patched/testcases/kernel/containers/container_test.sh 2007-06-25 20:27:17.000000000 +0200 > @@ -10,6 +10,12 @@ > # any later version. > > #check_utsns_enabled > +check_for_unshare > +if [ $? -eq 1 ]; then > + echo "Unshare not supported. Not running container tests" > + exit 0 > +fi > + > #if [ $? -eq 0 ]; then > echo "Running utsns tests." > runutstest.sh |