mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 15:55:28 -04:00
NFSD: Use vfs_iocb_iter_read()
Refactor: Enable the use of IOCB flags to control NFSD's individual read operations (when not using splice). This allows the eventual use of atomic, uncached, direct, or asynchronous reads. Suggested-by: Christoph Hellwig <hch@infradead.org> Reviewed-by: NeilBrown <neil@brown.name> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
@@ -1086,10 +1086,13 @@ __be32 nfsd_iter_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
{
|
||||
unsigned long v, total;
|
||||
struct iov_iter iter;
|
||||
loff_t ppos = offset;
|
||||
struct kiocb kiocb;
|
||||
ssize_t host_err;
|
||||
size_t len;
|
||||
|
||||
init_sync_kiocb(&kiocb, file);
|
||||
kiocb.ki_pos = offset;
|
||||
|
||||
v = 0;
|
||||
total = *count;
|
||||
while (total) {
|
||||
@@ -1104,7 +1107,7 @@ __be32 nfsd_iter_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
|
||||
trace_nfsd_read_vector(rqstp, fhp, offset, *count);
|
||||
iov_iter_bvec(&iter, ITER_DEST, rqstp->rq_bvec, v, *count);
|
||||
host_err = vfs_iter_read(file, &iter, &ppos, 0);
|
||||
host_err = vfs_iocb_iter_read(file, &kiocb, &iter);
|
||||
return nfsd_finish_read(rqstp, fhp, file, offset, count, eof, host_err);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user