From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jamie Lokier Subject: Re: [PATCH] VFS: Unlink should revoke all outstanding leases on file Date: Fri, 14 May 2010 18:46:53 +0100 Message-ID: <20100514174653.GC10133@shareable.org> References: <4BED195F.3070504@cn.fujitsu.com> <20100514055844.109d2fdc@tlielax.poochiereds.net> <1273857471.4732.7.camel@localhost.localdomain> <20100514133819.5e383485@tlielax.poochiereds.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Trond Myklebust , Mi Jinlong , NFSv3 list , linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org, adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, viro-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org To: Jeff Layton Return-path: Content-Disposition: inline In-Reply-To: <20100514133819.5e383485-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org> Sender: linux-nfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-fsdevel.vger.kernel.org Jeff Layton wrote: > On Fri, 14 May 2010 13:17:51 -0400 > Trond Myklebust wrote: > > > On Fri, 2010-05-14 at 05:58 -0400, Jeff Layton wrote: > > > On Fri, 14 May 2010 17:35:27 +0800 > > > Mi Jinlong wrote: > > > > > > > After client get one file's READ delegation through NFSv4, > > > > server delete this file but don't reclaim the delegation. > > > > > > > > This patch add break_lease at may_delete, which can reclaim delegations. > > > > > > > > --- > > > > fs/namei.c | 2 +- > > > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > > > > > diff --git a/fs/namei.c b/fs/namei.c > > > > index 16df727..17bafc1 100644 > > > > --- a/fs/namei.c > > > > +++ b/fs/namei.c > > > > @@ -1338,7 +1338,7 @@ static int may_delete(struct inode *dir,struct dentry *victim,int isdir) > > > > return -ENOENT; > > > > if (victim->d_flags & DCACHE_NFSFS_RENAMED) > > > > return -EBUSY; > > > > - return 0; > > > > + return break_lease(victim->d_inode, FMODE_WRITE); > > > > } > > > > > > > > /* Check whether we can create an object with dentry child in directory > > > > > > This doesn't look right to me. > > > > > > The fcntl(2) manpage basically says that leases should be broken if the > > > file is opened for read or write, or is truncated. unlinks don't seem > > > to fall into either category... > > > > > > > Breaking the lease in this case is certainly a requirement for NFSv4 > > delegations. I've no idea what the CIFS oplock requirements are... > > > > Heh, probably "undefined". Windows generally doesn't allow you to > delete open files at all. I think you can delete open files on Windows nowadays, if they are opened with a particular flag. > I don't think samba will really care too much either way. I suppose > it could hurt performance in situations where you had a file that > was hardlinked and deleted a hardlink that was "unrelated" to the > dentry being held open...but that's pretty clearly a corner case at > best. Leases are handy for some userspace caching tricks too. (inotify is too late for some coherent things: the file is modified first, then you find out.) I wouldn't like deleting a hard-link to have that effect if it can be avoided. Or renaming (see below). > At the risk of being lazy and not checking for myself...what in the > NFSv4 spec mandates this? On the same note, if deleting any link of a hard-link file requires this, surely renaming a file requires it too, because that's roughly equivalent to making a new link and deleting the old one. -- Jamie -- 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