77 lines
1.8 KiB
Diff
77 lines
1.8 KiB
Diff
From 1c5804926a289882ff4a84f1c6ca6df1dd117215 Mon Sep 17 00:00:00 2001
|
|
From: rpm-build <rpm-build>
|
|
Date: Tue, 31 Aug 2021 08:22:41 -0400
|
|
Subject: [PATCH] Don't cache device-mapper major
|
|
|
|
---
|
|
src/util/virdevmapper.c | 19 +++++--------------
|
|
1 file changed, 5 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/src/util/virdevmapper.c b/src/util/virdevmapper.c
|
|
index a471504..2b9e689 100644
|
|
--- a/src/util/virdevmapper.c
|
|
+++ b/src/util/virdevmapper.c
|
|
@@ -46,11 +46,8 @@
|
|
|
|
G_STATIC_ASSERT(BUF_SIZE > sizeof(struct dm_ioctl));
|
|
|
|
-static unsigned int virDMMajor;
|
|
-
|
|
-
|
|
static int
|
|
-virDevMapperOnceInit(void)
|
|
+virDevMapperGetMajor(unsigned int *major)
|
|
{
|
|
g_autofree char *buf = NULL;
|
|
VIR_AUTOSTRINGLIST lines = NULL;
|
|
@@ -69,7 +66,7 @@ virDevMapperOnceInit(void)
|
|
|
|
if (sscanf(lines[i], "%u %ms\n", &maj, &dev) == 2 &&
|
|
STREQ(dev, DM_NAME)) {
|
|
- virDMMajor = maj;
|
|
+ *major = maj;
|
|
break;
|
|
}
|
|
}
|
|
@@ -84,10 +81,6 @@ virDevMapperOnceInit(void)
|
|
return 0;
|
|
}
|
|
|
|
-
|
|
-VIR_ONCE_GLOBAL_INIT(virDevMapper);
|
|
-
|
|
-
|
|
static void *
|
|
virDMIoctl(int controlFD, int cmd, struct dm_ioctl *dm, char **buf)
|
|
{
|
|
@@ -305,9 +298,6 @@ virDevMapperGetTargets(const char *path,
|
|
* consist of devices or yet another targets. If that's the
|
|
* case, we have to stop recursion somewhere. */
|
|
|
|
- if (virDevMapperInitialize() < 0)
|
|
- return -1;
|
|
-
|
|
if ((controlFD = virDMOpen()) < 0)
|
|
return -1;
|
|
|
|
@@ -319,13 +309,14 @@ bool
|
|
virIsDevMapperDevice(const char *dev_name)
|
|
{
|
|
struct stat buf;
|
|
+ unsigned int major;
|
|
|
|
- if (virDevMapperInitialize() < 0)
|
|
+ if (virDevMapperGetMajor(&major) < 0)
|
|
return false;
|
|
|
|
if (!stat(dev_name, &buf) &&
|
|
S_ISBLK(buf.st_mode) &&
|
|
- major(buf.st_rdev) == virDMMajor)
|
|
+ major(buf.st_rdev) == major)
|
|
return true;
|
|
|
|
return false;
|
|
--
|
|
2.18.2
|
|
|