From: David Teigland Date: Tue, 24 Apr 2018 19:48:30 +0000 (-0500) Subject: clvmd: skip dev rescan after full scan X-Git-Tag: v2_02_178-rc1~75 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=47bfac21cab25b104170bf31e4fec84096bf90a5;p=lvm2.git clvmd: skip dev rescan after full scan When clvmd does a full label scan just prior to calling _vg_read(), pass a new flag into _vg_read to indicate that the normal rescan of VG devs is not needed. --- diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index 73041cf32..e8ecfd641 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -645,6 +645,7 @@ void pvcreate_params_set_defaults(struct pvcreate_params *pp); */ #define WARN_PV_READ 0x00000001 #define WARN_INCONSISTENT 0x00000002 +#define SKIP_RESCAN 0x00000004 /* * Utility functions diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index a9086580d..3c1d8a46a 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -3864,6 +3864,10 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, * we can also skip the rescan in that case. */ if (!cmd->can_use_one_scan || lvmcache_scan_mismatch(cmd, vgname, vgid)) { + /* the skip rescan special case is for clvmd vg_read_by_vgid */ + /* FIXME: this is not a warn flag, pass this differently */ + if (warn_flags & SKIP_RESCAN) + goto find_vg; skipped_rescan = 0; log_debug_metadata("Rescanning devices for for %s", vgname); lvmcache_label_rescan_vg(cmd, vgname, vgid); @@ -3872,6 +3876,8 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, skipped_rescan = 1; } + find_vg: + if (!(fmt = lvmcache_fmt_from_vgname(cmd, vgname, vgid, 0))) { log_debug_metadata("Cache did not find fmt for vgname %s", vgname); return_NULL; @@ -4593,6 +4599,7 @@ struct volume_group *vg_read_by_vgid(struct cmd_context *cmd, lvmcache_destroy(cmd, 0, 0); label_scan_destroy(cmd); lvmcache_label_scan(cmd); + warn_flags |= SKIP_RESCAN; } if (!(vgname = lvmcache_vgname_from_vgid(cmd->mem, vgid))) { @@ -4623,6 +4630,7 @@ struct volume_group *vg_read_by_vgid(struct cmd_context *cmd, lvmcache_destroy(cmd, 0, 0); label_scan_destroy(cmd); lvmcache_label_scan(cmd); + warn_flags |= SKIP_RESCAN; if (!(vg = _vg_read(cmd, vgname, vgid, warn_flags, &consistent, precommitted))) goto fail;