Autoactivate VG/LV on coldplug of DM-based PVs at boot.
This commit is contained in:
parent
40c9afff51
commit
19cc44730e
73
lvm2-2_02_99-also-autoactivate-on-coldplug.patch
Normal file
73
lvm2-2_02_99-also-autoactivate-on-coldplug.patch
Normal file
@ -0,0 +1,73 @@
|
||||
commit 764195207d4773cf6f1674a2fb16e9a0acda304a
|
||||
Author: Peter Rajnoha <prajnoha@redhat.com>
|
||||
Date: Fri Apr 19 12:17:53 2013 +0200
|
||||
|
||||
udev: also autoactivate on coldplug
|
||||
|
||||
Commit 756bcabbfe297688ba240a880bc2b55265ad33f0 fixed autoactivation
|
||||
to not trigger on each uevent for a PV that appeared in the system
|
||||
most notably the events that are triggered artificially (udevadm
|
||||
trigger or as the result of the WATCH udev rule being applied that
|
||||
consequently generates CHANGE uevents). This fixed a situation in
|
||||
which VGs/LVs were activated when they should not.
|
||||
|
||||
BUT we still need to care about the coldplug used at boot to
|
||||
retrigger the ADD events - the "udevadm trigger --action=add"!
|
||||
|
||||
For non-DM-based PVs, this is already covered as for these we
|
||||
run the autoactivation on ADD event only.
|
||||
|
||||
However, for DM-based PVs, we still need to run the
|
||||
autoactivation even for the artificial ADD event, reusing
|
||||
the udev DB content from previous proper CHANGE event that
|
||||
came with the DM device activation.
|
||||
|
||||
Simply, this patch fixes a situation in which we run extra
|
||||
"udevadm trigger --action=add" (or echo add > /sys/block/<dev>/uevent)
|
||||
for DM-based PVs (cryptsetup devices, multipath devices, any
|
||||
other DM devices...).
|
||||
|
||||
Without this patch, while using lvmetad + autoactivation,
|
||||
any VG/LV that has a DM-based PV and for which we do not
|
||||
call the activation directly, the VG/LV is not activated.
|
||||
|
||||
For example a VG with an LV with root FS on it which is directly
|
||||
activated in initrd and then missing activation of the rest
|
||||
of the LVs in the VG because of unhandled uevent retrigger on
|
||||
boot after switching to root FS (the "coldplug").
|
||||
|
||||
(No WHATS_NEW here as this fixes the commit mentioned
|
||||
above and which was not released yet.)
|
||||
---
|
||||
udev/10-dm.rules.in | 5 ++++-
|
||||
udev/69-dm-lvm-metad.rules.in | 1 +
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/udev/10-dm.rules.in b/udev/10-dm.rules.in
|
||||
index cfee145..512d156 100644
|
||||
--- a/udev/10-dm.rules.in
|
||||
+++ b/udev/10-dm.rules.in
|
||||
@@ -77,7 +77,10 @@ LABEL="dm_flags_done"
|
||||
# before (e.g. in initrd). If udev is used in initrd, we require the udev init
|
||||
# script to not remove the existing udev database so we can reuse the information
|
||||
# stored at the time of device activation in the initrd.
|
||||
-ACTION=="add", ENV{DM_UDEV_RULES_VSN}!="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable"
|
||||
+ACTION!="add", GOTO="dm_no_coldplug"
|
||||
+ENV{DM_UDEV_RULES_VSN}!="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable"
|
||||
+ENV{DM_ACTIVATION}="1"
|
||||
+LABEL="dm_no_coldplug"
|
||||
|
||||
# "dm" sysfs subdirectory is available in newer versions of DM
|
||||
# only (kernels >= 2.6.29). We have to check for its existence
|
||||
diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in
|
||||
index b16a27a..66c58b3 100644
|
||||
--- a/udev/69-dm-lvm-metad.rules.in
|
||||
+++ b/udev/69-dm-lvm-metad.rules.in
|
||||
@@ -26,6 +26,7 @@ ACTION=="remove", GOTO="lvm_scan"
|
||||
KERNEL!="dm-[0-9]*", ACTION!="add", GOTO="lvm_end"
|
||||
|
||||
# If the PV is a dm device, scan only after proper mapping activation (CHANGE event + DM_ACTIVATION=1)
|
||||
+# or after a coldplug (event retrigger) with "add" event (ADD event + DM_ACTIVATION=1)
|
||||
KERNEL=="dm-[0-9]*", ENV{DM_ACTIVATION}!="1", GOTO="lvm_end"
|
||||
|
||||
LABEL="lvm_scan"
|
@ -37,7 +37,7 @@
|
||||
Summary: Userland logical volume management tools
|
||||
Name: lvm2
|
||||
Version: 2.02.98
|
||||
Release: 6%{?dist}
|
||||
Release: 7%{?dist}
|
||||
License: GPLv2
|
||||
Group: System Environment/Base
|
||||
URL: http://sources.redhat.com/lvm2
|
||||
@ -56,6 +56,7 @@ Patch10: lvm2-2_02_99-exit-pvscan-cache-immediately-if-cluster-locking-used-or-l
|
||||
Patch11: lvm2-2_02_99-skip-mlocking-verctors-on-arm-arch.patch
|
||||
Patch12: lvm2-2_02_99-fix-autoactivation-to-not-autoactivate-vg-lv-on-each-pv-change.patch
|
||||
Patch13: lvm2-2_02_99-synchronize-with-udev-in-pvscan-cache-and-fix-dangling-udev_sync-cookies.patch
|
||||
Patch14: lvm2-2_02_99-also-autoactivate-on-coldplug.patch
|
||||
|
||||
BuildRequires: libselinux-devel >= %{libselinux_version}, libsepol-devel
|
||||
BuildRequires: ncurses-devel
|
||||
@ -104,6 +105,7 @@ or more physical volumes and creating one or more logical volumes
|
||||
%patch11 -p1 -b .arm_vectors
|
||||
%patch12 -p1 -b .autoactivation
|
||||
%patch13 -p1 -b .dangling_cookies
|
||||
%patch14 -p1 -b .coldplug
|
||||
|
||||
%build
|
||||
%define _default_pid_dir /run
|
||||
@ -600,6 +602,9 @@ the device-mapper event library.
|
||||
%{_libdir}/pkgconfig/devmapper-event.pc
|
||||
|
||||
%changelog
|
||||
* Fri Apr 19 2013 Peter Rajnoha <prajnoha@redhat.com> - 2.02.98-7
|
||||
- Autoactivate VG/LV on coldplug of DM-based PVs at boot.
|
||||
|
||||
* Tue Apr 09 2013 Peter Rajnoha <prajnoha@redhat.com> - 2.02.98-6
|
||||
- Synchronize with udev in pvscan --cache and fix dangling udev_sync cookies.
|
||||
- Fix autoactivation to not autoactivate VG/LV on each change of the PVs used.
|
||||
|
Loading…
Reference in New Issue
Block a user