diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-04-03 03:21:50 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-05-06 17:38:01 -0400 |
commit | 1456c0a87c4241d3a801651019e66983c69ad17d (patch) | |
tree | 2e475b88151d625d22967324e6310ff4309ef731 /fs | |
parent | 8174202b34c30e0c07231bf63f18ab29af634f0b (diff) |
blkdev_aio_write() - turn into blkdev_write_iter()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/block_dev.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 3d97f4a257ff..4e36b8ea8aa4 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -1509,28 +1509,24 @@ static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
1509 | * Does not take i_mutex for the write and thus is not for general purpose | 1509 | * Does not take i_mutex for the write and thus is not for general purpose |
1510 | * use. | 1510 | * use. |
1511 | */ | 1511 | */ |
1512 | ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov, | 1512 | ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) |
1513 | unsigned long nr_segs, loff_t pos) | ||
1514 | { | 1513 | { |
1515 | struct file *file = iocb->ki_filp; | 1514 | struct file *file = iocb->ki_filp; |
1516 | struct blk_plug plug; | 1515 | struct blk_plug plug; |
1517 | ssize_t ret; | 1516 | ssize_t ret; |
1518 | 1517 | ||
1519 | BUG_ON(iocb->ki_pos != pos); | ||
1520 | |||
1521 | blk_start_plug(&plug); | 1518 | blk_start_plug(&plug); |
1522 | ret = __generic_file_aio_write(iocb, iov, nr_segs); | 1519 | ret = __generic_file_write_iter(iocb, from); |
1523 | if (ret > 0) { | 1520 | if (ret > 0) { |
1524 | ssize_t err; | 1521 | ssize_t err; |
1525 | 1522 | err = generic_write_sync(file, iocb->ki_pos - ret, ret); | |
1526 | err = generic_write_sync(file, pos, ret); | ||
1527 | if (err < 0) | 1523 | if (err < 0) |
1528 | ret = err; | 1524 | ret = err; |
1529 | } | 1525 | } |
1530 | blk_finish_plug(&plug); | 1526 | blk_finish_plug(&plug); |
1531 | return ret; | 1527 | return ret; |
1532 | } | 1528 | } |
1533 | EXPORT_SYMBOL_GPL(blkdev_aio_write); | 1529 | EXPORT_SYMBOL_GPL(blkdev_write_iter); |
1534 | 1530 | ||
1535 | static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to) | 1531 | static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to) |
1536 | { | 1532 | { |
@@ -1577,9 +1573,9 @@ const struct file_operations def_blk_fops = { | |||
1577 | .release = blkdev_close, | 1573 | .release = blkdev_close, |
1578 | .llseek = block_llseek, | 1574 | .llseek = block_llseek, |
1579 | .read = new_sync_read, | 1575 | .read = new_sync_read, |
1580 | .write = do_sync_write, | 1576 | .write = new_sync_write, |
1581 | .read_iter = blkdev_read_iter, | 1577 | .read_iter = blkdev_read_iter, |
1582 | .aio_write = blkdev_aio_write, | 1578 | .write_iter = blkdev_write_iter, |
1583 | .mmap = generic_file_mmap, | 1579 | .mmap = generic_file_mmap, |
1584 | .fsync = blkdev_fsync, | 1580 | .fsync = blkdev_fsync, |
1585 | .unlocked_ioctl = block_ioctl, | 1581 | .unlocked_ioctl = block_ioctl, |