From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Helsley Subject: [RFC][PATCH 2/4] sunrpc: Use utsnamespaces Date: Mon, 05 Jan 2009 17:13:16 -0800 Message-ID: <20090106011314.961946803@us.ibm.com> References: <20090106011314.534653345@us.ibm.com> Return-path: Content-Disposition: inline; filename=reenable-uts-ns-for-most-rpc-clients.patch Sender: linux-nfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Linux Containers Cc: "J. Bruce Fields" , Cedric Le Goater , Linux Kernel Mailing List , linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Trond Myklebust , Chuck Lever , "Eric W. Biederman" , Matt Helsley , Linux Containers List-Id: containers.vger.kernel.org We can often specify the UTS namespace to use when starting an RPC client. However sometimes no UTS namespace is available (specifically during system shutdown as the last NFS mount in a container is unmounted) so fall back to the initial UTS namespace. Signed-off-by: Matt Helsley Cc: Cedric Le Goater Cc: Linux Kernel Mailing List Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Trond Myklebust Cc: Chuck Lever Cc: Eric W. Biederman Cc: Linux Containers --- net/sunrpc/clnt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Index: linux-2.6.28/net/sunrpc/clnt.c =================================================================== --- linux-2.6.28.orig/net/sunrpc/clnt.c +++ linux-2.6.28/net/sunrpc/clnt.c @@ -128,6 +128,7 @@ static struct rpc_clnt * rpc_new_client( struct rpc_version *version; struct rpc_clnt *clnt = NULL; struct rpc_auth *auth; + struct new_utsname *uts_ns = init_utsname(); int err; size_t len; @@ -213,10 +214,12 @@ static struct rpc_clnt * rpc_new_client( } /* save the nodename */ - clnt->cl_nodelen = strlen(init_utsname()->nodename); + if (current->nsproxy != NULL) + uts_ns = utsname(); + clnt->cl_nodelen = strlen(uts_ns->nodename); if (clnt->cl_nodelen > UNX_MAXNODENAME) clnt->cl_nodelen = UNX_MAXNODENAME; - memcpy(clnt->cl_nodename, init_utsname()->nodename, clnt->cl_nodelen); + memcpy(clnt->cl_nodename, uts_ns->nodename, clnt->cl_nodelen); rpc_register_client(clnt); return clnt; -- -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Helsley Subject: [RFC][PATCH 2/4] sunrpc: Use utsnamespaces Date: Mon, 05 Jan 2009 17:13:16 -0800 Message-ID: <20090106011314.961946803@us.ibm.com> References: <20090106011314.534653345@us.ibm.com> Cc: "J. Bruce Fields" , Cedric Le Goater , Linux Kernel Mailing List , linux-nfs@vger.kernel.org, Trond Myklebust , Chuck Lever , "Eric W. Biederman" , Matt Helsley , Linux Containers To: Linux Containers Return-path: Received: from e1.ny.us.ibm.com ([32.97.182.141]:50142 "EHLO e1.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751199AbZAFBNU (ORCPT ); Mon, 5 Jan 2009 20:13:20 -0500 Sender: linux-nfs-owner@vger.kernel.org List-ID: We can often specify the UTS namespace to use when starting an RPC client. However sometimes no UTS namespace is available (specifically during system shutdown as the last NFS mount in a container is unmounted) so fall back to the initial UTS namespace. Signed-off-by: Matt Helsley Cc: Cedric Le Goater Cc: Linux Kernel Mailing List Cc: linux-nfs@vger.kernel.org Cc: Trond Myklebust Cc: Chuck Lever Cc: Eric W. Biederman Cc: Linux Containers --- net/sunrpc/clnt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Index: linux-2.6.28/net/sunrpc/clnt.c =================================================================== --- linux-2.6.28.orig/net/sunrpc/clnt.c +++ linux-2.6.28/net/sunrpc/clnt.c @@ -128,6 +128,7 @@ static struct rpc_clnt * rpc_new_client( struct rpc_version *version; struct rpc_clnt *clnt = NULL; struct rpc_auth *auth; + struct new_utsname *uts_ns = init_utsname(); int err; size_t len; @@ -213,10 +214,12 @@ static struct rpc_clnt * rpc_new_client( } /* save the nodename */ - clnt->cl_nodelen = strlen(init_utsname()->nodename); + if (current->nsproxy != NULL) + uts_ns = utsname(); + clnt->cl_nodelen = strlen(uts_ns->nodename); if (clnt->cl_nodelen > UNX_MAXNODENAME) clnt->cl_nodelen = UNX_MAXNODENAME; - memcpy(clnt->cl_nodename, init_utsname()->nodename, clnt->cl_nodelen); + memcpy(clnt->cl_nodename, uts_ns->nodename, clnt->cl_nodelen); rpc_register_client(clnt); return clnt; -- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753350AbZAFBNr (ORCPT ); Mon, 5 Jan 2009 20:13:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751303AbZAFBNW (ORCPT ); Mon, 5 Jan 2009 20:13:22 -0500 Received: from e1.ny.us.ibm.com ([32.97.182.141]:50142 "EHLO e1.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751199AbZAFBNU (ORCPT ); Mon, 5 Jan 2009 20:13:20 -0500 Message-Id: <20090106011314.961946803@us.ibm.com> References: <20090106011314.534653345@us.ibm.com> User-Agent: quilt/0.46-1 Date: Mon, 05 Jan 2009 17:13:16 -0800 From: Matt Helsley To: Linux Containers Cc: "J. Bruce Fields" , Cedric Le Goater , Linux Kernel Mailing List , linux-nfs@vger.kernel.org, Trond Myklebust , Chuck Lever , "Eric W. Biederman" , Matt Helsley , Linux Containers Subject: [RFC][PATCH 2/4] sunrpc: Use utsnamespaces Content-Disposition: inline; filename=reenable-uts-ns-for-most-rpc-clients.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We can often specify the UTS namespace to use when starting an RPC client. However sometimes no UTS namespace is available (specifically during system shutdown as the last NFS mount in a container is unmounted) so fall back to the initial UTS namespace. Signed-off-by: Matt Helsley Cc: Cedric Le Goater Cc: Linux Kernel Mailing List Cc: linux-nfs@vger.kernel.org Cc: Trond Myklebust Cc: Chuck Lever Cc: Eric W. Biederman Cc: Linux Containers --- net/sunrpc/clnt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Index: linux-2.6.28/net/sunrpc/clnt.c =================================================================== --- linux-2.6.28.orig/net/sunrpc/clnt.c +++ linux-2.6.28/net/sunrpc/clnt.c @@ -128,6 +128,7 @@ static struct rpc_clnt * rpc_new_client( struct rpc_version *version; struct rpc_clnt *clnt = NULL; struct rpc_auth *auth; + struct new_utsname *uts_ns = init_utsname(); int err; size_t len; @@ -213,10 +214,12 @@ static struct rpc_clnt * rpc_new_client( } /* save the nodename */ - clnt->cl_nodelen = strlen(init_utsname()->nodename); + if (current->nsproxy != NULL) + uts_ns = utsname(); + clnt->cl_nodelen = strlen(uts_ns->nodename); if (clnt->cl_nodelen > UNX_MAXNODENAME) clnt->cl_nodelen = UNX_MAXNODENAME; - memcpy(clnt->cl_nodename, init_utsname()->nodename, clnt->cl_nodelen); + memcpy(clnt->cl_nodename, uts_ns->nodename, clnt->cl_nodelen); rpc_register_client(clnt); return clnt; --