Don't let the ioctl interface drop a suspended device. --- diff/drivers/md/dm-ioctl.c 2002-11-13 20:00:31.000000000 +0000 +++ source/drivers/md/dm-ioctl.c 2002-12-17 15:58:58.000000000 +0000 @@ -818,6 +818,24 @@ return -EINVAL; } + /* + * You may ask the interface to drop its reference to an + * in use device. This is no different to unlinking a + * file that someone still has open. The device will not + * actually be destroyed until the last opener closes it. + * The name and uuid of the device (both are interface + * properties) will be available for reuse immediately. + * + * You don't want to drop a _suspended_ device from the + * interface, since that will leave you with no way of + * resuming it. + */ + if (dm_suspended(hc->md)) { + DMWARN("refusing to remove a suspended device."); + up_write(&_hash_lock); + return -EPERM; + } + __hash_remove(hc); up_write(&_hash_lock); return 0;