Thread (1 message) 1 message, 1 author, 2012-05-24

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help