lvm2/0007-dev_manager-fix-dm_task_get_device_list.patch

45 lines
1.6 KiB
Diff

From 6ffb150f3075da69597e6f3e84d7533f2d8a36fa Mon Sep 17 00:00:00 2001
From: Zdenek Kabelac <zkabelac@redhat.com>
Date: Wed, 16 Feb 2022 00:33:25 +0100
Subject: dev_manager: fix dm_task_get_device_list
With very old version of DM target driver we have to avoid
trying to use newuuid setting - otherwise we get error
during ioctl preparation phase.
Patch is fixing regression from commit:
988ea0e94c79a496f2619eab878fd9db6168711d
---
lib/activate/dev_manager.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 6cf4c718c389..3fd6aaff76a9 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -107,6 +107,8 @@ static struct dm_task *_setup_task_run(int task, struct dm_info *info,
int with_flush,
int query_inactive)
{
+ char vsn[80];
+ unsigned maj, min;
struct dm_task *dmt;
if (!(dmt = dm_task_create(task)))
@@ -142,7 +144,11 @@ static struct dm_task *_setup_task_run(int task, struct dm_info *info,
case DM_DEVICE_TARGET_MSG:
return dmt; /* TARGET_MSG needs more local tweaking before task_run() */
case DM_DEVICE_LIST:
- if (!dm_task_set_newuuid(dmt, " ")) // new uuid has no meaning here
+ /* Use 'newuuid' only with DM version that supports it */
+ if (driver_version(vsn, sizeof(vsn)) &&
+ (sscanf(vsn, "%u.%u", &maj, &min) == 2) &&
+ (maj == 4 ? min >= 19 : maj > 4) &&
+ !dm_task_set_newuuid(dmt, " ")) // new uuid has no meaning here
log_warn("WARNING: Failed to query uuid with LIST.");
break;
default:
--
2.34.1