This patch allows the removal of an open device to be deferred until it is closed. (Previously such a removal attempt would fail.) The deferred remove functionality is enabled by setting the flag DM_DEFERRED_REMOVE in the ioctl structure on DM_DEV_REMOVE or DM_REMOVE_ALL ioctl. On return from DM_DEV_REMOVE, the flag DM_DEFERRED_REMOVE indicates if the device was removed immediately or flagged to be removed on close - if the flag is clear, the device was removed. On return from DM_DEV_STATUS and other ioctls, the flag DM_DEFERRED_REMOVE is set if the device is scheduled to be removed on closure. A device that is scheduled to be deleted can be revived using the message "@cancel_deferred_remove". This message clears the DMF_DEFERRED_REMOVE flag so that the device won't be deleted on close.
Showing the changes to include/uapi/linux (1 of 4 files). Show all
Unified · Split
| @@ -267,9 +267,9 @@ enum { · 266 unmodified lines | |||
| 267 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) | 267 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) |
| 268 | 268 | ||
| 269 | #define DM_VERSION_MAJOR 4 | 269 | #define DM_VERSION_MAJOR 4 |
| 270 | #define DM_VERSION_MINOR 26 | 270 | #define DM_VERSION_MINOR 27 |
| 271 | #define DM_VERSION_PATCHLEVEL 0 | 271 | #define DM_VERSION_PATCHLEVEL 0 |
| 272 | #define DM_VERSION_EXTRA "-ioctl (2013-08-15)" | 272 | #define DM_VERSION_EXTRA "-ioctl (2013-10-30)" |
| 273 | 273 | ||
| 274 | /* Status bits */ | 274 | /* Status bits */ |
| 275 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ | 275 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ |
| @@ -341,4 +341,15 @@ enum { · 65 unmodified lines | |||
| 341 | */ | 341 | */ |
| 342 | #define DM_DATA_OUT_FLAG (1 << 16) /* Out */ | 342 | #define DM_DATA_OUT_FLAG (1 << 16) /* Out */ |
| 343 | 343 | ||
| 344 | /* | ||
| 345 | * If set with DM_DEV_REMOVE or DM_REMOVE_ALL this indicates that if | ||
| 346 | * the device cannot be removed immediately because it is still in use | ||
| 347 | * it should instead be scheduled for removal when it gets closed. | ||
| 348 | * | ||
| 349 | * On return from DM_DEV_REMOVE, DM_DEV_STATUS or other ioctls, this | ||
| 350 | * flag indicates that the device is scheduled to be removed when it | ||
| 351 | * gets closed. | ||
| 352 | */ | ||
| 353 | #define DM_DEFERRED_REMOVE (1 << 17) /* In/Out */ | ||
| 354 | |||
| 344 | #endif /* _LINUX_DM_IOCTL_H */ | 355 | #endif /* _LINUX_DM_IOCTL_H */ |