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 | 267 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) |
| 268 | 268 | |
| 269 | 269 | #define DM_VERSION_MAJOR 4 |
| 270 | −#define DM_VERSION_MINOR 26 | |
| 270 | +#define DM_VERSION_MINOR 27 | |
| 271 | 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 | 274 | /* Status bits */ |
| 275 | 275 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ |
| @@ -341,4 +341,15 @@ enum { · 65 unmodified lines | ||
| 341 | 341 | */ |
| 342 | 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 | 355 | #endif /* _LINUX_DM_IOCTL_H */ |