summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/activate/activate.c2
-rw-r--r--lib/activate/dev_manager.c8
-rw-r--r--lib/activate/dev_manager.h2
-rw-r--r--lib/device/dev-cache.c4
-rw-r--r--lib/device/device.h1
5 files changed, 10 insertions, 7 deletions
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 88a39fa9f..2e64ca16e 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -2395,7 +2395,7 @@ int pv_uses_vg(struct physical_volume *pv,
*/
int lvs_using_device(struct device *dev)
{
- return dev_manager_lvm_using_device(dev);
+ return dev_manager_lvm_using_device(MAJOR(dev->dev), MINOR(dev->dev));
}
void activation_release(void)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 78d9b622a..a5d8b2d55 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -3188,14 +3188,12 @@ static int _is_lvm_uuid(char *dm_name)
if (!strncmp(uuid, UUID_PREFIX, sizeof(UUID_PREFIX) - 1))
ret = 1;
-
- /* Verify that a uuid follows the LVM prefix? */
out:
dm_task_destroy(dmt);
return ret;
}
-int dev_manager_lvm_using_device(struct device *dev)
+int dev_manager_lvm_using_device(uint32_t major, uint32_t minor)
{
struct dm_task *dmt;
struct dm_task *dmt2;
@@ -3234,8 +3232,8 @@ int dev_manager_lvm_using_device(struct device *dev)
goto next;
for (i = 0; i < deps->count; i++) {
- if ((MAJOR(dev->dev) == (int) MAJOR(deps->device[i])) &&
- (MINOR(dev->dev) == (int) MINOR(deps->device[i]))) {
+ if ((major == (int) MAJOR(deps->device[i])) &&
+ (minor == (int) MINOR(deps->device[i]))) {
is_used = 1;
break;
}
diff --git a/lib/activate/dev_manager.h b/lib/activate/dev_manager.h
index fb042b6b3..c035c3256 100644
--- a/lib/activate/dev_manager.h
+++ b/lib/activate/dev_manager.h
@@ -97,6 +97,6 @@ int dev_manager_execute(struct dev_manager *dm);
int dev_manager_device_uses_vg(struct device *dev,
struct volume_group *vg);
-int dev_manager_lvm_using_device(struct device *dev);
+int dev_manager_lvm_using_device(uint32_t major, uint32_t minor);
#endif
diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c
index 47ae1403e..6355bf5ec 100644
--- a/lib/device/dev-cache.c
+++ b/lib/device/dev-cache.c
@@ -17,6 +17,7 @@
#include "btree.h"
#include "config.h"
#include "toolcontext.h"
+#include "activate.h"
#ifdef UDEV_SYNC_SUPPORT
#include <libudev.h>
@@ -409,6 +410,8 @@ static int _insert_dev(const char *path, dev_t d)
return 0;
}
+ dev->lvm_using = lvs_using_device(dev);
+
return 1;
}
@@ -1110,3 +1113,4 @@ const char *dev_name(const struct device *dev)
return (dev && dev->aliases.n) ? dm_list_item(dev->aliases.n, struct dm_str_list)->str :
unknown_device_name();
}
+
diff --git a/lib/device/device.h b/lib/device/device.h
index 6b01fb6e7..59a4008be 100644
--- a/lib/device/device.h
+++ b/lib/device/device.h
@@ -61,6 +61,7 @@ struct device {
int phys_block_size;
int block_size;
int read_ahead;
+ int lvm_using;
uint32_t flags;
unsigned size_seqno;
uint64_t size;