public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v2 storage] lvm: improve warning in case vgs output contains unexpected lines
@ 2024-01-18 11:11 Friedrich Weber
  2024-01-19 10:59 ` Fiona Ebner
  0 siblings, 1 reply; 8+ messages in thread
From: Friedrich Weber @ 2024-01-18 11:11 UTC (permalink / raw)
  To: pve-devel

If the metadata archive under /etc/lvm/archive for a particular VG has
a lot of files or is overly large, `vgs` occasionally prints a message
to stdout [1]. Currently, the LVM plugin tries to parse this message
and thus produces the following confusing warnings in the output of
`pvesm status` or the journal (via pvestatd):

Use of uninitialized value $size in int at [...]/LVMPlugin.pm line 133
Use of uninitialized value $free in int at [...]/LVMPlugin.pm line 133
Use of uninitialized value $lvcount in int [...]/LVMPlugin.pm line 133

Reported in enterprise support where LVM picked up on VGs on VM disks
(due to a missing KRBD device filter in the LVM config), and since
several VM disks had VGs with the same name, LVM quickly produced a
lot of files in /etc/lvm/archive.

Reproducible as follows with a VG named `spam`:

    for i in $(seq 8192);
    do vgrename spam spam2; vgrename spam2 spam; done
    rm /etc/lvm/backup/spam; vgs -o vg_name

Output (linebreak for readability):

    Consider pruning spam VG archive with more then 8 MiB in 8268\n
    files (check archiving is needed in lvm.conf).
    VG
    spam

With this patch, the LVM plugin instead prints a human-readable
warning about the unexpected line.

[1] https://sourceware.org/git/?p=lvm2.git;a=blob;f=lib/format_text/archive.c;h=5acf0c04a;hb=38e0c7a1#l222

Signed-off-by: Friedrich Weber <f.weber@proxmox.com>
---

Notes:
    changes from v1 [2]:
    
    * warn about the unexpected line instead of simply ignoring it
    
    [2] https://lists.proxmox.com/pipermail/pve-devel/2024-January/061333.html

 src/PVE/Storage/LVMPlugin.pm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm
index 4b951e7..5377823 100644
--- a/src/PVE/Storage/LVMPlugin.pm
+++ b/src/PVE/Storage/LVMPlugin.pm
@@ -130,6 +130,11 @@ sub lvm_vgs {
 
 	    my ($name, $size, $free, $lvcount, $pvname, $pvsize, $pvfree) = split (':', $line);
 
+	    if (!defined($size) || !defined($free) || !defined($lvcount)) {
+		warn "unexpected output from vgs: $line\n";
+		return;
+	    }
+
 	    $vgs->{$name} //= {
 		size => int ($size),
 		free => int ($free),
-- 
2.39.2





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-02-02 16:27 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-18 11:11 [pve-devel] [PATCH v2 storage] lvm: improve warning in case vgs output contains unexpected lines Friedrich Weber
2024-01-19 10:59 ` Fiona Ebner
2024-01-19 11:31   ` Fiona Ebner
2024-01-23 10:01     ` Friedrich Weber
2024-01-31 11:55       ` Friedrich Weber
2024-02-01  9:20         ` Fiona Ebner
2024-02-01  9:30           ` Fiona Ebner
2024-02-02 16:27           ` Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal