diff options
| author | Alasdair G Kergon <agk@redhat.com> | 2012-07-27 10:08:16 -0400 |
|---|---|---|
| committer | Alasdair G Kergon <agk@redhat.com> | 2012-07-27 10:08:16 -0400 |
| commit | 1f4e0ff07980820977f45d6a5dbc81d3bb9ce4d3 (patch) | |
| tree | 5b5a159add010d09ea58ca12fd079b16f05333b8 /include/linux | |
| parent | e49e582965b3694f07a106adc83ddb44aa4f0890 (diff) | |
dm thin: commit before gathering status
Commit outstanding metadata before returning the status for a dm thin
pool so that the numbers reported are as up-to-date as possible.
The commit is not performed if the device is suspended or if
the DM_NOFLUSH_FLAG is supplied by userspace and passed to the target
through a new 'status_flags' parameter in the target's dm_status_fn.
The userspace dmsetup tool will support the --noflush flag with the
'dmsetup status' and 'dmsetup wait' commands from version 1.02.76
onwards.
Tested-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/device-mapper.h | 2 | ||||
| -rw-r--r-- | include/linux/dm-ioctl.h | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index eb753633b576..38d27a10aa5d 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
| @@ -72,7 +72,7 @@ typedef int (*dm_preresume_fn) (struct dm_target *ti); | |||
| 72 | typedef void (*dm_resume_fn) (struct dm_target *ti); | 72 | typedef void (*dm_resume_fn) (struct dm_target *ti); |
| 73 | 73 | ||
| 74 | typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, | 74 | typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, |
| 75 | char *result, unsigned int maxlen); | 75 | unsigned status_flags, char *result, unsigned maxlen); |
| 76 | 76 | ||
| 77 | typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv); | 77 | typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv); |
| 78 | 78 | ||
diff --git a/include/linux/dm-ioctl.h b/include/linux/dm-ioctl.h index 3ece4eee84cb..91e3a360f611 100644 --- a/include/linux/dm-ioctl.h +++ b/include/linux/dm-ioctl.h | |||
| @@ -267,9 +267,9 @@ enum { | |||
| 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 22 | 270 | #define DM_VERSION_MINOR 23 |
| 271 | #define DM_VERSION_PATCHLEVEL 1 | 271 | #define DM_VERSION_PATCHLEVEL 0 |
| 272 | #define DM_VERSION_EXTRA "-ioctl (2012-06-01)" | 272 | #define DM_VERSION_EXTRA "-ioctl (2012-07-25)" |
| 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 */ |
| @@ -307,6 +307,8 @@ enum { | |||
| 307 | 307 | ||
| 308 | /* | 308 | /* |
| 309 | * Set this to suspend without flushing queued ios. | 309 | * Set this to suspend without flushing queued ios. |
| 310 | * Also disables flushing uncommitted changes in the thin target before | ||
| 311 | * generating statistics for DM_TABLE_STATUS and DM_DEV_WAIT. | ||
| 310 | */ | 312 | */ |
| 311 | #define DM_NOFLUSH_FLAG (1 << 11) /* In */ | 313 | #define DM_NOFLUSH_FLAG (1 << 11) /* In */ |
| 312 | 314 | ||
