On Tue, Mar 08 2011 at 5:05pm -0500, Mike Snitzer <snitzer@xxxxxxxxxx> wrote: > On Tue, Mar 08 2011 at 3:27pm -0500, > Jens Axboe <jaxboe@xxxxxxxxxxxx> wrote: > > > On 2011-03-08 21:21, Mike Snitzer wrote: > > > On Tue, Mar 08 2011 at 7:16am -0500, > > > Jens Axboe <jaxboe@xxxxxxxxxxxx> wrote: > > > > > >> On 2011-03-03 23:13, Mike Snitzer wrote: > > >>> I'm now hitting a lockdep issue, while running a 'for-2.6.39/stack-plug' > > >>> kernel, when I try an fsync heavy workload to a request-based mpath > > >>> device (the kernel ultimately goes down in flames, I've yet to look at > > >>> the crashdump I took) > > >> > > >> Mike, can you re-run with the current stack-plug branch? I've fixed the > > >> !CONFIG_BLOCK and rebase issues, and also added a change for this flush > > >> on schedule event. It's run outside of the runqueue lock now, so > > >> hopefully that should solve this one. > > > > > > Works for me, thanks. > > > > Super, thanks! Out of curiousity, did you use dm/md? > > Yes, I've been using a request-based DM multipath device. Hi Jens, I just got to reviewing your onstack plugging DM changes (I looked at the core block layer changes for additional context and also had a brief look at MD). I need to put more time to the review of all this code but one thing that is immediately apparent is that after these changes DM only has one onstack plug/unplug -- in drivers/md/dm-kcopyd.c:do_work() You've removed a considerable amount of implicit plug/explicit unplug code from DM (and obviously elsewhere but I have my DM hat on ;). First question: is relying on higher-level (aio, fs, read-ahead) explicit plugging/unplugging sufficient? Seems odd to not have the control/need to unplug the DM device upon resume (after a suspend). (this naive question/concern stems from me needing to understand the core block layer's onstack plugging changes better) (but if those higher-level explicit onstack plug changes make all this code removal possible shouldn't those commits come before changing underlying block drivers like DM, MD, etc?) I noticed that driver/md/dm-raid1.c:do_mirror() seems to follow the same pattern of drivers/md/dm-kcopyd.c:do_work().. so rather than remove dm_table_unplug_all() shouldn't it be replaced with a blk_start_plug/blk_finish_plug? Also, in your MD changes, you removed all calls to md_unplug() but didn't remove md_unplug(). Seems it should be removed along with the 'plug' member of 'struct mddev_t'? Neil? Thanks, Mike -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel