aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/direct.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2016-06-23 10:35:48 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2016-07-05 19:11:03 -0400
commit89698b24d24f9c8b470a73351b0b7199c17e0153 (patch)
tree6d778072da2d0f6d1ed7765cbbc51104e9217376 /fs/nfs/direct.c
parent2f3c7d87a347b12f725f6128b3097727b91b230e (diff)
NFS Cleanup: move call to generic_write_checks() into fs/nfs/direct.c
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/direct.c')
-rw-r--r--fs/nfs/direct.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 826d4dace0e5..0169eca8eb42 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -988,6 +988,7 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq,
988ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter) 988ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
989{ 989{
990 ssize_t result = -EINVAL; 990 ssize_t result = -EINVAL;
991 size_t count;
991 struct file *file = iocb->ki_filp; 992 struct file *file = iocb->ki_filp;
992 struct address_space *mapping = file->f_mapping; 993 struct address_space *mapping = file->f_mapping;
993 struct inode *inode = mapping->host; 994 struct inode *inode = mapping->host;
@@ -998,8 +999,11 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
998 dfprintk(FILE, "NFS: direct write(%pD2, %zd@%Ld)\n", 999 dfprintk(FILE, "NFS: direct write(%pD2, %zd@%Ld)\n",
999 file, iov_iter_count(iter), (long long) iocb->ki_pos); 1000 file, iov_iter_count(iter), (long long) iocb->ki_pos);
1000 1001
1001 nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES, 1002 result = generic_write_checks(iocb, iter);
1002 iov_iter_count(iter)); 1003 if (result <= 0)
1004 return result;
1005 count = result;
1006 nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES, count);
1003 1007
1004 pos = iocb->ki_pos; 1008 pos = iocb->ki_pos;
1005 end = (pos + iov_iter_count(iter) - 1) >> PAGE_SHIFT; 1009 end = (pos + iov_iter_count(iter) - 1) >> PAGE_SHIFT;
@@ -1017,7 +1021,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
1017 goto out_unlock; 1021 goto out_unlock;
1018 } 1022 }
1019 1023
1020 task_io_account_write(iov_iter_count(iter)); 1024 task_io_account_write(count);
1021 1025
1022 result = -ENOMEM; 1026 result = -ENOMEM;
1023 dreq = nfs_direct_req_alloc(); 1027 dreq = nfs_direct_req_alloc();
@@ -1025,7 +1029,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
1025 goto out_unlock; 1029 goto out_unlock;
1026 1030
1027 dreq->inode = inode; 1031 dreq->inode = inode;
1028 dreq->bytes_left = dreq->max_count = iov_iter_count(iter); 1032 dreq->bytes_left = dreq->max_count = count;
1029 dreq->io_start = pos; 1033 dreq->io_start = pos;
1030 dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp)); 1034 dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
1031 l_ctx = nfs_get_lock_context(dreq->ctx); 1035 l_ctx = nfs_get_lock_context(dreq->ctx);