diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/activate/activate.c | 2 | ||||
-rw-r--r-- | lib/activate/dev_manager.c | 8 | ||||
-rw-r--r-- | lib/activate/dev_manager.h | 2 | ||||
-rw-r--r-- | lib/device/dev-cache.c | 4 | ||||
-rw-r--r-- | lib/device/device.h | 1 |
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; |