diff options
Diffstat (limited to 'fs/affs/file.c')
-rw-r--r-- | fs/affs/file.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/affs/file.c b/fs/affs/file.c index 7c1a3d4c19c2..dcf27951781c 100644 --- a/fs/affs/file.c +++ b/fs/affs/file.c | |||
@@ -389,8 +389,7 @@ static void affs_write_failed(struct address_space *mapping, loff_t to) | |||
389 | } | 389 | } |
390 | 390 | ||
391 | static ssize_t | 391 | static ssize_t |
392 | affs_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter, | 392 | affs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) |
393 | loff_t offset) | ||
394 | { | 393 | { |
395 | struct file *file = iocb->ki_filp; | 394 | struct file *file = iocb->ki_filp; |
396 | struct address_space *mapping = file->f_mapping; | 395 | struct address_space *mapping = file->f_mapping; |
@@ -398,15 +397,15 @@ affs_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter, | |||
398 | size_t count = iov_iter_count(iter); | 397 | size_t count = iov_iter_count(iter); |
399 | ssize_t ret; | 398 | ssize_t ret; |
400 | 399 | ||
401 | if (rw == WRITE) { | 400 | if (iov_iter_rw(iter) == WRITE) { |
402 | loff_t size = offset + count; | 401 | loff_t size = offset + count; |
403 | 402 | ||
404 | if (AFFS_I(inode)->mmu_private < size) | 403 | if (AFFS_I(inode)->mmu_private < size) |
405 | return 0; | 404 | return 0; |
406 | } | 405 | } |
407 | 406 | ||
408 | ret = blockdev_direct_IO(rw, iocb, inode, iter, offset, affs_get_block); | 407 | ret = blockdev_direct_IO(iocb, inode, iter, offset, affs_get_block); |
409 | if (ret < 0 && (rw & WRITE)) | 408 | if (ret < 0 && iov_iter_rw(iter) == WRITE) |
410 | affs_write_failed(mapping, offset + count); | 409 | affs_write_failed(mapping, offset + count); |
411 | return ret; | 410 | return ret; |
412 | } | 411 | } |