From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stanislav Kinsbursky Subject: Re: [PATCH 4/5] NFS: remove RPC PipeFS mount point reference from blocklayout routines Date: Tue, 29 Nov 2011 17:13:36 +0400 Message-ID: <4ED4DA80.9080303@parallels.com> References: <20111129090754.20730.64567.stgit@localhost6.localdomain6> <20111129091037.20730.59391.stgit@localhost6.localdomain6> <4ED4CDCE.9080804@parallels.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: "Trond.Myklebust@netapp.com" , "linux-nfs@vger.kernel.org" , Pavel Emelianov , "neilb@suse.de" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , James Bottomley , "bfields@fieldses.org" , "davem@davemloft.net" , "devel@openvz.org" To: "tao.peng@emc.com" Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org 29.11.2011 16:40, tao.peng@emc.com =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >> -----Original Message----- >> From: Stanislav Kinsbursky [mailto:skinsbursky@parallels.com] >> Sent: Tuesday, November 29, 2011 8:19 PM >> To: Peng, Tao >> Cc: Trond.Myklebust@netapp.com; linux-nfs@vger.kernel.org; Pavel Eme= lianov; neilb@suse.de; >> netdev@vger.kernel.org; linux-kernel@vger.kernel.org; James Bottomle= y; bfields@fieldses.org; >> davem@davemloft.net; devel@openvz.org >> Subject: Re: [PATCH 4/5] NFS: remove RPC PipeFS mount point referenc= e from blocklayout routines >> >> 29.11.2011 16:00, tao.peng@emc.com =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >>>> -----Original Message----- >>>> From: linux-nfs-owner@vger.kernel.org [mailto:linux-nfs-owner@vger= =2Ekernel.org] On Behalf Of >> Stanislav >>>> Kinsbursky >>>> Sent: Tuesday, November 29, 2011 6:11 PM >>>> To: Trond.Myklebust@netapp.com >>>> Cc: linux-nfs@vger.kernel.org; xemul@parallels.com; neilb@suse.de;= netdev@vger.kernel.org; linux- >>>> kernel@vger.kernel.org; jbottomley@parallels.com; bfields@fieldses= =2Eorg; davem@davemloft.net; >>>> devel@openvz.org >>>> Subject: [PATCH 4/5] NFS: remove RPC PipeFS mount point reference = from blocklayout routines >>>> >>>> This is a cleanup patch. We don't need this reference anymore, bec= ause >>>> blocklayout pipes dentries now creates and destroys in per-net ope= rations and >>>> on PipeFS mount/umount notification. >>>> Note that nfs4blocklayout_register_net() now returns 0 instead of = -ENOENT in >>>> case of PipeFS superblock absence. This is ok, because blocklayout= pipe dentry >>>> will be created on PipeFS mount event. >>> When is the "pipefs mount event" going to happen? When inserting ke= rnel modules or when user issues >> mount command? >>> >> >> When user issues mount command. >> Kernel mounts of PipeFS has been removed with all these patch sets I= 've sent >> already. > Then it is going to break blocklayout user space program blkmapd, whi= ch is stared before mounting any file system and it tries to open the p= ipe file when started. Sorry, but I don't get it. Probably we have misunderstanding here. You said, that "blkmapd ... tries to open the pipe file when started". = This pipe=20 file is located on PipeFS, isn't it? If yes, then PipeFS have to be mounted already in user-space. And if it= has been=20 mounted - then pipe dentry is present. IOW, pipe (without dentry) will be created on module load. Pipe dentry = will be=20 created right after that (like it was before) if PipeFS was mounted fro= m=20 user-space. If not - then pipe dentry will be created on PipeFS (!) mo= unt (not=20 NFS or pNFS mount) from user-space. Or I'm missing something in your reply? > Not sure if you implement the same logic on nfs pipe as well. But if = you do, then nfs client user space program idmapd will fail to start fo= r the same reason. > The same logic here. > Why not just fail to load module if you fail to initialize pipefs? Wh= en is rpc_get_sb_net() going to fail? > Sorry, but I don't understand, what is your idea. And why do we need to= fail at all. BTW, rpc_get_sb_net() just checks, was PipeFS mounted in passed net, or= not. If=20 not - not a problem. Dentries will be created on mount event. If yes, t= hen it=20 returns locked PipeFS sb and the next step is dentry creation. >> >> >>> Thanks, >>> Tao >>> >>>> >>>> Signed-off-by: Stanislav Kinsbursky >>>> >>>> --- >>>> fs/nfs/blocklayout/blocklayout.c | 9 +-------- >>>> 1 files changed, 1 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout= /blocklayout.c >>>> index acf7ac9..8211ffd 100644 >>>> --- a/fs/nfs/blocklayout/blocklayout.c >>>> +++ b/fs/nfs/blocklayout/blocklayout.c >>>> @@ -1032,7 +1032,7 @@ static struct dentry *nfs4blocklayout_regist= er_net(struct net *net, >>>> >>>> pipefs_sb =3D rpc_get_sb_net(net); >>>> if (!pipefs_sb) >>>> - return ERR_PTR(-ENOENT); >>>> + return 0; >>>> dentry =3D nfs4blocklayout_register_sb(pipefs_sb, pipe); >>>> rpc_put_sb_net(net); >>>> return dentry; >>>> @@ -1083,7 +1083,6 @@ static struct pernet_operations nfs4blocklay= out_net_ops =3D { >>>> >>>> static int __init nfs4blocklayout_init(void) >>>> { >>>> - struct vfsmount *mnt; >>>> int ret; >>>> >>>> dprintk("%s: NFSv4 Block Layout Driver Registering...\n", __fu= nc__); >>>> @@ -1093,12 +1092,6 @@ static int __init nfs4blocklayout_init(void= ) >>>> goto out; >>>> >>>> init_waitqueue_head(&bl_wq); >>>> - >>>> - mnt =3D rpc_get_mount(); >>>> - if (IS_ERR(mnt)) { >>>> - ret =3D PTR_ERR(mnt); >>>> - goto out_remove; >>>> - } >>>> ret =3D rpc_pipefs_notifier_register(&nfs4blocklayout_block); >>>> if (ret) >>>> goto out_remove; >>>> >>>> -- >>>> To unsubscribe from this list: send the line "unsubscribe linux-nf= s" in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> >> >> -- >> Best regards, >> Stanislav Kinsbursky > --=20 Best regards, Stanislav Kinsbursky