Re: [PATCH UPDATED 4/5] dm: implement REQ_FLUSH/FUA support for request-baseddm

From: Tejun Heo
Date: Thu Sep 02 2010 - 09:23:34 EST


Hello,

On 09/01/2010 09:15 AM, Kiyoshi Ueda wrote:
> I don't see any obvious problem on this patch.
> However, I hit a NULL pointer dereference below when I use a mpath
> device with barrier option of ext3. I'm investigating the cause now.
> (Also I'm not sure the cause of the hang which Mike is hitting yet.)
>
> I tried on the commit 28dd53b26d362c16234249bad61db8cbd9222d0b of
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git flush-fua.
>
> # mke2fs -j /dev/mapper/mpatha
> # mount -o barrier=1 /dev/mapper/mpatha /mnt/0
> # dd if=/dev/zero of=/mnt/0/a bs=512 count=1
> # sync

Hmm... I'm trying to reproduce this problem but hasn't been successful
yet.

> BUG: unable to handle kernel NULL pointer dereference at 0000000000000078
> IP: [<ffffffffa0070ec3>] scsi_finish_command+0xa3/0x120 [scsi_mod]

Can you please ask gdb which source line this is?

> Also, I have one comment below on this patch.
>
>> @@ -2619,9 +2458,8 @@ int dm_suspend(struct mapped_device *md,
>> up_write(&md->io_lock);
>>
>> /*
>> - * Request-based dm uses md->wq for barrier (dm_rq_barrier_work) which
>> - * can be kicked until md->queue is stopped. So stop md->queue before
>> - * flushing md->wq.
>> + * Stop md->queue before flushing md->wq in case request-based
>> + * dm defers requests to md->wq from md->queue.
>> */
>> if (dm_request_based(md))
>> stop_queue(md->queue);
>
> Request-based dm doesn't use md->wq now, so you can just remove
> the comment above.

I sure can remove it but md->wq already has most stuff necessary to
process deferred requests and when someone starts using it, having the
comment there about the rather delicate ordering would definitely be
helpful, so I suggest keeping the comment.

Thanks.

--
tejun

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/