diff options
author | Christoph Hellwig <hch@lst.de> | 2018-11-30 11:23:48 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-11-30 18:28:51 +0300 |
commit | 531724abc3bfb556c1dd68086cf9cb51f76464e3 (patch) | |
tree | 8bfb395ad202bb38e9ed47d574abab5d3eac92bb /lib/sbitmap.c | |
parent | 27fae429acee1e9418059e7fa545438075af5256 (diff) | |
download | linux-531724abc3bfb556c1dd68086cf9cb51f76464e3.tar.xz |
block: avoid extra bio reference for async O_DIRECT
The bio referencing has a trick that doesn't do any actual atomic
inc/dec on the reference count until we have to elevator to > 1. For the
async IO O_DIRECT case, we can't use the simple DIO variants, so we use
__blkdev_direct_IO(). It always grabs an extra reference to the bio
after allocation, which means we then enter the slower path of actually
having to do atomic_inc/dec on the count.
We don't need to do that for the async case, unless we end up going
multi-bio, in which case we're already doing huge amounts of IO. For the
smaller IO case (< BIO_MAX_PAGES), we can do without the extra ref.
Based on an earlier patch (and commit log) from Jens Axboe.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'lib/sbitmap.c')
0 files changed, 0 insertions, 0 deletions