dm_suspend(): Don't unlock the fs if a race with another suspend is detected. --- diff/drivers/md/dm.c 2004-02-27 11:38:08.000000000 +0000 +++ source/drivers/md/dm.c 2004-02-27 14:47:04.000000000 +0000 @@ -895,7 +895,11 @@ int dm_suspend(struct mapped_device *md) */ down_write(&md->lock); if (test_bit(DMF_BLOCK_IO, &md->flags)) { - __unlock_fs(md); + /* + * If we get here we know another thread is + * trying to suspend as well, so we leave the fs + * locked for this thread. + */ up_write(&md->lock); return -EINVAL; }