mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-23 21:35:29 +03:00
Use mdas_empty_or_ignored() in place of checks for empty mda list.
With the addition of ignored mdas, we replace all checks for an empty mda list with a new function to look for either an empty mda list or ignored mdas. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
This commit is contained in:
parent
06468b9049
commit
50e879ef56
3
lib/cache/lvmcache.c
vendored
3
lib/cache/lvmcache.c
vendored
@ -1197,7 +1197,8 @@ int lvmcache_update_vgname_and_id(struct lvmcache_info *info,
|
||||
}
|
||||
|
||||
/* If PV without mdas is already in a real VG, don't make it orphan */
|
||||
if (is_orphan_vg(vgname) && info->vginfo && !dm_list_size(&info->mdas) &&
|
||||
if (is_orphan_vg(vgname) && info->vginfo &&
|
||||
mdas_empty_or_ignored(&info->mdas) &&
|
||||
!is_orphan_vg(info->vginfo->vgname) && memlock())
|
||||
return 1;
|
||||
|
||||
|
@ -1305,7 +1305,7 @@ static int pvcreate_check(struct cmd_context *cmd, const char *name,
|
||||
* this means checking every VG by scanning every PV on the
|
||||
* system.
|
||||
*/
|
||||
if (pv && is_orphan(pv) && !dm_list_size(&mdas)) {
|
||||
if (pv && is_orphan(pv) && mdas_empty_or_ignored(&mdas)) {
|
||||
if (!scan_vgs_for_pvs(cmd))
|
||||
return_0;
|
||||
pv = pv_read(cmd, name, NULL, NULL, 0, 0);
|
||||
@ -1798,7 +1798,7 @@ static struct physical_volume *_find_pv_by_name(struct cmd_context *cmd,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (is_orphan_vg(pv->vg_name) && !dm_list_size(&mdas)) {
|
||||
if (is_orphan_vg(pv->vg_name) && mdas_empty_or_ignored(&mdas)) {
|
||||
/* If a PV has no MDAs - need to search all VGs for it */
|
||||
if (!scan_vgs_for_pvs(cmd))
|
||||
return_NULL;
|
||||
@ -2722,8 +2722,8 @@ static struct volume_group *_vg_read(struct cmd_context *cmd,
|
||||
/* Ensure every PV in the VG was in the cache */
|
||||
if (correct_vg) {
|
||||
/*
|
||||
* If the VG has PVs without mdas, they may still be
|
||||
* orphans in the cache: update the cache state here.
|
||||
* If the VG has PVs without mdas, or ignored mdas, they may
|
||||
* still be orphans in the cache: update the cache state here.
|
||||
*/
|
||||
if (!inconsistent &&
|
||||
dm_list_size(&correct_vg->pvs) > dm_list_size(pvids)) {
|
||||
@ -2738,11 +2738,12 @@ static struct volume_group *_vg_read(struct cmd_context *cmd,
|
||||
|
||||
/*
|
||||
* PV not marked as belonging to this VG in cache.
|
||||
* Check it's an orphan without metadata area.
|
||||
* Check it's an orphan without metadata area
|
||||
* not ignored.
|
||||
*/
|
||||
if (!(info = info_from_pvid(pvl->pv->dev->pvid, 1)) ||
|
||||
!info->vginfo || !is_orphan_vg(info->vginfo->vgname) ||
|
||||
dm_list_size(&info->mdas)) {
|
||||
!mdas_empty_or_ignored(&info->mdas)) {
|
||||
inconsistent_pvs = 1;
|
||||
break;
|
||||
}
|
||||
@ -3128,20 +3129,24 @@ const char *find_vgname_from_pvid(struct cmd_context *cmd,
|
||||
return_NULL;
|
||||
}
|
||||
/*
|
||||
* If an orphan PV has no MDAs it may appear to be an
|
||||
* orphan until the metadata is read off another PV in
|
||||
* the same VG. Detecting this means checking every VG
|
||||
* by scanning every PV on the system.
|
||||
* If an orphan PV has no MDAs, or it has MDAs but the
|
||||
* MDA is ignored, it may appear to be an orphan until
|
||||
* the metadata is read off another PV in the same VG.
|
||||
* Detecting this means checking every VG by scanning
|
||||
* every PV on the system.
|
||||
*/
|
||||
if (!dm_list_size(&info->mdas)) {
|
||||
if (mdas_empty_or_ignored(&info->mdas)) {
|
||||
if (!scan_vgs_for_pvs(cmd)) {
|
||||
log_error("Rescan for PVs without "
|
||||
"metadata areas failed.");
|
||||
return NULL;
|
||||
}
|
||||
/*
|
||||
* Ask lvmcache again - we may have a non-orphan
|
||||
* name now
|
||||
*/
|
||||
vgname = lvmcache_vgname_from_pvid(cmd, pvid);
|
||||
}
|
||||
/* Ask lvmcache again - we may have a non-orphan name now */
|
||||
vgname = lvmcache_vgname_from_pvid(cmd, pvid);
|
||||
}
|
||||
return vgname;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user