diff options
author | Mike Snitzer <snitzer@redhat.com> | 2016-05-05 11:54:22 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-05-05 13:03:29 -0600 |
commit | 0ef5a50c1658d4d96a44f145bcb92ff3310c75b1 (patch) | |
tree | 19e029301415518262638966d5125ccd1470d39a /block | |
parent | bbd848e0fade51ae51dab86a0683069cef89953f (diff) | |
download | linux-0ef5a50c1658d4d96a44f145bcb92ff3310c75b1.tar.gz linux-0ef5a50c1658d4d96a44f145bcb92ff3310c75b1.tar.bz2 linux-0ef5a50c1658d4d96a44f145bcb92ff3310c75b1.zip |
block: make bio_inc_remaining() interface accessible again
Commit 326e1dbb57 ("block: remove management of bi_remaining when
restoring original bi_end_io") made bio_inc_remaining() private to bio.c
because the only use-case that made sense was confined to the
bio_chain() interface.
Since that time DM thinp went on to use bio_chain() in its relatively
complex implementation of async discard support. That implementation,
even when converted over to use the new async __blkdev_issue_discard()
interface, depends on deferred completion of the original discard bio --
which is most appropriately implemented using bio_inc_remaining().
DM thinp foolishly duplicated bio_inc_remaining(), local to dm-thin.c as
__bio_inc_remaining(), so re-exporting bio_inc_remaining() allows us to
put an end to that foolishness.
All said, bio_inc_remaining() should really only be used in conjunction
with bio_chain(). It isn't intended for generic bio reference counting.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/bio.c | 11 |
1 files changed, 0 insertions, 11 deletions
diff --git a/block/bio.c b/block/bio.c index 807d25e466ec..0e4aa42bc30d 100644 --- a/block/bio.c +++ b/block/bio.c @@ -311,17 +311,6 @@ static void bio_chain_endio(struct bio *bio) bio_endio(__bio_chain_endio(bio)); } -/* - * Increment chain count for the bio. Make sure the CHAIN flag update - * is visible before the raised count. - */ -static inline void bio_inc_remaining(struct bio *bio) -{ - bio_set_flag(bio, BIO_CHAIN); - smp_mb__before_atomic(); - atomic_inc(&bio->__bi_remaining); -} - /** * bio_chain - chain bio completions * @bio: the target bio |