aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/vfs.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-10-30 16:03:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-10-30 16:03:29 -0400
commit310c7585e8300ddc46211df0757c11e4299ec482 (patch)
treed272d2160c68bb02589597c4bafc35b667811a8c /fs/nfsd/vfs.c
parent9b190ecca11c6ed6e20f35caef5746416d8ee0f0 (diff)
parent93f38b6fae0ea8987e22d9e6c38f8dfdccd867ee (diff)
Merge tag 'nfsd-4.20' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields: "Olga added support for the NFSv4.2 asynchronous copy protocol. We already supported COPY, by copying a limited amount of data and then returning a short result, letting the client resend. The asynchronous protocol should offer better performance at the expense of some complexity. The other highlight is Trond's work to convert the duplicate reply cache to a red-black tree, and to move it and some other server caches to RCU. (Previously these have meant taking global spinlocks on every RPC) Otherwise, some RDMA work and miscellaneous bugfixes" * tag 'nfsd-4.20' of git://linux-nfs.org/~bfields/linux: (30 commits) lockd: fix access beyond unterminated strings in prints nfsd: Fix an Oops in free_session() nfsd: correctly decrement odstate refcount in error path svcrdma: Increase the default connection credit limit svcrdma: Remove try_module_get from backchannel svcrdma: Remove ->release_rqst call in bc reply handler svcrdma: Reduce max_send_sges nfsd: fix fall-through annotations knfsd: Improve lookup performance in the duplicate reply cache using an rbtree knfsd: Further simplify the cache lookup knfsd: Simplify NFS duplicate replay cache knfsd: Remove dead code from nfsd_cache_lookup SUNRPC: Simplify TCP receive code SUNRPC: Replace the cache_detail->hash_lock with a regular spinlock SUNRPC: Remove non-RCU protected lookup NFS: Fix up a typo in nfs_dns_ent_put NFS: Lockless DNS lookups knfsd: Lockless lookup of NFSv4 identities. SUNRPC: Lockless server RPCSEC_GSS context lookup knfsd: Allow lockless lookups of the exports ...
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r--fs/nfsd/vfs.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index b53e76391e52..2751976704e9 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -1276,7 +1276,6 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
1276 int type, dev_t rdev, struct svc_fh *resfhp) 1276 int type, dev_t rdev, struct svc_fh *resfhp)
1277{ 1277{
1278 struct dentry *dentry, *dchild = NULL; 1278 struct dentry *dentry, *dchild = NULL;
1279 struct inode *dirp;
1280 __be32 err; 1279 __be32 err;
1281 int host_err; 1280 int host_err;
1282 1281
@@ -1288,7 +1287,6 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
1288 return err; 1287 return err;
1289 1288
1290 dentry = fhp->fh_dentry; 1289 dentry = fhp->fh_dentry;
1291 dirp = d_inode(dentry);
1292 1290
1293 host_err = fh_want_write(fhp); 1291 host_err = fh_want_write(fhp);
1294 if (host_err) 1292 if (host_err)
@@ -1409,6 +1407,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
1409 *created = 1; 1407 *created = 1;
1410 break; 1408 break;
1411 } 1409 }
1410 /* fall through */
1412 case NFS4_CREATE_EXCLUSIVE4_1: 1411 case NFS4_CREATE_EXCLUSIVE4_1:
1413 if ( d_inode(dchild)->i_mtime.tv_sec == v_mtime 1412 if ( d_inode(dchild)->i_mtime.tv_sec == v_mtime
1414 && d_inode(dchild)->i_atime.tv_sec == v_atime 1413 && d_inode(dchild)->i_atime.tv_sec == v_atime
@@ -1417,7 +1416,7 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
1417 *created = 1; 1416 *created = 1;
1418 goto set_attr; 1417 goto set_attr;
1419 } 1418 }
1420 /* fallthru */ 1419 /* fall through */
1421 case NFS3_CREATE_GUARDED: 1420 case NFS3_CREATE_GUARDED:
1422 err = nfserr_exist; 1421 err = nfserr_exist;
1423 } 1422 }