diff options
| author | Ingo Molnar <mingo@kernel.org> | 2017-01-25 15:52:46 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2017-01-25 15:52:46 +0100 |
| commit | 47cd95a6326888a46e7ce8389cd394a3e1c647e7 (patch) | |
| tree | dfbb526bcca1a4f627294f19983e1f0b43af9204 /fs/block_dev.c | |
| parent | 9f6f941e25bad8fcffc24d10762962d62edba767 (diff) | |
| parent | 883af14e67e8b8702b5560aa64c888c0cd0bd66c (diff) | |
| download | linux-next-47cd95a6326888a46e7ce8389cd394a3e1c647e7.tar.gz linux-next-47cd95a6326888a46e7ce8389cd394a3e1c647e7.zip | |
Merge branch 'linus' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 6254cee8f8f3..5db5d1340d69 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -328,6 +328,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) struct file *file = iocb->ki_filp; struct inode *inode = bdev_file_inode(file); struct block_device *bdev = I_BDEV(inode); + struct blk_plug plug; struct blkdev_dio *dio; struct bio *bio; bool is_read = (iov_iter_rw(iter) == READ); @@ -353,6 +354,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) dio->multi_bio = false; dio->should_dirty = is_read && (iter->type == ITER_IOVEC); + blk_start_plug(&plug); for (;;) { bio->bi_bdev = bdev; bio->bi_iter.bi_sector = pos >> 9; @@ -394,6 +396,7 @@ __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) submit_bio(bio); bio = bio_alloc(GFP_KERNEL, nr_pages); } + blk_finish_plug(&plug); if (!dio->is_sync) return -EIOCBQUEUED; |
