[dm-devel] [PATCH] dm-mpath: Don't call dm_table_event() inside a spinlock
Kevin Corry
kevcorry at us.ibm.com
Fri Feb 13 10:41:05 UTC 2004
Can't call dm_table_event() while holding a spinlock with interrupts disabled.
--- diff/drivers/md/dm-mpath.c 2004-02-12 14:06:50.000000000 -0600
+++ source/drivers/md/dm-mpath.c 2004-02-12 14:06:32.000000000 -0600
@@ -408,6 +408,7 @@
unsigned long flags;
struct multipath *m;
unsigned interval = 0;
+ int event;
down(&_mpath_lock);
list_for_each_entry (m, &_mpaths, list) {
@@ -416,12 +417,16 @@
submit_ios(bio_list_get(&m->test_ios));
spin_lock_irqsave(&m->lock, flags);
+ event = 0;
if (m->trigger_event) {
- dm_table_event(m->ti->table);
+ event = 1;
m->trigger_event = 0;
}
spin_unlock_irqrestore(&m->lock, flags);
+ if (event)
+ dm_table_event(m->ti->table);
+
interval = min_not_zero(interval, m->test_interval);
}
up(&_mpath_lock);
More information about the dm-devel
mailing list