dm_resume: dm_table_unplug_all() was being called on md->map, rather than the 'map' we carefully took a reference on earlier on in the function. --- diff/drivers/md/dm.c 2004-04-07 11:32:25.212680672 +0100 +++ source/drivers/md/dm.c 2004-04-07 11:32:27.087395672 +0100 @@ -974,7 +974,7 @@ int dm_resume(struct mapped_device *md) def = bio_list_get(&md->deferred); __flush_deferred_io(md, def); up_write(&md->lock); - dm_table_unplug_all(md->map); + dm_table_unplug_all(map); dm_table_put(map); return 0;