diff --git a/WHATS_NEW b/WHATS_NEW index e1bbadc2e..1a70a1c91 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.38 - ================================= + Fix tracking of validity of PVs with no mdas in lvmcache. Fix return values for reporting commands when run with no PVs, LVs, or VGs. Add omitted unlock_vg() call when sigint_caught() during vg processing. Fix wrong free_count on imported vg from pool device diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c index d232f6772..a25ccde41 100644 --- a/lib/cache/lvmcache.c +++ b/lib/cache/lvmcache.c @@ -1015,6 +1015,15 @@ int lvmcache_update_vgname_and_id(struct lvmcache_info *info, vgid = vgname; } + /* If PV without mdas is already in a real VG, don't make it orphan */ + if (is_orphan_vg(vgname) && info->vginfo && !list_size(&info->mdas) && + !is_orphan_vg(info->vginfo->vgname) && memlock()) + return 1; + + /* If moving PV from orphan to real VG, always mark it valid */ + if (!is_orphan_vg(vgname)) + info->status &= ~CACHE_INVALID; + if (!_lvmcache_update_vgname(info, vgname, vgid, vgstatus, creation_host, info->fmt) || !_lvmcache_update_vgid(info, info->vginfo, vgid) ||