aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/direct.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2016-06-22 14:38:06 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2016-07-05 19:11:02 -0400
commit2f3c7d87a347b12f725f6128b3097727b91b230e (patch)
tree6fec9e3cabc70450c148627da8ae3d2e89ab66d2 /fs/nfs/direct.c
parenta5314a74928fa6dbc4503a8c64f43bb5c1c12ac1 (diff)
NFS: Remove racy size manipulations in O_DIRECT
On success, the RPC callbacks will ensure that we make the appropriate calls to nfs_writeback_update_inode() Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/direct.c')
-rw-r--r--fs/nfs/direct.c16
1 files changed, 0 insertions, 16 deletions
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index fb659bb50678..826d4dace0e5 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -376,15 +376,6 @@ static void nfs_direct_complete(struct nfs_direct_req *dreq, bool write)
376{ 376{
377 struct inode *inode = dreq->inode; 377 struct inode *inode = dreq->inode;
378 378
379 if (dreq->iocb && write) {
380 loff_t pos = dreq->iocb->ki_pos + dreq->count;
381
382 spin_lock(&inode->i_lock);
383 if (i_size_read(inode) < pos)
384 i_size_write(inode, pos);
385 spin_unlock(&inode->i_lock);
386 }
387
388 if (write) 379 if (write)
389 nfs_zap_mapping(inode, inode->i_mapping); 380 nfs_zap_mapping(inode, inode->i_mapping);
390 381
@@ -1058,14 +1049,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter)
1058 if (!result) { 1049 if (!result) {
1059 result = nfs_direct_wait(dreq); 1050 result = nfs_direct_wait(dreq);
1060 if (result > 0) { 1051 if (result > 0) {
1061 struct inode *inode = mapping->host;
1062
1063 iocb->ki_pos = pos + result; 1052 iocb->ki_pos = pos + result;
1064 spin_lock(&inode->i_lock);
1065 if (i_size_read(inode) < iocb->ki_pos)
1066 i_size_write(inode, iocb->ki_pos);
1067 spin_unlock(&inode->i_lock);
1068
1069 /* XXX: should check the generic_write_sync retval */ 1053 /* XXX: should check the generic_write_sync retval */
1070 generic_write_sync(iocb, result); 1054 generic_write_sync(iocb, result);
1071 } 1055 }