On Wed, 17 Jul 2013 16:50:17 -0400 "J. Bruce Fields" <bfields@xxxxxxxxxx> wrote: > From: "J. Bruce Fields" <bfields@xxxxxxxxxx> > > As a temporary fix, nfsd was breaking all leases on unlink, link, > rename, and setattr. > > Now that we can distinguish between leases and delegations, we can be > nicer and break only the delegations, and not bother lease-holders with > operations they don't care about. > > And we get to delete some code while we're at it. > > Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> > --- > fs/nfsd/vfs.c | 27 --------------------------- > 1 file changed, 27 deletions(-) > > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c > index 2586f6d..51a5ede 100644 > --- a/fs/nfsd/vfs.c > +++ b/fs/nfsd/vfs.c > @@ -273,13 +273,6 @@ out: > return err; > } > > -static int nfsd_break_lease(struct inode *inode) > -{ > - if (!S_ISREG(inode->i_mode)) > - return 0; > - return break_lease(inode, O_WRONLY | O_NONBLOCK); > -} > - > /* > * Commit metadata changes to stable storage. > */ > @@ -422,9 +415,6 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, > > err = nfserr_notsync; > if (!check_guard || guardtime == inode->i_ctime.tv_sec) { > - host_err = nfsd_break_lease(inode); > - if (host_err) > - goto out_nfserr; > fh_lock(fhp); > > host_err = notify_change(dentry, iap, NULL); > @@ -1735,11 +1725,6 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp, > err = nfserr_noent; > if (!dold->d_inode) > goto out_dput; > - host_err = nfsd_break_lease(dold->d_inode); > - if (host_err) { > - err = nfserrno(host_err); > - goto out_dput; > - } > host_err = vfs_link(dold, dirp, dnew, NULL); > if (!host_err) { > err = nfserrno(commit_metadata(ffhp)); > @@ -1833,14 +1818,6 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, > if (ffhp->fh_export->ex_path.dentry != tfhp->fh_export->ex_path.dentry) > goto out_dput_new; > > - host_err = nfsd_break_lease(odentry->d_inode); > - if (host_err) > - goto out_dput_new; > - if (ndentry->d_inode) { > - host_err = nfsd_break_lease(ndentry->d_inode); > - if (host_err) > - goto out_dput_new; > - } > host_err = vfs_rename(fdir, odentry, tdir, ndentry, NULL); > if (!host_err) { > host_err = commit_metadata(tfhp); > @@ -1910,16 +1887,12 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, > if (!type) > type = rdentry->d_inode->i_mode & S_IFMT; > > - host_err = nfsd_break_lease(rdentry->d_inode); > - if (host_err) > - goto out_put; > if (type != S_IFDIR) > host_err = vfs_unlink(dirp, rdentry, NULL); > else > host_err = vfs_rmdir(dirp, rdentry); > if (!host_err) > host_err = commit_metadata(fhp); > -out_put: > dput(rdentry); > > out_nfserr: Acked-by: Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html