mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
NFS Cleanup: move call to generic_write_checks() into fs/nfs/direct.c
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
2f3c7d87a3
commit
89698b24d2
@ -988,6 +988,7 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq,
|
|||||||
ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
|
ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
|
||||||
{
|
{
|
||||||
ssize_t result = -EINVAL;
|
ssize_t result = -EINVAL;
|
||||||
|
size_t count;
|
||||||
struct file *file = iocb->ki_filp;
|
struct file *file = iocb->ki_filp;
|
||||||
struct address_space *mapping = file->f_mapping;
|
struct address_space *mapping = file->f_mapping;
|
||||||
struct inode *inode = mapping->host;
|
struct inode *inode = mapping->host;
|
||||||
@ -998,8 +999,11 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
|
|||||||
dfprintk(FILE, "NFS: direct write(%pD2, %zd@%Ld)\n",
|
dfprintk(FILE, "NFS: direct write(%pD2, %zd@%Ld)\n",
|
||||||
file, iov_iter_count(iter), (long long) iocb->ki_pos);
|
file, iov_iter_count(iter), (long long) iocb->ki_pos);
|
||||||
|
|
||||||
nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES,
|
result = generic_write_checks(iocb, iter);
|
||||||
iov_iter_count(iter));
|
if (result <= 0)
|
||||||
|
return result;
|
||||||
|
count = result;
|
||||||
|
nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES, count);
|
||||||
|
|
||||||
pos = iocb->ki_pos;
|
pos = iocb->ki_pos;
|
||||||
end = (pos + iov_iter_count(iter) - 1) >> PAGE_SHIFT;
|
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)
|
|||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
task_io_account_write(iov_iter_count(iter));
|
task_io_account_write(count);
|
||||||
|
|
||||||
result = -ENOMEM;
|
result = -ENOMEM;
|
||||||
dreq = nfs_direct_req_alloc();
|
dreq = nfs_direct_req_alloc();
|
||||||
@ -1025,7 +1029,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
|
|||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
|
||||||
dreq->inode = inode;
|
dreq->inode = inode;
|
||||||
dreq->bytes_left = dreq->max_count = iov_iter_count(iter);
|
dreq->bytes_left = dreq->max_count = count;
|
||||||
dreq->io_start = pos;
|
dreq->io_start = pos;
|
||||||
dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
|
dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp));
|
||||||
l_ctx = nfs_get_lock_context(dreq->ctx);
|
l_ctx = nfs_get_lock_context(dreq->ctx);
|
||||||
|
@ -629,12 +629,8 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
|
|||||||
if (result)
|
if (result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
if (iocb->ki_flags & IOCB_DIRECT) {
|
if (iocb->ki_flags & IOCB_DIRECT)
|
||||||
result = generic_write_checks(iocb, from);
|
|
||||||
if (result <= 0)
|
|
||||||
return result;
|
|
||||||
return nfs_file_direct_write(iocb, from);
|
return nfs_file_direct_write(iocb, from);
|
||||||
}
|
|
||||||
|
|
||||||
dprintk("NFS: write(%pD2, %zu@%Ld)\n",
|
dprintk("NFS: write(%pD2, %zu@%Ld)\n",
|
||||||
file, count, (long long) iocb->ki_pos);
|
file, count, (long long) iocb->ki_pos);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user