OpenVZ Forum - RDF feed
type: channel
items: [RFC][PATCH 0/5] uts namespaces: Introduction
items: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
items: [RFC][PATCH 5/5] uts namespaces: Enable UTS namespaces debugging
items: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
items: [RFC][PATCH 3/5] uts namespaces: Use init uts_namespace when appropriate
items: Re: [RFC][PATCH 0/5] uts namespaces: Introduction
items: Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
items: Re: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces

[RFC][PATCH 0/5] uts namespaces: Introduction
type: item
description: Introduce utsname namespaces. Instead of a single system_utsname containing hostname domainname etc, a process can request it's copy of the uts info to be cloned. The data will be copied from it's original, but any further changes will not be seen by processes which are not it's children, and vice versa. This is useful, for instance, for vserver/openvz, which can now clone a new uts namespace for each new virtual server. This patchset is based on Kirill Korotaev's Mar 24 submission, taking comments (in particular from James Morris and Eric Biederman) into account. Some performance results are attached. I was mainly curious whether it would be worth putting the task_struct->uts_ns pointer inside a #ifdef CONFIG_UTS_NS. The result show that leaving it in when CONFIG_UTS_NS=n has negligable performance impact, so that is the approach this patch takes. -serge Performance testing was done on a 2-cpu hyperthreaded x86 box with 16G ram. The following tests were run: dbench (20 times, four clients, on reiser fs non-isolated partition) tbench (20 times, 5 connections) kernbench (20 times) reaim (20 times ranging from 1 to 15 users) They were run on 2.6.17-rc1: pristine patched, but with !CONFIG_UTS_NS ("disabled") patched with CONFIG_UTS_NS=y ("enabled") All results are presented as means +/- 95% confidence interval. Dbench results: pristine: 387.080727 +/- 9.344585 patched disabled: 389.524364 +/- 9.574921 patched enabled: 370.155600 +/- 30.127808 Tbench results: pristine: 388.940100 +/- 18.095104 patched disabled: 389.173700 +/- 23.658035 patched enabled: 394.333200 +/- 25.813393 Kernbench results: pristine: 70.317500 +/- 0.210833 patched, disabled: 70.860000 +/- 0.179292 patched, enabled: 70.346500 +/- 0.184784 Reaim results: pristine: Nclients Mean 95% CI 1 106080.000000 11327.896029 3 236057.142000 18205.544810 5 247867.136000 23536.800062 7 265370.000000 21284.335743 9 262969.936000 18225.497529 11 278256.000000 6230.342816 13 284288.016000 8924.589388 15 286987.170000…
creator: serue
date: 2006-04-07T18:36:00-00:00

[RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: This patch defines the uts namespace and some manipulators. Adds the uts namespace to task_struct, and initializes a system-wide init namespace which will continue to be used when it makes sense. Signed-off-by: Serge E. Hallyn <serue@us.ibm.com> --- include/linux/init_task.h | 2 + include/linux/sched.h | 2 + include/linux/utsname.h | 40 +++++++++++++++++++++++++- init/Kconfig | 8 +++++ init/version.c | 70 ++++++++++++++++++++++++++++++++++++++++----- kernel/exit.c | 2 + kernel/fork.c | 9 +++++- 7 files changed, 122 insertions(+), 11 deletions(-) 14c326d603d88d9ed40a1ddafbf23fc3da68a645 diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 41ecbb8..21b1751 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h @@ -3,6 +3,7 @@ #include <linux/file.h> #include <linux/rcupdate.h> +#include <linux/utsname.h> #define INIT_FDTABLE \ { \ @@ -123,6 +124,7 @@ extern struct group_info init_groups; .journal_info = NULL, \ .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ .fs_excl = ATOMIC_INIT(0), \ + .uts_ns = &init_uts_ns, \ } diff --git a/include/linux/sched.h b/include/linux/sched.h index 541f482..97c7990 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -684,6 +684,7 @@ static inline void prefetch_stack(struct struct audit_context; /* See audit.c */ struct mempolicy; +struct uts_namespace; enum sleep_type { SLEEP_NORMAL, @@ -807,6 +808,7 @@ struct task_struct { struct files_struct *files; /* namespace */ struct namespace *namespace; + struct uts_namespace *uts_ns; /* signal handlers */ struct signal_struct *signal; struct sighand_struct *sighand; diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 13e1da0..cc28ac5 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h @@ -1,5 +1,8 @@ #ifndef _LINUX_UTSNAME_H #define _LINUX_UTSNAME_H +#include <linux/sched.h> +#include <linux/kref.h> +#include <asm/atomic.h> #define __OLD_UTS_LEN 8 @@ -30,7 +33,42 @@ struct new_utsname { char domainname[65]; }; -…
creator: serue
date: 2006-04-07T18:36:00-00:00

[RFC][PATCH 5/5] uts namespaces: Enable UTS namespaces debugging
type: item
description: Adds a /uts directory in debugfs which exposes the current UTS namespace. If a file in this directory is changed, it will unshare and modify the UTS namespace of the current process. Clearly this is purely for testing purposes. Testing namespaces in this fashion allows us to postpone concensus on a namespace unsharing mechanism. Signed-off-by: Cedric Le Goater <clg@fr.ibm.com> --- fs/debugfs/Makefile | 2 - fs/debugfs/uts.c | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/Kconfig.debug | 11 +++ 3 files changed, 182 insertions(+), 1 deletions(-) create mode 100644 fs/debugfs/uts.c 67f3dc966381313f31ee3643183161a8c230199b diff --git a/fs/debugfs/Makefile b/fs/debugfs/Makefile index 840c456..e5df8b9 100644 --- a/fs/debugfs/Makefile +++ b/fs/debugfs/Makefile @@ -1,4 +1,4 @@ debugfs-objs := inode.o file.o obj-$(CONFIG_DEBUG_FS) += debugfs.o - +obj-$(CONFIG_DEBUG_UTS_NS) += uts.o diff --git a/fs/debugfs/uts.c b/fs/debugfs/uts.c new file mode 100644 index 0000000..45b29af --- /dev/null +++ b/fs/debugfs/uts.c @@ -0,0 +1,170 @@ +/* + * uts.c - adds a uts/ directory to debug UTS namespaces + * + * Copyright (C) 2006 IBM + * + * Author: Cedric Le Goater <clg@fr.ibm.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/pagemap.h> +#include <linux/debugfs.h> +#include <linux/utsname.h> + +static struct dentry *uts_dentry; +static struct dentry *uts_dentry_sysname; +static struct dentry *uts_dentry_nodename; +static struct dentry *uts_dentry_release; +static struct dentry *uts_dentry_version; +static struct dentry *uts_dentry_machine; +static struct dentry *uts_dentry_domainname; + +static inline char* uts_buffer(struct dentry *dentry) +{ + if (dentry == uts_dentry_sysname) + return utsname()->sysname; + else if (dentry == uts_de…
creator: serue
date: 2006-04-07T18:36:00-00:00

[RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
type: item
description: Replace references to system_utsname to the per-process uts namespace where appropriate. This includes things like uname. Signed-off-by: Serge E. Hallyn <serue@us.ibm.com> --- arch/alpha/kernel/osf_sys.c | 24 ++++++++++++------------ arch/i386/kernel/sys_i386.c | 12 ++++++------ arch/ia64/sn/kernel/sn2/sn_hwperf.c | 2 +- arch/m32r/kernel/sys_m32r.c | 2 +- arch/mips/kernel/linux32.c | 2 +- arch/mips/kernel/syscall.c | 18 +++++++++--------- arch/mips/kernel/sysirix.c | 12 ++++++------ arch/parisc/hpux/sys_hpux.c | 22 +++++++++++----------- arch/powerpc/kernel/syscalls.c | 14 +++++++------- arch/sh/kernel/sys_sh.c | 2 +- arch/sh64/kernel/sys_sh64.c | 2 +- arch/sparc/kernel/sys_sparc.c | 4 ++-- arch/sparc/kernel/sys_sunos.c | 10 +++++----- arch/sparc64/kernel/sys_sparc.c | 4 ++-- arch/sparc64/kernel/sys_sunos32.c | 10 +++++----- arch/sparc64/solaris/misc.c | 6 +++--- arch/um/drivers/mconsole_kern.c | 6 +++--- arch/um/kernel/syscall_kern.c | 12 ++++++------ arch/um/sys-x86_64/syscalls.c | 2 +- arch/x86_64/ia32/sys_ia32.c | 10 +++++----- arch/x86_64/kernel/sys_x86_64.c | 2 +- arch/xtensa/kernel/syscalls.c | 2 +- drivers/char/random.c | 4 ++-- fs/cifs/connect.c | 28 ++++++++++++++-------------- fs/exec.c | 2 +- fs/lockd/clntproc.c | 4 ++-- fs/lockd/mon.c | 2 +- fs/lockd/svclock.c | 2 +- fs/lockd/xdr.c | 2 +- fs/nfs/nfsroot.c | 2 +- include/linux/lockd/lockd.h | 2 +- kernel/sys.c | 14 +++++++------- 32 files changed, 121 insertions(+), 121 deletions(-) 92a8cf13a78415ed5ec9068698b5039ddcc00210 diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 31afe3d..b793b96 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -402,15 +402,15 @@ osf_utsname(char __user *name) down_read(&uts_sem); error = -EFAULT; - if (copy_to_user(name + 0, system_utsname.sysname, 32)) + if (copy_to_user(name + 0, utsname()->sysname, 32)) goto out; - if (copy_to_user(name + 32, system_utsname.nodename, 32)) + if (copy_to_user(name + 32, utsname()->nodenam…
creator: serue
date: 2006-04-07T18:36:00-00:00

[RFC][PATCH 3/5] uts namespaces: Use init uts_namespace when appropriate
type: item
description: In some places, particularly drivers and __init code, the init uts namespace is the appropriate one to use. This patch replaces those with a direct reference to init_uts_ns.name. Note that we can drop this patch and simply do #define system_utsname (init_uts_ns.name) however by using this patch we make explicit, for the sake of review, those places where we do and do not use the utsname namespace. Signed-off-by: Serge E. Hallyn <serue@us.ibm.com> --- arch/arm/kernel/setup.c | 2 +- arch/arm26/kernel/setup.c | 2 +- arch/cris/kernel/setup.c | 2 +- arch/i386/kernel/process.c | 6 +++--- arch/i386/kernel/traps.c | 6 +++--- arch/powerpc/kernel/process.c | 2 +- arch/powerpc/kernel/setup_64.c | 2 +- arch/powerpc/platforms/pseries/setup.c | 2 +- arch/sh/kernel/setup.c | 2 +- arch/um/kernel/um_arch.c | 6 +++--- arch/um/sys-x86_64/sysrq.c | 2 +- arch/x86_64/kernel/process.c | 6 +++--- drivers/infiniband/hw/ipath/ipath_verbs.c | 2 +- drivers/parisc/led.c | 2 +- drivers/scsi/lpfc/lpfc_ct.c | 8 ++++---- drivers/usb/core/hcd.c | 4 ++-- drivers/usb/gadget/ether.c | 2 +- drivers/usb/gadget/file_storage.c | 2 +- drivers/usb/gadget/serial.c | 2 +- drivers/usb/gadget/zero.c | 2 +- include/asm-i386/bugs.h | 2 +- include/asm-i386/elf.h | 2 +- include/asm-sh/bugs.h | 2 +- kernel/power/snapshot.c | 10 +++++----- net/ipv4/ipconfig.c | 16 ++++++++-------- net/sunrpc/clnt.c | 4 ++-- sound/core/info_oss.c | 10 +++++----- 27 files changed, 55 insertions(+), 55 deletions(-) ef54ab30a75ae83207b385090d3f1ff6c912f0d5 diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 4375284..647c516 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -319,7 +319,7 @@ static void __init setup_processor(void) cpu_name, processor_id, (int)processor_id & 15, proc_arch[cpu_architecture()]); - sprintf(system_utsname.machine, "%s%c", list->arch_name, ENDIANNESS); + sprintf(init_uts_ns.name.machine, "%s%c", list->arch_name, ENDIANNESS); sprintf(elf_platform, "%s%c", list->elf_name, ENDIA…
creator: serue
date: 2006-04-07T18:36:00-00:00

Re: [RFC][PATCH 0/5] uts namespaces: Introduction
type: item
description: "Serge E. Hallyn" <serue@us.ibm.com> writes: > Introduce utsname namespaces. Instead of a single system_utsname > containing hostname domainname etc, a process can request it's > copy of the uts info to be cloned. The data will be copied from > it's original, but any further changes will not be seen by processes > which are not it's children, and vice versa. > > This is useful, for instance, for vserver/openvz, which can now clone > a new uts namespace for each new virtual server. > > This patchset is based on Kirill Korotaev's Mar 24 submission, taking > comments (in particular from James Morris and Eric Biederman) into > account. > > Some performance results are attached. I was mainly curious whether > it would be worth putting the task_struct->uts_ns pointer inside > a #ifdef CONFIG_UTS_NS. The result show that leaving it in when > CONFIG_UTS_NS=n has negligable performance impact, so that is the > approach this patch takes. Ok. This looks like the best version so far. I like the utsname() function thing to shorten the idiom of current->uts_ns->name. We probably want to introduce utsname() and an init_utsname() before any of the other changes, and then perform the substitutions, before we actually change the code so the patchset can make it through a git-bisect. This will also allows for something that can be put in compat-mac.h for backports of anything that cares. Eric
creator: ebiederm
date: 2006-04-07T19:06:09-00:00

Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: On Fri, Apr 07, 2006 at 01:36:00PM -0500, Serge E. Hallyn wrote: > This patch defines the uts namespace and some manipulators. > Adds the uts namespace to task_struct, and initializes a > system-wide init namespace which will continue to be used when > it makes sense. It also kills system_utsname so you left the kernel uncompileable. Can you kill it later? > diff --git a/include/linux/utsname.h b/include/linux/utsname.h > index 13e1da0..cc28ac5 100644 > --- a/include/linux/utsname.h > +++ b/include/linux/utsname.h > @@ -1,5 +1,8 @@ > #ifndef _LINUX_UTSNAME_H > #define _LINUX_UTSNAME_H You can kill this include > +#include <linux/sched.h> if you move this static inline to sched.h + > +static inline struct new_utsname *utsname(void) > +{ > + return &current->uts_ns->name; > +} And since it operates on &current that may make sense. Sam
creator: Sam Ravnborg
date: 2006-04-07T19:13:59-00:00

Re: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
type: item
description: On Fri, Apr 07, 2006 at 01:36:00PM -0500, Serge E. Hallyn wrote: > Replace references to system_utsname to the per-process uts namespace > where appropriate. This includes things like uname. If you define helpers that operates on system_utsname and then apply this patch the kernel will still compile, and only later you can introduce the new stuff. Sam
creator: Sam Ravnborg
date: 2006-04-07T19:17:42-00:00

Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: Quoting Sam Ravnborg (sam@ravnborg.org): > On Fri, Apr 07, 2006 at 01:36:00PM -0500, Serge E. Hallyn wrote: > > This patch defines the uts namespace and some manipulators. > > Adds the uts namespace to task_struct, and initializes a > > system-wide init namespace which will continue to be used when > > it makes sense. > It also kills system_utsname so you left the kernel uncompileable. > Can you kill it later? I can insert a #define system_utsname (init_uts_ns.name) in patch 1 and nuke it at patch 3. -serge
creator: serue
date: 2006-04-07T19:20:52-00:00

Re: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
type: item
description: Quoting Sam Ravnborg (sam@ravnborg.org): > On Fri, Apr 07, 2006 at 01:36:00PM -0500, Serge E. Hallyn wrote: > > Replace references to system_utsname to the per-process uts namespace > > where appropriate. This includes things like uname. > If you define helpers that operates on system_utsname and then apply > this patch the kernel will still compile, and only later you can > introduce the new stuff. Ok, will try structuring the patches that way. thanks, -serge
creator: serue
date: 2006-04-07T19:25:31-00:00

Re: [RFC][PATCH 0/5] uts namespaces: Introduction
type: item
description: Quoting Eric W. Biederman (ebiederm@xmission.com): > "Serge E. Hallyn" <serue@us.ibm.com> writes: > > > Introduce utsname namespaces. Instead of a single system_utsname > > containing hostname domainname etc, a process can request it's > > copy of the uts info to be cloned. The data will be copied from > > it's original, but any further changes will not be seen by processes > > which are not it's children, and vice versa. > > > > This is useful, for instance, for vserver/openvz, which can now clone > > a new uts namespace for each new virtual server. > > > > This patchset is based on Kirill Korotaev's Mar 24 submission, taking > > comments (in particular from James Morris and Eric Biederman) into > > account. > > > > Some performance results are attached. I was mainly curious whether > > it would be worth putting the task_struct->uts_ns pointer inside > > a #ifdef CONFIG_UTS_NS. The result show that leaving it in when > > CONFIG_UTS_NS=n has negligable performance impact, so that is the > > approach this patch takes. > > Ok. This looks like the best version so far. > > I like the utsname() function thing to shorten the > idiom of current->uts_ns->name. > > We probably want to introduce utsname() and an init_utsname() > before any of the other changes, and then perform the substitutions, This is the same as what Sam is saying, right? Just making sure I understand. > before we actually change the code so the patchset can make it > through a git-bisect. This will also allows for something Ok, I've finally got the rest of git doing my bidding, I'll go read up on git-bisect. thanks for the comments, -serge
creator: serue
date: 2006-04-07T19:28:00-00:00

Re: [RFC][PATCH 0/5] uts namespaces: Introduction
type: item
description: "Serge E. Hallyn" <serue@us.ibm.com> writes: > Quoting Eric W. Biederman (ebiederm@xmission.com): >> "Serge E. Hallyn" <serue@us.ibm.com> writes: >> >> > Introduce utsname namespaces. Instead of a single system_utsname >> > containing hostname domainname etc, a process can request it's >> > copy of the uts info to be cloned. The data will be copied from >> > it's original, but any further changes will not be seen by processes >> > which are not it's children, and vice versa. >> > >> > This is useful, for instance, for vserver/openvz, which can now clone >> > a new uts namespace for each new virtual server. >> > >> > This patchset is based on Kirill Korotaev's Mar 24 submission, taking >> > comments (in particular from James Morris and Eric Biederman) into >> > account. >> > >> > Some performance results are attached. I was mainly curious whether >> > it would be worth putting the task_struct->uts_ns pointer inside >> > a #ifdef CONFIG_UTS_NS. The result show that leaving it in when >> > CONFIG_UTS_NS=n has negligable performance impact, so that is the >> > approach this patch takes. >> >> Ok. This looks like the best version so far. >> >> I like the utsname() function thing to shorten the >> idiom of current->uts_ns->name. >> >> We probably want to introduce utsname() and an init_utsname() >> before any of the other changes, and then perform the substitutions, > > This is the same as what Sam is saying, right? Just making sure I > understand. Yes. >> before we actually change the code so the patchset can make it >> through a git-bisect. This will also allows for something > > Ok, I've finally got the rest of git doing my bidding, I'll go read > up on git-bisect. Basically git-bisect is an automated binary search through patches to help find bugs. If you ever can't compile at an intermediate patch git-bisect and other people walking through the patches looking for bugs won't like it. It's not mandatory that you never break anything in a patchset, but it is much frien…
creator: ebiederm
date: 2006-04-07T19:39:20-00:00

Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: Quoting Sam Ravnborg (sam@ravnborg.org): > > diff --git a/include/linux/utsname.h b/include/linux/utsname.h > > index 13e1da0..cc28ac5 100644 > > --- a/include/linux/utsname.h > > +++ b/include/linux/utsname.h > > @@ -1,5 +1,8 @@ > > #ifndef _LINUX_UTSNAME_H > > #define _LINUX_UTSNAME_H > You can kill this include > > +#include <linux/sched.h> > > if you move this static inline to sched.h > + > > +static inline struct new_utsname *utsname(void) > > +{ > > + return &current->uts_ns->name; > > +} > And since it operates on &current that may make sense. I had it there originally. Don't mind moving it back if that seems more appropriate, but of course then we'll need to #include <linux/utsname.h> in sched.h, since we need to know struct uts_ns to get uts_ns->name. So is moving it to sched.h the way to go? thanks, -serge
creator: serue
date: 2006-04-07T19:39:37-00:00

Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: On Fri, 7 Apr 2006, Serge E. Hallyn wrote: > +EXPORT_SYMBOL(unshare_uts_ns); > +EXPORT_SYMBOL(free_uts_ns); Why not EXPORT_SYMBOL_GPL? What do you expect the user api to look like, a syscall? Probably need to think about LSM hooks for creating and updating the namespaces. - James -- James Morris <jmorris@namei.org>
creator: James Morris
date: 2006-04-07T20:47:44-00:00

Re: [RFC][PATCH 1/5] uts namespaces: Implement utsname namespaces
type: item
description: Quoting James Morris (jmorris@namei.org): > On Fri, 7 Apr 2006, Serge E. Hallyn wrote: > > > > +EXPORT_SYMBOL(unshare_uts_ns); > > +EXPORT_SYMBOL(free_uts_ns); > > Why not EXPORT_SYMBOL_GPL? Actually come to think of it they don't need to be exported. I will move the exports to the last, debugging, patch. > What do you expect the user api to look like, a syscall? This remains to be determined, and this patchset purposely doesn't address it. AFAIU, the two most likely options are extending clone and unshare, and using new syscalls. Whatever is decided for the other namespaces, this should use. With this patchset (minus the last patch for debugging) uts namespaces are supported, but processes can't clone their uts namespace yet. > Probably need to think about LSM hooks for creating and updating the > namespaces. True, that is something that needs to be discussed when the topic of how to implement unsharing comes up again. thanks, -serge
creator: serue
date: 2006-04-07T22:13:34-00:00

Re: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
type: item
description: Serge, BTW, have you noticed that NFS is using utsname for internal processes and in general case this makes NFS ns to be coupled with uts ns? Kirill > Replace references to system_utsname to the per-process uts namespace > where appropriate. This includes things like uname. > > Signed-off-by: Serge E. Hallyn <serue@us.ibm.com> > --- > arch/alpha/kernel/osf_sys.c | 24 ++++++++++++------------ > arch/i386/kernel/sys_i386.c | 12 ++++++------ > arch/ia64/sn/kernel/sn2/sn_hwperf.c | 2 +- > arch/m32r/kernel/sys_m32r.c | 2 +- > arch/mips/kernel/linux32.c | 2 +- > arch/mips/kernel/syscall.c | 18 +++++++++--------- > arch/mips/kernel/sysirix.c | 12 ++++++------ > arch/parisc/hpux/sys_hpux.c | 22 +++++++++++----------- > arch/powerpc/kernel/syscalls.c | 14 +++++++------- > arch/sh/kernel/sys_sh.c | 2 +- > arch/sh64/kernel/sys_sh64.c | 2 +- > arch/sparc/kernel/sys_sparc.c | 4 ++-- > arch/sparc/kernel/sys_sunos.c | 10 +++++----- > arch/sparc64/kernel/sys_sparc.c | 4 ++-- > arch/sparc64/kernel/sys_sunos32.c | 10 +++++----- > arch/sparc64/solaris/misc.c | 6 +++--- > arch/um/drivers/mconsole_kern.c | 6 +++--- > arch/um/kernel/syscall_kern.c | 12 ++++++------ > arch/um/sys-x86_64/syscalls.c | 2 +- > arch/x86_64/ia32/sys_ia32.c | 10 +++++----- > arch/x86_64/kernel/sys_x86_64.c | 2 +- > arch/xtensa/kernel/syscalls.c | 2 +- > drivers/char/random.c | 4 ++-- > fs/cifs/connect.c | 28 ++++++++++++++-------------- > fs/exec.c | 2 +- > fs/lockd/clntproc.c | 4 ++-- > fs/lockd/mon.c | 2 +- > fs/lockd/svclock.c | 2 +- > fs/lockd/xdr.c | 2 +- > fs/nfs/nfsroot.c | 2 +- > include/linux/lockd/lockd.h | 2 +- > kernel/sys.c | 14 +++++++------- > 32 files changed, 121 insertions(+), 121 deletions(-) > > 92a8cf13a78415ed5ec9068698b5039ddcc00210 > diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c > index 31afe3d..b793b96 100644 > --- a/arch/alpha/kernel/osf_sys.c > +++ b/arch/alpha/kernel/osf_sys.c > @@ -402,15 +402,15 @@ osf_utsname(char __user *name) > > down_read(&uts_sem); > e…
creator: dev
date: 2006-04-11T12:19:54-00:00

Re: [RFC][PATCH 0/5] uts namespaces: Introduction
type: item
description: Serge, > This patchset is based on Kirill Korotaev's Mar 24 submission, taking > comments (in particular from James Morris and Eric Biederman) into > account. thanks a lot for doing this! > Some performance results are attached. I was mainly curious whether > it would be worth putting the task_struct->uts_ns pointer inside > a #ifdef CONFIG_UTS_NS. The result show that leaving it in when > CONFIG_UTS_NS=n has negligable performance impact, so that is the > approach this patch takes. Serge, your testing approach looks really strange for me. First of all, you selected the worst namespace to check performance overhead on. 1) uts_ns is rarely used and never used on hot paths, 2) also all these test suites below doesn't test the code paths you modified. So I wonder what was the goal of these tests, especially dbench?! Thanks, Kirill > > -serge > > Performance testing was done on a 2-cpu hyperthreaded > x86 box with 16G ram. The following tests were run: > dbench (20 times, four clients, on reiser fs non-isolated partition) > tbench (20 times, 5 connections) > kernbench (20 times) > reaim (20 times ranging from 1 to 15 users) > > They were run on 2.6.17-rc1: > pristine > patched, but with !CONFIG_UTS_NS ("disabled") > patched with CONFIG_UTS_NS=y ("enabled") > > All results are presented as means +/- 95% confidence interval. > > Dbench results: > pristine: 387.080727 +/- 9.344585 > patched disabled: 389.524364 +/- 9.574921 > patched enabled: 370.155600 +/- 30.127808 > > Tbench results: > pristine: 388.940100 +/- 18.095104 > patched disabled: 389.173700 +/- 23.658035 > patched enabled: 394.333200 +/- 25.813393 > > Kernbench results: > pristine: 70.317500 +/- 0.210833 > patched, disabled: 70.860000 +/- 0.179292 > patched, enabled: 70.346500 +/- 0.184784 > > Reaim results: > pristine: > Nclients Mean 95% CI > 1 106080.000000 11327.896029 > 3 236057.142000 18205.544810 > 5 247867.136000 23536.800062 > 7 265370.000000 21284.335743 > 9 262969.936000 18225.497529 > 11 278256.000…
creator: dev
date: 2006-04-11T12:27:45-00:00

Re: [RFC][PATCH 2/5] uts namespaces: Switch to using uts namespaces
type: item
description: Kirill Korotaev wrote: >Serge, > >BTW, have you noticed that NFS is using utsname for internal processes >and in general case this makes NFS ns to be coupled with uts ns? > > Either that, or each NFS vfsmount has a uts_ns pointer. Sam.
creator: Sam Vilain
date: 2006-04-11T21:04:06-00:00