This patch changes how suspend works in dm.c (dm_suspend). As a
result, it breaks multipath. It is necessary for cluster mirroring to
ensure that a suspend happens before other nodes have a chance at
getting an inconsistent read.
brassow
diff -urN linux-2.6.12-00005/drivers/md/dm.c
linux-2.6.12-00006/drivers/md/dm.c
--- linux-2.6.12-00005/drivers/md/dm.c 2005-06-17 14:48:29.000000000
-0500
+++ linux-2.6.12-00006/drivers/md/dm.c 2005-06-30 01:06:36.146154215
-0500
@@ -1055,14 +1055,14 @@
if (test_bit(DMF_BLOCK_IO, &md->flags))
goto out_read_unlock;
- error = __lock_fs(md);
- if (error)
- goto out_read_unlock;
-
map = dm_get_table(md);
if (map)
dm_table_presuspend_targets(map);
+ error = __lock_fs(md);
+ if (error)
+ goto out_read_unlock;
+
up_read(&md->lock);
/*