diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-17 18:05:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-17 18:05:23 -0400 |
commit | c2e7b207058d4ff6a9010430763fb561f307eb67 (patch) | |
tree | 8983947c4d62365de3d98113662ff9e643a42a0f /fs/ocfs2/aops.c | |
parent | c52b76185b7a1b300e5f15ff871c8f45ced3dee9 (diff) | |
parent | 24368aad47dc65b45040d6a31bfd6df1d6f3ec97 (diff) |
Merge branch 'work.preadv2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs cleanups from Al Viro:
"More cleanups from Christoph"
* 'work.preadv2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
nfsd: use RWF_SYNC
fs: add RWF_DSYNC aand RWF_SYNC
ceph: use generic_write_sync
fs: simplify the generic_write_sync prototype
fs: add IOCB_SYNC and IOCB_DSYNC
direct-io: remove the offset argument to dio_complete
direct-io: eliminate the offset argument to ->direct_IO
xfs: eliminate the pos variable in xfs_file_dio_aio_write
filemap: remove the pos argument to generic_file_direct_write
filemap: remove pos variables in generic_file_read_iter
Diffstat (limited to 'fs/ocfs2/aops.c')
-rw-r--r-- | fs/ocfs2/aops.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index abb0b0bf7c7f..c034edf3ef38 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c | |||
@@ -2423,13 +2423,11 @@ static int ocfs2_dio_end_io(struct kiocb *iocb, | |||
2423 | return 0; | 2423 | return 0; |
2424 | } | 2424 | } |
2425 | 2425 | ||
2426 | static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | 2426 | static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter) |
2427 | loff_t offset) | ||
2428 | { | 2427 | { |
2429 | struct file *file = iocb->ki_filp; | 2428 | struct file *file = iocb->ki_filp; |
2430 | struct inode *inode = file_inode(file)->i_mapping->host; | 2429 | struct inode *inode = file_inode(file)->i_mapping->host; |
2431 | struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); | 2430 | struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); |
2432 | loff_t end = offset + iter->count; | ||
2433 | get_block_t *get_block; | 2431 | get_block_t *get_block; |
2434 | 2432 | ||
2435 | /* | 2433 | /* |
@@ -2440,7 +2438,8 @@ static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | |||
2440 | return 0; | 2438 | return 0; |
2441 | 2439 | ||
2442 | /* Fallback to buffered I/O if we do not support append dio. */ | 2440 | /* Fallback to buffered I/O if we do not support append dio. */ |
2443 | if (end > i_size_read(inode) && !ocfs2_supports_append_dio(osb)) | 2441 | if (iocb->ki_pos + iter->count > i_size_read(inode) && |
2442 | !ocfs2_supports_append_dio(osb)) | ||
2444 | return 0; | 2443 | return 0; |
2445 | 2444 | ||
2446 | if (iov_iter_rw(iter) == READ) | 2445 | if (iov_iter_rw(iter) == READ) |
@@ -2449,7 +2448,7 @@ static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, | |||
2449 | get_block = ocfs2_dio_get_block; | 2448 | get_block = ocfs2_dio_get_block; |
2450 | 2449 | ||
2451 | return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, | 2450 | return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, |
2452 | iter, offset, get_block, | 2451 | iter, get_block, |
2453 | ocfs2_dio_end_io, NULL, 0); | 2452 | ocfs2_dio_end_io, NULL, 0); |
2454 | } | 2453 | } |
2455 | 2454 | ||