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-06 15:54:07.638345616 +0100 +++ source/drivers/md/dm.c 2004-04-06 15:54:09.482065328 +0100 @@ -981,7 +981,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;