diff options
author | David Teigland <teigland@redhat.com> | 2016-03-29 13:29:39 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2016-04-27 15:45:38 -0500 |
commit | de473e332808e3ff7cf4fb661b31f37d3a78d697 (patch) | |
tree | c29455dbafb5c655bd6a018f3ab68f04683f53b6 | |
parent | 86aed5e8fb232c740b76779dcdd89773415bd67f (diff) | |
download | lvm2-de473e332808e3ff7cf4fb661b31f37d3a78d697.tar.gz |
lvmcache: prefer duplicate device used by LVs
-rw-r--r-- | lib/cache/lvmcache.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index ba8731294..9a65d57d5 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -814,6 +814,7 @@ static void _choose_preferred_devs(struct cmd_context *cmd, int in_subsys1, in_subsys2; int is_dm1, is_dm2; int has_fs1, has_fs2; + int has_lv1, has_lv2; int change; /* @@ -869,6 +870,9 @@ next: dev2_major = MAJOR(dev2->dev); dev2_minor = MINOR(dev2->dev); + has_lv1 = (dev1->flags & DEV_USED_FOR_LV) ? 1 : 0; + has_lv2 = (dev2->flags & DEV_USED_FOR_LV) ? 1 : 0; + in_subsys1 = dev_subsystem_part_major(dt, dev1); in_subsys2 = dev_subsystem_part_major(dt, dev2); @@ -881,14 +885,19 @@ next: log_debug_cache("PV %s compare duplicates %s and %s", devl->dev->pvid, dev_name(dev1), dev_name(dev2)); - log_debug_cache("dup dev1 %s subsys %d dm %d fs %d", - dev_name(dev1), in_subsys1, is_dm1, has_fs1); - log_debug_cache("dup dev2 %s subsys %d dm %d fs %d", - dev_name(dev2), in_subsys2, is_dm2, has_fs2); + log_debug_cache("dup dev1 %s subsys %d dm %d fs %d lv %d", + dev_name(dev1), in_subsys1, is_dm1, has_fs1, has_lv1); + log_debug_cache("dup dev2 %s subsys %d dm %d fs %d lv %d", + dev_name(dev2), in_subsys2, is_dm2, has_fs2, has_lv2); change = 0; - if (has_fs1 && !has_fs2) { + if (has_lv1 && !has_lv2) { + /* keep 1 */ + } else if (has_lv2 && !has_lv1) { + /* change to 2 */ + change = 1; + } else if (has_fs1 && !has_fs2) { /* keep 1 */ } else if (has_fs2 && !has_fs1) { /* change to 2 */ @@ -914,7 +923,7 @@ next: id_write_format((const struct id *)info->dev->pvid, uuid, sizeof(uuid)); if (dev1 != info->dev) { - log_warn("PV %s is using preferred device %s, changed from %s", + log_warn("WARNING: PV %s prefers device %s instead of device %s.", uuid, dev_name(dev1), dev_name(info->dev)); /* * Move the preferred device from altdevs to add_cache_devs. @@ -929,8 +938,7 @@ next: dm_list_add(del_cache_devs, &del->list); } } else { - log_warn("PV %s is using preferred device %s", - uuid, dev_name(info->dev)); + log_warn("WARNING: PV %s prefers device %s.", uuid, dev_name(info->dev)); } /* |