[dm-devel] [PATCH 0/8] dm: request-based dm-multipath

Kiyoshi Ueda k-ueda at ct.jp.nec.com
Tue Mar 10 06:10:12 UTC 2009


Hi Hannes,

On 2009/01/30 17:05 +0900, Kiyoshi Ueda wrote:
>>>   o kernel panic occurs by frequent table swapping during heavy I/Os.
>>>  
>> That's probably fixed by this patch:
>>
>> --- linux-2.6.27/drivers/md/dm.c.orig   2009-01-23 15:59:22.741461315 +0100
>> +++ linux-2.6.27/drivers/md/dm.c        2009-01-26 09:03:02.787605723 +0100
>> @@ -714,13 +714,14 @@ static void free_bio_clone(struct reques
>>         struct dm_rq_target_io *tio = clone->end_io_data;
>>         struct mapped_device *md = tio->md;
>>         struct bio *bio;
>> -       struct dm_clone_bio_info *info;
>>  
>>         while ((bio = clone->bio) != NULL) {
>>                 clone->bio = bio->bi_next;
>>  
>> -               info = bio->bi_private;
>> -               free_bio_info(md, info);
>> +               if (bio->bi_private) {
>> +                       struct dm_clone_bio_info *info = bio->bi_private;
>> +                       free_bio_info(md, info);
>> +               }
>>  
>>                 bio->bi_private = md->bs;
>>                 bio_put(bio);
>>
>> The info field is not necessarily filled here, so we have to check for it
>> explicitly.
>>
>> With these two patches request-based multipathing have survived all stress-tests
>> so far. Except on mainframe (zfcp), but that's more a driver-related thing.

My problem was different from that one, and I have fixed my problem.

Do you hit some problem without the patch above?
If so, that should be a programming bug and we need to fix it.  Otherwise,
we should be leaking a memory (since all cloned bio should always have
the dm_clone_bio_info structure in ->bi_private).

Thanks,
Kiyoshi Ueda




More information about the dm-devel mailing list