Pull device-mapper changes from Mike Snitzer: "A lot of attention was paid to improving the thin-provisioning target's handling of metadata operation failures and running out of space. A new 'error_if_no_space' feature was added to allow users to error IOs rather than queue them when either the data or metadata space is exhausted. Additional fixes/features include: - a few fixes to properly support thin metadata device resizing - a solution for reliably waiting for a DM device's embedded kobject to be released before destroying the device - old dm-snapshot is updated to use the dm-bufio interface to take advantage of readahead capabilities that improve snapshot activation - new dm-cache target tunables to control how quickly data is promoted to the cache (fast) device - improved write efficiency of cluster mirror target by combining userspace flush and mark requests" * tag 'dm-3.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (35 commits) dm log userspace: allow mark requests to piggyback on flush requests dm space map metadata: fix bug in resizing of thin metadata dm cache: add policy name to status output dm thin: fix pool feature parsing dm sysfs: fix a module unload race dm snapshot: use dm-bufio prefetch dm snapshot: use dm-bufio dm snapshot: prepare for switch to using dm-bufio dm snapshot: use GFP_KERNEL when initializing exceptions dm cache: add block sizes and total cache blocks to status output dm btree: add dm_btree_find_lowest_key dm space map metadata: fix extending the space map dm space map common: make sure new space is used during extend dm: wait until embedded kobject is released before destroying a device dm: remove pointless kobject comparison in dm_get_from_kobject dm snapshot: call destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() dm cache policy mq: introduce three promotion threshold tunables dm cache policy mq: use list_del_init instead of list_del + INIT_LIST_HEAD dm thin: fix set_pool_mode exposed pool operation races dm thin: eliminate the no_free_space flag ...
Showing the changes to include/uapi/linux (1 of 29 files). Show all
Unified · Split
| @@ -201,11 +201,18 @@ · 200 unmodified lines | |||
| 201 | * int (*flush)(struct dm_dirty_log *log); | 201 | * int (*flush)(struct dm_dirty_log *log); |
| 202 | * | 202 | * |
| 203 | * Payload-to-userspace: | 203 | * Payload-to-userspace: |
| 204 | * None. | 204 | * If the 'integrated_flush' directive is present in the constructor |
| 205 | * table, the payload is as same as DM_ULOG_MARK_REGION: | ||
| 206 | * uint64_t [] - region(s) to mark | ||
| 207 | * else | ||
| 208 | * None | ||
| 205 | * Payload-to-kernel: | 209 | * Payload-to-kernel: |
| 206 | * None. | 210 | * None. |
| 207 | * | 211 | * |
| 208 | * No incoming or outgoing payload. Simply flush log state to disk. | 212 | * If the 'integrated_flush' option was used during the creation of the |
| 213 | * log, mark region requests are carried as payload in the flush request. | ||
| 214 | * Piggybacking the mark requests in this way allows for fewer communications | ||
| 215 | * between kernel and userspace. | ||
| 209 | * | 216 | * |
| 210 | * When the request has been processed, user-space must return the | 217 | * When the request has been processed, user-space must return the |
| 211 | * dm_ulog_request to the kernel - setting the 'error' field and clearing | 218 | * dm_ulog_request to the kernel - setting the 'error' field and clearing |
| @@ -385,8 +392,15 @@ · 173 unmodified lines | |||
| 385 | * version 2: DM_ULOG_CTR allowed to return a string containing a | 392 | * version 2: DM_ULOG_CTR allowed to return a string containing a |
| 386 | * device name that is to be registered with DM via | 393 | * device name that is to be registered with DM via |
| 387 | * 'dm_get_device'. | 394 | * 'dm_get_device'. |
| 395 | * version 3: DM_ULOG_FLUSH is capable of carrying payload for marking | ||
| 396 | * regions. This "integrated flush" reduces the number of | ||
| 397 | * requests between the kernel and userspace by effectively | ||
| 398 | * merging 'mark' and 'flush' requests. A constructor table | ||
| 399 | * argument ('integrated_flush') is required to turn this | ||
| 400 | * feature on, so it is backwards compatible with older | ||
| 401 | * userspace versions. | ||
| 388 | */ | 402 | */ |
| 389 | #define DM_ULOG_REQUEST_VERSION 2 | 403 | #define DM_ULOG_REQUEST_VERSION 3 |
| 390 | 404 | ||
| 391 | struct dm_ulog_request { | 405 | struct dm_ulog_request { |
| 392 | /* | 406 | /* |