From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stanislav Kinsbursky Subject: Re: [RFC PATCH 0/5] SUNRPC: "RPC pipefs per network namespace" preparations Date: Thu, 20 Oct 2011 15:06:46 +0400 Message-ID: <4EA000C6.1040502@parallels.com> References: <20111017120629.4541.67395.stgit@localhost6.localdomain6> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: "linux-nfs@vger.kernel.org" , Pavel Emelianov , "neilb@suse.de" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bfields@fieldses.org" , "davem@davemloft.net" , "devel@openvz.org" To: "Trond.Myklebust@netapp.com" Return-path: In-Reply-To: <20111017120629.4541.67395.stgit@localhost6.localdomain6> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Guys, please, spend some of your expensive time to review this patch-se= t briefly. This is not for commit, but just an idea representation. I really need some opinions about it, since all my further work aroud R= PC pipefs=20 depends on it. IOW I need to now, does anyone has something against this idea. Trond, please, respond, does this idea suits you in general or not? 17.10.2011 17:10, Stanislav Kinsbursky =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > Hello to everyone. > RPC pipefs file system have to work per network namespace context is = required > prior to any NFS modifications. > This is a way how to do it. I'll really appreciate for any comments. > > There are several statements about how to make RPC pipefs working per= network > namespace context. > Here they are: > 1) RPC pipefs should be mounted per network namespace context. > 2) RPC pipefs superblock should holds network namespace while active. > 3) RPC pipefs lookup and readir should be perfomed in network namespa= ce context > it was mounted. IOW, user-space process, working in another network n= amespace > context, should see RPC pipefs dentries from network namespace contex= t this > mount-point was created (like it was done for sysfs). > > These statement leads to some restrictions which we must follow durin= g > implementation. Here are they: > 1) RPC pipefs mount can't be performed in kernel context since new su= per block > will holds networks namespace reference and it's impossible to recogn= ize, when > and how we have to release this mount point. IOW rpc_get_mount() and > rpc_put_mount() have to be removed. > 2) RPC pipefs should provide some new helpers to lookup directory den= try for > those modules which creates pipes, because without RPC pipefs mount p= oint > general lookup can't be performed. > 3) These methods must garantee, that pipefs superblock will be active= during > pipes creation and destruction. > > So, here is the idea of making RPC pipefs works per network namespace= context: > 1) RPC pipefs superblock should holds network namespcae context while= active. > 2) RPC pipefs should send notification events on superblock creation = and > destruction. > 3) RPC pipefs should provide "lookup dentry by name" method for notif= ication > subscribers. > 4) RPC pipefs should place superblock reference on current network na= mespace > context on creation and remove it on destruction. > 5) RPC pipefs should provide safe "lookup dentry by name" method for = per-net > operations, which garantees, that superblock is active, while > per-net-operations are performing. > 6) Client and cache directories creation and destruction should be pe= rformed > also on superblock creation and destruction notification events. Note= : generic > creation (like now) can fail (if no superblock is not created yet). > 7) Pipes creation and destruction should be performed on superblock c= reation > and destruction events. Also pipes operations should be performed dur= ing > per-net operation and in this case they could fail (due to the same r= eason as > in statement above). > > This patch-set implements first 5 points and thus doesn't affects cur= rent RPC > pipefs logic. > > The only problem about I'm not sure how to solve properly yet, is aut= h gss > pipes creations operations. Hoping for some help with it. > > > The following series consists of: > > --- > > Stanislav Kinsbursky (5): > SUNRPC: hold current network namespace while pipefs superblock= is active > SUNRPC: send notification events on pipefs sb creation and des= truction > SUNRPC: pipefs dentry lookup helper introduced > SUNRPC: put pipefs superblock link on network namespace > SUNRPC: pipefs per-net operations helper introduced > > > include/linux/sunrpc/rpc_pipe_fs.h | 16 ++++++ > net/sunrpc/netns.h | 3 + > net/sunrpc/rpc_pipe.c | 103 +++++++++++++++++++++++++= +++++++++++ > net/sunrpc/sunrpc_syms.c | 1 > 4 files changed, 122 insertions(+), 1 deletions(-) > --=20 Best regards, Stanislav Kinsbursky