On Tue, 2011-08-23 at 16:32 -0500, James Bottomley wrote: > > scsi_request_fn(), which does: > > > > /* > > * XXX(hch): This is rather suboptimal, scsi_dispatch_cmd will > > * take the lock again. > > */ > > spin_unlock_irq(shost->host_lock); > > Um, that one looks like a mistake missed in cleanup (probably years > ago). The other host_lock acquisitions aren't _irq, so this one > shouldn't be either. I can patch it up (or you can). I would much appreciate if someone who knows that whole stack would audit it, my preferred solution is removing that blk plug stuff from the scheduler guts since clearly nobody bothered making sure its sane. Something like the three patches below, lifted from -rt: sched-separate-the-scheduler-entry-for-preemption.patch sched-move-blk_schedule_flush_plug-out-of-__schedule.patch block-shorten-interrupt-disabled-regions.patch