]> sourceware.org Git - lvm2.git/commitdiff
pvs: Hide inaccessible clustered PVs.
authorAlasdair G Kergon <agk@redhat.com>
Wed, 18 Mar 2015 23:31:46 +0000 (23:31 +0000)
committerAlasdair G Kergon <agk@redhat.com>
Wed, 18 Mar 2015 23:31:46 +0000 (23:31 +0000)
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.

WHATS_NEW
tools/toollib.c

index 2e50b18449f530e02fd6fd473b758aac17a549e1..b1829250dcfe4ddb7d8814a4eda3525b36f373ce 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -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.
index 12fe1e249105bfb99bb36210c23f7dae29e3d9b5..98e58798be8c0e7c52916999fde55302bfec8f9b 100644 (file)
@@ -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 */
                }
                
                /*
This page took 0.052879 seconds and 5 git commands to generate.