[pve-devel] [PATCH v2 storage] lvm: improve warning in case vgs output contains unexpected lines

Fiona Ebner f.ebner at proxmox.com
Thu Feb 1 10:20:53 CET 2024

Am 31.01.24 um 12:55 schrieb Friedrich Weber:
> After changing `warn` to `log_warn` I noticed that pvestatd does not
> write the warning to the syslog every 10s anymore. Turns out `warn`
> triggers a custom __WARN__ handler we install for our daemons which also
> writes to syslog (e.g. pvestatd [1]). But `log_warn` only writes to
> stderr [2], thus the `log_warn` warning is not written to the syslog.
> Briefly discussed with Fiona off-list, she suggested to try replacing
> `print` in `log_warn` with `warn` [2]. But with this, all `log_warn`
> warnings also appear in the syslog (e.g. the "no efidisk configured"
> warning [3]), which I think would be too spammy.

But that is the original intention behind the __WARN__ handler. I'd
argue that replacing a warn with a log_warn() shouldn't change these
semantics. The intention of log_warn() was to make warnings more visible
in task logs. Making them less visible outside of tasks was not intended!

The issue that task warnings also appear in syslog for pvedaemon and
others is a bit orthogonal and can be fixed too.

My proposed solutions:

1) Switch to using "warn" instead of "print STDERR" in log_warn() and
1A) Clear the inherited __WARN__ handler in fork_worker().
1B) Have the __WARN__ handler check if it's in a worker and only log to
syslog if it's not.

2. Keep using "print STDERR" in log_warn() and do print to syslog there
if not in a worker.

> I'd suggest I use `log_warn` in this patch and keep `log_warn` as it is
> (printing only to stderr) for now. The downside is that pvestatd will
> not log the `vgs` warning to the syslog anymore (but doing that every 10
> seconds could also be considered spammy anyway). The upside is that e.g.
> a qmstart task log has the warning in its task log and shows "Warnings:
> 1" in the GUI, which might be better for visibility than a syslog
> message anyway.

This is something that could be solved with an intermediate log level,
but that requires new infrastructure of course. If it important enough
to be a warning, then I don't see an issue with pvestatd logging it. If
it's not, maybe we need a log_info() for such messages (and allow users
to configure if they want infos too)?

> What do you think?
> [1]
> https://git.proxmox.com/?p=pve-manager.git;a=blob;f=bin/pvestatd;h=5cd727e9;hb=d90563e4#l15
> [2]
> https://git.proxmox.com/?p=pve-common.git;a=blob;f=src/PVE/RESTEnvironment.pm;h=191c6eb;hb=c6ec71d84#l735
> [3]
> https://git.proxmox.com/?p=qemu-server.git;a=blob;f=PVE/QemuServer.pm;h=b45507aa;hb=eb86f776#l3492

More information about the pve-devel mailing list