On 05/24/12 09:39, Kent Overstreet wrote: > On Thu, May 24, 2012 at 09:19:12AM +0900, Jun'ichi Nomura wrote: >> The destructor may also be called from blk_rq_unprep_clone(), >> which just puts bio. >> So this patch will introduce a memory leak. > > Well, keeping around bi_destructor solely for that reason would be > pretty lousy. Can you come up with a better solution? I don't have good one but here are some ideas: a) Do bio_endio() rather than bio_put() in blk_rq_unprep_clone() and let bi_end_io reap additional data. It looks ugly. b) Separate the constructor from blk_rq_prep_clone(). dm has to do rq_for_each_bio loop again for constructor. Possible performance impact. c) Open code blk_rq_prep/unprep_clone() in dm. It exposes unnecessary block-internals to dm. d) Pass destructor function to blk_rq_prep/unprep_clone() for them to callback. Umm, is "d)" better? -- Jun'ichi Nomura, NEC Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html