Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Description of problem:
We should not try to use lvmetad before the lvmetad daemon is run by lvm2-lvmetad init script while having global/use_lvmetad=1 set in lvm.conf. Otherwise any LVM command run before the lvm2-lvmetad init script will issue a warning message that could cause a user to think that something wrong is going on:
"WARNING: Failed to connect to lvmetad: No such file or directory. Falling back to internal scanning."
This is the case with the rc.sysinit script that calls the "vgchange -ay" command to activate existing VGs.
Suggestions and possible solutions:
A. That vgchange in rc.sysinit uses the "--sysinit" switch so we could probably disable lvmetad use in this case. This would *work only* with lvchange and vgchange as --sysinit is defined only for these commands. Also, the "lvmetad_init" fn that causes the warning message to appear is called before the lvm command arguments are fully initialized and processed. So it's not that straightforward.
B. Just use "vgchange -ay --config 'global{use_lvmetad=0}' ..." (so a change for the "initscripts" package)
C. Or this bug will get obsolete as we'll switch to using on-the-fly udev-event-based VG/LV activation as PVs appear in the system (as we have the information collected and stored by the lvmetad itself now) and so we can remove the "vgchange -ay" call in the rc.sysinit, lvmetad will take care of any activation. But what if lvmetad is disabled???
This needs some thought and discussion...
(This problem appears even sooner during dracut stage, but that was resolved by using method B as dracut already changes the system-wide lvm.conf settings to better suit the initramfs, filed as bug #811129.)
Well, actually, we can't rely on the --sysinit arg. The "vgchange --sysinit" call will stay for current RHEL, but not for RHEL7 and recent Feodras (F17+) as that will become just a simple "vgchange" without --sysinit (/run is available soon in the boot process and is writeable so no need to use sysinit anymore in the script, bug #742564, I'm just about to ping Bill to change this).
So maybe B is more appropriate (or whatever else that will do the job).
--sysinit exists to avoid the need for --config overrides.
If we need two different behaviours of --sysinit, then introduce another --sysinit arg to distinguish them?
Hmm... thinking of it more, maybe it's not needed at all! For RHEL6, we keep the --sysinit in rc.sysinit and we could add the "ignorelvmetadfailure" case to it as already suggested in A (which would also work for dracut then).
And for RHEL7+Fedora with systemd, the lvmetad daemon is started automatically by systemd on the first socket access. And all the sockets are available as the very first thing during boot in systemd environment... So, I think we could just remove the --sysinit from the new fedora-storage-init script (which has the vgchange the former rc.sysinit called) as everything should be available and/or autostarted there.
So the A might probably work just fine... OK.
Created attachment 625741[details]
lvmetad_warn.diff
If I understand correctly, the desired behaviour is to just suppress the warning about being unable to contact lvmetad if --sysinit is given. The attached patch implements that. Can be pulled as 35e02fe2d6fb50f2facfbe2dc6422fdc669b03c7 from http://repos.mornfall.net/lvm2/mornfall.git/ if this is indeed the desired fix.
Pushed as 28776b9526784fc3dd2ab94a4151613771c4dfda. To verify, check that, with use_lvmetad = 1 in lvm.conf:
1) lvm commands do not print "WARNING: Failed to connect to lvmetad..." on bootup
2) lvm commands print a WARNING during normal system use when lvmetad is not running
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHBA-2013-0501.html
Description of problem: We should not try to use lvmetad before the lvmetad daemon is run by lvm2-lvmetad init script while having global/use_lvmetad=1 set in lvm.conf. Otherwise any LVM command run before the lvm2-lvmetad init script will issue a warning message that could cause a user to think that something wrong is going on: "WARNING: Failed to connect to lvmetad: No such file or directory. Falling back to internal scanning." This is the case with the rc.sysinit script that calls the "vgchange -ay" command to activate existing VGs. Suggestions and possible solutions: A. That vgchange in rc.sysinit uses the "--sysinit" switch so we could probably disable lvmetad use in this case. This would *work only* with lvchange and vgchange as --sysinit is defined only for these commands. Also, the "lvmetad_init" fn that causes the warning message to appear is called before the lvm command arguments are fully initialized and processed. So it's not that straightforward. B. Just use "vgchange -ay --config 'global{use_lvmetad=0}' ..." (so a change for the "initscripts" package) C. Or this bug will get obsolete as we'll switch to using on-the-fly udev-event-based VG/LV activation as PVs appear in the system (as we have the information collected and stored by the lvmetad itself now) and so we can remove the "vgchange -ay" call in the rc.sysinit, lvmetad will take care of any activation. But what if lvmetad is disabled??? This needs some thought and discussion... (This problem appears even sooner during dracut stage, but that was resolved by using method B as dracut already changes the system-wide lvm.conf settings to better suit the initramfs, filed as bug #811129.)