diff options
author | Wu Guanghao <wuguanghao3@huawei.com> | 2021-08-19 09:30:08 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2021-08-20 09:42:37 -0500 |
commit | 90597a4b6e4fc471a8f14cf5ca30f54387a80f3d (patch) | |
tree | 2711f2ca97a8db74d5ed55da634bd6196ed6f078 | |
parent | 1afa67f4b9bdeb1e0da1cda17695d0aa58f7c3e3 (diff) | |
download | lvm2-stable-2.02.tar.gz |
pvscan: use orphans lock to fix parallel pvscan and vgcreatestable-2.02
start pvscan --cache /dev/sdb
(read metadata from disk, no vg info)
pvcreate /dev/sdb
vgcreate vg /dev/sdb
(write vg information to metadata, and update lvmetad)
finish pvscan --cache /dev/sdb
(No vg information in metadata from disk, overwrite lvmetad)
vgs
couldn't find vg
Signed-off-by: Wu Guanghao <wuguanghao3@huawei.com>
-rw-r--r-- | tools/pvscan.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/pvscan.c b/tools/pvscan.c index 2e7a864de..51b5daa9a 100644 --- a/tools/pvscan.c +++ b/tools/pvscan.c @@ -491,6 +491,11 @@ static int _pvscan_cache(struct cmd_context *cmd, int argc, char **argv) return ECMD_FAILED; } + if (!lock_vol(cmd, VG_ORPHANS, LCK_VG_READ, NULL)) { + log_error("Can't get lock for orphan PVs."); + return ECMD_FAILED; + } + /* * This a special case where use_lvmetad=1 in lvm.conf but pvscan * cannot use lvmetad for some reason. In this case pvscan should @@ -780,6 +785,7 @@ out: if (!sync_local_dev_names(cmd)) stack; + unlock_vg(cmd, NULL, VG_ORPHANS); unlock_vg(cmd, NULL, VG_GLOBAL); return ret; } |