Re: [PATCH v2 01/14] block: Generalized bio pool freeing
From: Boaz Harrosh <hidden>
Date: 2012-05-24 18:06:26
Also in:
dm-devel, linux-fsdevel, lkml
From: Boaz Harrosh <hidden>
Date: 2012-05-24 18:06:26
Also in:
dm-devel, linux-fsdevel, lkml
On 05/24/2012 08:46 PM, Vivek Goyal wrote:
On Wed, May 23, 2012 at 05:02:38PM -0700, Kent Overstreet wrote:quoted
With the old code, when you allocate a bio from a bio pool you have to implement your own destructor that knows how to find the bio pool the bio was originally allocated from. This adds a new field to struct bio (bi_pool) and changes bio_alloc_bioset() to use it. This makes various bio destructors unnecessary, so they're then deleted.[..]quoted
@@ -419,7 +406,11 @@ void bio_put(struct bio *bio) */ if (atomic_dec_and_test(&bio->bi_cnt)) { bio->bi_next = NULL; - bio->bi_destructor(bio); + + if (bio->bi_pool) + bio_free(bio, bio->bi_pool); + else + bio->bi_destructor(bio);If you have removed all the users of bi_destructor, then I am wondering that why are we retaining this field and trying to call into it when bio_pool is not set?
At this point there are still some users they are all removed and this field later in the patchset Boaz
Thanks Vivek