aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/vfs.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-10-19 19:57:56 -0400
committerDavid Howells <dhowells@redhat.com>2018-10-23 19:41:07 -0400
commitaa563d7bca6e882ec2bdae24603c8f016401a144 (patch)
tree874b10fc11da3178e4630f7a430e1b299d3b3806 /fs/nfsd/vfs.c
parent00e23707442a75b404392cef1405ab4fd498de6b (diff)
iov_iter: Separate type from direction and use accessor functions
In the iov_iter struct, separate the iterator type from the iterator direction and use accessor functions to access them in most places. Convert a bunch of places to use switch-statements to access them rather then chains of bitwise-AND statements. This makes it easier to add further iterator types. Also, this can be more efficient as to implement a switch of small contiguous integers, the compiler can use ~50% fewer compare instructions than it has to use bitwise-and instructions. Further, cease passing the iterator type into the iterator setup function. The iterator function can set that itself. Only the direction is required. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r--fs/nfsd/vfs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index b53e76391e52..8b90f5480904 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -923,7 +923,7 @@ __be32 nfsd_readv(struct svc_rqst *rqstp, struct svc_fh *fhp,
923 int host_err; 923 int host_err;
924 924
925 trace_nfsd_read_vector(rqstp, fhp, offset, *count); 925 trace_nfsd_read_vector(rqstp, fhp, offset, *count);
926 iov_iter_kvec(&iter, READ | ITER_KVEC, vec, vlen, *count); 926 iov_iter_kvec(&iter, READ, vec, vlen, *count);
927 host_err = vfs_iter_read(file, &iter, &offset, 0); 927 host_err = vfs_iter_read(file, &iter, &offset, 0);
928 return nfsd_finish_read(rqstp, fhp, file, offset, count, host_err); 928 return nfsd_finish_read(rqstp, fhp, file, offset, count, host_err);
929} 929}
@@ -999,7 +999,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
999 if (stable && !use_wgather) 999 if (stable && !use_wgather)
1000 flags |= RWF_SYNC; 1000 flags |= RWF_SYNC;
1001 1001
1002 iov_iter_kvec(&iter, WRITE | ITER_KVEC, vec, vlen, *cnt); 1002 iov_iter_kvec(&iter, WRITE, vec, vlen, *cnt);
1003 host_err = vfs_iter_write(file, &iter, &pos, flags); 1003 host_err = vfs_iter_write(file, &iter, &pos, flags);
1004 if (host_err < 0) 1004 if (host_err < 0)
1005 goto out_nfserr; 1005 goto out_nfserr;