diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2021-10-27 14:21:07 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-10-27 14:54:58 +0200 |
commit | 1bb6b81029456f4e2e6727c5167f43bdfc34bee5 (patch) | |
tree | 02ea0da43b7ad152375b9fb59cd2c90ed0acb1cf /include | |
parent | block: Add independent access ranges support (diff) | |
download | linux-1bb6b81029456f4e2e6727c5167f43bdfc34bee5.tar.xz linux-1bb6b81029456f4e2e6727c5167f43bdfc34bee5.zip |
block: avoid extra iter advance with async iocb
Nobody cares about iov iterators state if we return -EIOCBQUEUED, so as
the we now have __blkdev_direct_IO_async(), which gets pages only once,
we can skip expensive iov_iter_advance(). It's around 1-2% of all CPU
spent.
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/a6158edfbfa2ae3bc24aed29a72f035df18fad2f.1635337135.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/bio.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index c88700d1bdc3..fe6bdfbbef66 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -417,6 +417,7 @@ int bio_add_zone_append_page(struct bio *bio, struct page *page, void __bio_add_page(struct bio *bio, struct page *page, unsigned int len, unsigned int off); int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter); +void bio_iov_bvec_set(struct bio *bio, struct iov_iter *iter); void __bio_release_pages(struct bio *bio, bool mark_dirty); extern void bio_set_pages_dirty(struct bio *bio); extern void bio_check_pages_dirty(struct bio *bio); |