diff options
author | Alasdair G Kergon <agk@redhat.com> | 2015-03-18 23:31:46 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2015-03-18 23:31:46 +0000 |
commit | 5bf74f2997cedb481e0fac21e3aa30fc61f8e5b1 (patch) | |
tree | de1c3bf3e9a62096d09e0074675e82b13b611789 | |
parent | 87941ccd1706ac9818f0f4828cade1d4cfae622d (diff) | |
download | lvm2-5bf74f2997cedb481e0fac21e3aa30fc61f8e5b1.tar.gz |
pvs: Hide inaccessible clustered PVs.
Inaccessible clustered PVs can be hidden from pvs -a in the same way as
foreign PVs, rather than showing them as if they do not belong to a VG.
-rw-r--r-- | WHATS_NEW | 1 | ||||
-rw-r--r-- | tools/toollib.c | 15 |
2 files changed, 14 insertions, 2 deletions
@@ -1,5 +1,6 @@ Version 2.02.118 - ================================= + Remove inaccessible clustered PVs from 'pvs -a'. Don't invalidate cached orphan information while global lock is held. Avoid rescan of all devices when requested pvscan for removed device. Measure configuration timestamps with nanoseconds when available. diff --git a/tools/toollib.c b/tools/toollib.c index 12fe1e249..98e58798b 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -175,6 +175,7 @@ const char *skip_dev_dir(struct cmd_context *cmd, const char *vg_name, * and the command option has been used to ignore clustered vgs. * * Case c covers the other errors returned when reading the VG. + * If *skip is 1, it's OK for the caller to read the list of PVs in the VG. */ static int _ignore_vg(struct volume_group *vg, const char *vg_name, struct dm_list *arg_vgnames, int allow_inconsistent, int *skip) @@ -211,7 +212,14 @@ static int _ignore_vg(struct volume_group *vg, const char *vg_name, } } + if ((read_error == FAILED_CLUSTERED)) { + *skip = 1; + stack; /* Error already logged */ + return 1; + } + if (read_error != SUCCESS) { + *skip = 0; log_error("Cannot process volume group %s", vg_name); return 1; } @@ -2718,8 +2726,11 @@ static int _process_pvs_in_vgs(struct cmd_context *cmd, uint32_t flags, if (_ignore_vg(vg, vg_name, NULL, flags & READ_ALLOW_INCONSISTENT, &skip)) { stack; ret_max = ECMD_FAILED; - release_vg(vg); - continue; + if (!skip) { + release_vg(vg); + continue; + } + /* Drop through to eliminate a clustered VG's PVs from the devices list */ } /* |