ocfs2: use spinlock irqsave for downconvert lock.patch
authorSrinivas Eeda <srinivas.eeda@oracle.com>
Tue, 31 Jan 2012 05:51:22 +0000 (21:51 -0800)
committerJoel Becker <jlbec@evilplan.org>
Wed, 4 Jul 2012 06:27:15 +0000 (23:27 -0700)
commita75e9ccabd925d16954739bd977c54695c9310d0
treef3f80253d2fbabdba0fbe35d48482d6a550ea030
parent16865b7c42fbce8a4d2b278460e387e719e289cb
ocfs2: use spinlock irqsave for downconvert lock.patch

When ocfs2dc thread holds dc_task_lock spinlock and receives soft IRQ it
deadlock itself trying to get same spinlock in ocfs2_wake_downconvert_thread.
Below is the stack snippet.

The patch disables interrupts when acquiring dc_task_lock spinlock.

ocfs2_wake_downconvert_thread
ocfs2_rw_unlock
ocfs2_dio_end_io
dio_complete
.....
bio_endio
req_bio_endio
....
scsi_io_completion
blk_done_softirq
__do_softirq
do_softirq
irq_exit
do_IRQ
ocfs2_downconvert_thread
[kthread]

Signed-off-by: Srinivas Eeda <srinivas.eeda@oracle.com>
Signed-off-by: Joel Becker <jlbec@evilplan.org>
fs/ocfs2/dlmglue.c