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 | |
parent | 8174202b34c30e0c07231bf63f18ab29af634f0b (diff) |
blkdev_aio_write() - turn into blkdev_write_iter()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | drivers/char/raw.c | 4 | ||||
-rw-r--r-- | fs/block_dev.c | 16 | ||||
-rw-r--r-- | include/linux/fs.h | 3 |
3 files changed, 9 insertions, 14 deletions
diff --git a/drivers/char/raw.c b/drivers/char/raw.c index cfb607a64b85..0102dc788608 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c | |||
@@ -286,8 +286,8 @@ static long raw_ctl_compat_ioctl(struct file *file, unsigned int cmd, | |||
286 | static const struct file_operations raw_fops = { | 286 | static const struct file_operations raw_fops = { |
287 | .read = new_sync_read, | 287 | .read = new_sync_read, |
288 | .read_iter = generic_file_read_iter, | 288 | .read_iter = generic_file_read_iter, |
289 | .write = do_sync_write, | 289 | .write = new_sync_write, |
290 | .aio_write = blkdev_aio_write, | 290 | .write_iter = blkdev_write_iter, |
291 | .fsync = blkdev_fsync, | 291 | .fsync = blkdev_fsync, |
292 | .open = raw_open, | 292 | .open = raw_open, |
293 | .release = raw_release, | 293 | .release = raw_release, |
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, |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 4b221637f09e..1b9b6c59abdd 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2425,8 +2425,7 @@ extern ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, lo | |||
2425 | extern ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); | 2425 | extern ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); |
2426 | 2426 | ||
2427 | /* fs/block_dev.c */ | 2427 | /* fs/block_dev.c */ |
2428 | extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov, | 2428 | extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from); |
2429 | unsigned long nr_segs, loff_t pos); | ||
2430 | extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, | 2429 | extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, |
2431 | int datasync); | 2430 | int datasync); |
2432 | extern void block_sync_page(struct page *page); | 2431 | extern void block_sync_page(struct page *page); |