diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-06-22 14:38:06 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-05 19:11:02 -0400 |
commit | 2f3c7d87a347b12f725f6128b3097727b91b230e (patch) | |
tree | 6fec9e3cabc70450c148627da8ae3d2e89ab66d2 /fs/nfs/direct.c | |
parent | a5314a74928fa6dbc4503a8c64f43bb5c1c12ac1 (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.c | 16 |
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 | } |