> > > > > > [<c0219091>] cfq_set_request+0x351/0x3b0 > > [<c020c7fc>] elv_set_request+0x1c/0x40 > > [<c020fcff>] get_request+0x23f/0x270 > > [<c0210537>] get_request_wait+0x27/0x120 > > [<c02107ca>] __make_request+0x5a/0x350 > > [<c020f40f>] generic_make_request+0x16f/0x220 > > [<c02117e4>] submit_bio+0x64/0x110 > > > > now cfq_set_request() uses several inlines which muddies the situation, > > but lockdep claims one of them is not done correctly. (eg either it > > takes the lock incorrectly or something does spin_unlock_irq while the > > lock is held) > > It's not really inlined trickery, the trace is exactly as printed. what I meant is that cfq_set_request() calls a few inlines that also take locks so it might be one of those instead > A few > things may be allocated from that path, so we pass gfp_mask around. I'll > double check it tonight, but I don't currently see what could be wrong. > Would lockdep complain about: > > spin_lock_irqsave(lock, flags); > ... > spin_unlock_irq(lock); > ... > spin_lock_irq(lock); > ... > spin_unlock_irqrestore(lock, flags); this is fine for lockdep IF and only IF there is no "out lock" held around this that requires irqs to be off. So if you do spin_lock_irqsave(lock1, flags); ... spin_lock_irqsave(lock2, flags); spin_unlock_irq(lock2) ... then lockdep WILL complain, and rightfully so, about a violation since lock1 gets violated here ;) -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html