diff --git a/WHATS_NEW b/WHATS_NEW index c97b02d50..778b4b569 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.85 - =================================== + Mitigate annoying error warning from device is usable check if run as non-root. Add missing \0 for grown debug object in _bitset_with_random_bits(). Fix allocation of system_id buffer in volume_group structure. Fix readlink usage inside get_primary_dev(). diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM index 45004d195..5c7906609 100644 --- a/WHATS_NEW_DM +++ b/WHATS_NEW_DM @@ -1,5 +1,6 @@ Version 1.02.64 - =================================== + Fallback to control node creation only if node doesn't exist yet. Change dm_hash API for binary data to accept const void *key. Fix memory access of empty params string in _reload_with_suppression_v4(). Lower severity of selabel_lookup and matchpathcon failure to log_debug. diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c index 865bb35c4..cb041c6c9 100644 --- a/lib/activate/dev_manager.c +++ b/lib/activate/dev_manager.c @@ -141,10 +141,8 @@ int device_is_usable(struct device *dev) int only_error_target = 1; int r = 0; - if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) { - log_error("Failed to create dm_task struct to check dev status"); - return 0; - } + if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) + return_0; if (!dm_task_set_major_minor(dmt, MAJOR(dev->dev), MINOR(dev->dev), 1)) goto_out; diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c index 241e7927c..b52c9254b 100644 --- a/libdm/ioctl/libdm-iface.c +++ b/libdm/ioctl/libdm-iface.c @@ -365,8 +365,9 @@ static int _open_and_assign_control_fd(const char *control, _close_control_fd(); if ((_control_fd = open(control, O_RDWR)) < 0) { - if (!(ignore_nodev && errno == ENODEV)) - log_sys_error("open", control); + if (ignore_nodev && errno == ENODEV) + return 1; + log_sys_error("open", control); return 0; } @@ -412,7 +413,9 @@ static int _open_control(void) !_create_control(control, major, MAPPER_CTRL_MINOR)) goto error; - _open_and_assign_control_fd(control, 1); + /* Fallback to old code only if control node doesn't exist */ + if (!_open_and_assign_control_fd(control, 1)) + goto error; } /*