On Thu, May 24, 2012 at 03:52:02PM -0400, Vivek Goyal wrote: > On Wed, May 23, 2012 at 05:02:45PM -0700, Kent Overstreet wrote: > > [..] > > @@ -234,6 +234,13 @@ void bio_free(struct bio *bio, struct bio_set *bs) > > { > > void *p; > > > > + if (!bs) { > > + if (bio_integrity(bio)) > > + bio_integrity_free(bio, fs_bio_set); > > + kfree(bio); > > + return; > > + } > > + > > Ok, this seems to be the code which will take care of freeing kmalloced > bio. I think putting little comment about the explicit assumption is not > a bad idea. Yeah, it's changing the semantics of bio_free(). I'll document that. > Somehow we need to integrate two patches so that we don't have memory leak > in bisection and reading code becomes easier. I don't think there's any memory leak issues with this patch... there are various annoyances with the dm code, though. > Also then what's the need of bio_reset() in previous patch. That seems to > be independent from getting rid of pkt_bio_destructor(). I would think > that keep we can split the patch and keep bio_reset() logic in a separate > patch. In fact I am not even sure that for one driver we should introduce > bio_reset() in generic block layer. So to me we should get rid of bio_reset() > and let all the gory details remain in driver. Well, it would be possible to kill bi_destructor without introducing bio_reset() - but that'd mean the kill bi_destructor patch would have to muck around in the pktcdvd code. IMO introducing bio_reset() makes the rest of the patch series much cleaner. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel