summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2021-11-12 11:52:36 -0600
committerDavid Teigland <teigland@redhat.com>2021-11-12 11:52:36 -0600
commit66f0fe57c3b376672696e3e7f4fe9e691a06d482 (patch)
treea5f3c9584260b987261a17a3b784f2c1e9054ec0
parent5dbf316cee12484ad701367ff519bebe1523ef9a (diff)
downloadlvm2-66f0fe57c3b376672696e3e7f4fe9e691a06d482.tar.gz
online files: fix vgname check
The pvs_online file for a PV will not contain a vgname if the PV has no metadata, so don't require matching vgname with the pvs_lookup file.
-rw-r--r--lib/device/online.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/device/online.c b/lib/device/online.c
index c67f45001..024485bb3 100644
--- a/lib/device/online.c
+++ b/lib/device/online.c
@@ -415,8 +415,17 @@ int get_pvs_lookup(struct dm_list *pvs_online, const char *vgname)
if (!online_pvid_file_read(path, &file_major, &file_minor, file_vgname, file_devname))
goto_bad;
- if (vgname && strcmp(file_vgname, vgname))
+ /*
+ * PVs without metadata will not have a vgname in their pvid
+ * file, but the purpose of using the lookup file is that we
+ * know the PV is for this VG even without the pvid vgname
+ * field.
+ */
+ if (vgname && file_vgname[0] && strcmp(file_vgname, vgname)) {
+ /* Should never happen */
+ log_error("Incorrect VG lookup file %s PVID %s %s.", vgname, pvid, file_vgname);
goto_bad;
+ }
if (!(po = zalloc(sizeof(*po))))
goto_bad;