From: NeilBrown We currently return err_grace if a user attempts a non-reclaim open during the grace period. But we also need to prevent renames and removes, at least, to ensure clients have the chance to recover state on files before they are moved or deleted. Of course, local users could also do renames and removes during the lease period, and there's not much we can do about that. This at least will help with remote users. Signed-off-by: J. Bruce Fields Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/fs/nfsd/nfs4proc.c | 5 +++++ 1 files changed, 5 insertions(+) diff -puN fs/nfsd/nfs4proc.c~nfsd4-block-metadata-ops-during-grace-period fs/nfsd/nfs4proc.c --- 25/fs/nfsd/nfs4proc.c~nfsd4-block-metadata-ops-during-grace-period 2005-04-07 19:09:59.000000000 -0700 +++ 25-akpm/fs/nfsd/nfs4proc.c 2005-04-07 19:09:59.000000000 -0700 @@ -536,6 +536,8 @@ nfsd4_remove(struct svc_rqst *rqstp, str { int status; + if (nfs4_in_grace()) + return nfserr_grace; status = nfsd_unlink(rqstp, current_fh, 0, remove->rm_name, remove->rm_namelen); if (status == nfserr_symlink) return nfserr_notdir; @@ -554,6 +556,9 @@ nfsd4_rename(struct svc_rqst *rqstp, str if (!save_fh->fh_dentry) return status; + if (nfs4_in_grace() && !(save_fh->fh_export->ex_flags + & NFSEXP_NOSUBTREECHECK)) + return nfserr_grace; status = nfsd_rename(rqstp, save_fh, rename->rn_sname, rename->rn_snamelen, current_fh, rename->rn_tname, rename->rn_tnamelen); _