diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM index df475690d..e0d55d093 100644 --- a/WHATS_NEW_DM +++ b/WHATS_NEW_DM @@ -1,5 +1,6 @@ Version 1.02.64 - =================================== + Add inactive table query support for kernel driver >= 4.11.6 (RHEL 5.7). Log debug open_count in _node_has_closed_parents(). Change dm_report_field_string() API to accept const char *const *data. diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c index 67b0ffe71..539f892da 100644 --- a/libdm/ioctl/libdm-iface.c +++ b/libdm/ioctl/libdm-iface.c @@ -992,6 +992,23 @@ int dm_cookie_supported(void) _dm_version_minor >= 15); } +static int dm_inactive_supported(void) +{ + int inactive_supported = 0; + + if (dm_check_version() && _dm_version >= 4) { + if (_dm_version_minor >= 16) + inactive_supported = 1; /* upstream */ + else if (_dm_version_minor == 11 && + (_dm_version_patchlevel >= 6 && + _dm_version_patchlevel <= 40)) { + inactive_supported = 1; /* RHEL 5.7 */ + } + } + + return inactive_supported; +} + void *dm_get_next_target(struct dm_task *dmt, void *next, uint64_t *start, uint64_t *length, char **target_type, char **params) @@ -1548,7 +1565,7 @@ static struct dm_ioctl *_flatten(struct dm_task *dmt, unsigned repeat_count) dmi->flags |= DM_SECURE_DATA_FLAG; } if (dmt->query_inactive_table) { - if (_dm_version_minor < 16) + if (!dm_inactive_supported()) log_warn("WARNING: Inactive table query unsupported " "by kernel. It will use live table."); dmi->flags |= DM_QUERY_INACTIVE_TABLE_FLAG;