diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfsd/nfs4proc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index eb8c1337d9ba..ac4878ac2213 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c | |||
@@ -536,6 +536,8 @@ nfsd4_remove(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_rem | |||
536 | { | 536 | { |
537 | int status; | 537 | int status; |
538 | 538 | ||
539 | if (nfs4_in_grace()) | ||
540 | return nfserr_grace; | ||
539 | status = nfsd_unlink(rqstp, current_fh, 0, remove->rm_name, remove->rm_namelen); | 541 | status = nfsd_unlink(rqstp, current_fh, 0, remove->rm_name, remove->rm_namelen); |
540 | if (status == nfserr_symlink) | 542 | if (status == nfserr_symlink) |
541 | return nfserr_notdir; | 543 | return nfserr_notdir; |
@@ -554,6 +556,9 @@ nfsd4_rename(struct svc_rqst *rqstp, struct svc_fh *current_fh, | |||
554 | 556 | ||
555 | if (!save_fh->fh_dentry) | 557 | if (!save_fh->fh_dentry) |
556 | return status; | 558 | return status; |
559 | if (nfs4_in_grace() && !(save_fh->fh_export->ex_flags | ||
560 | & NFSEXP_NOSUBTREECHECK)) | ||
561 | return nfserr_grace; | ||
557 | status = nfsd_rename(rqstp, save_fh, rename->rn_sname, | 562 | status = nfsd_rename(rqstp, save_fh, rename->rn_sname, |
558 | rename->rn_snamelen, current_fh, | 563 | rename->rn_snamelen, current_fh, |
559 | rename->rn_tname, rename->rn_tnamelen); | 564 | rename->rn_tname, rename->rn_tnamelen); |