block: clear bio->bi_bdev when putting a bio back in the cache
authorJens Axboe <axboe@kernel.dk>
Fri, 24 Feb 2023 16:59:44 +0000 (09:59 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 24 Feb 2023 20:19:56 +0000 (13:19 -0700)
This isn't strictly needed in terms of correctness, but it does allow
polling to know if the bio has been put already by a different task
and hence avoid polling something that we don't need to.

Cc: stable@vger.kernel.org
Fixes: be4d234d7aeb ("bio: add allocation cache abstraction")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c

index 2693f34..605c400 100644 (file)
@@ -772,6 +772,7 @@ static inline void bio_put_percpu_cache(struct bio *bio)
 
        if ((bio->bi_opf & REQ_POLLED) && !WARN_ON_ONCE(in_interrupt())) {
                bio->bi_next = cache->free_list;
+               bio->bi_bdev = NULL;
                cache->free_list = bio;
                cache->nr++;
        } else {