diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index edd816d20..d24e9a232 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -713,9 +713,8 @@ static int _lvmcache_update_pvid(struct lvmcache_info *info, const char *pvid) if (((dm_hash_lookup(_pvid_hash, pvid)) == info) && !strcmp(info->dev->pvid, pvid)) return 1; - if (*info->dev->pvid) { + if (*info->dev->pvid) dm_hash_remove(_pvid_hash, info->dev->pvid); - } strncpy(info->dev->pvid, pvid, sizeof(info->dev->pvid)); if (!dm_hash_insert(_pvid_hash, pvid, info)) { log_error("_lvmcache_update: pvid insertion failed: %s", pvid); @@ -1140,11 +1139,15 @@ struct lvmcache_info *lvmcache_add(struct labeller *labeller, const char *pvid, //else if (dm_is_dm_major(MAJOR(existing->dev->dev)) && //dm_is_dm_major(MAJOR(dev->dev))) // - else + else if (!strcmp(pvid_s, existing->dev->pvid)) log_error("Found duplicate PV %s: using %s not " "%s", pvid, dev_name(dev), dev_name(existing->dev)); } + if (strcmp(pvid_s, existing->dev->pvid)) + log_debug("Updating pvid cache to %s (%s) from %s (%s)", + pvid_s, dev_name(dev), + existing->dev->pvid, dev_name(existing->dev)); /* Switch over to new preferred device */ existing->dev = dev; info = existing;