Additional fix for SYSTEMD_READY env var assignment in lvmetad udev rules.

This commit is contained in:
Peter Rajnoha 2013-12-11 13:50:34 +01:00
parent 80cdbd35ad
commit f282ba9e37
2 changed files with 64 additions and 1 deletions

View File

@ -0,0 +1,58 @@
commit cc9adc9d85426e53f50f9d6a2a39e82cac545c61
Author: Peter Rajnoha <prajnoha@redhat.com>
Date: Wed Dec 11 13:13:21 2013 +0100
udev: fix SYSTEMD_READY assignment for foreign devices in lvmetad rules
Some devices, similarly to us, are not prepared after ADD event, but
after an extra CHANGE event when the device is properly set up.
This includes MD and loop devices. This patch fixes the
SYSTEMD_READY assignment that is crucial for proper functionality
of SYSTEMD_WANTS that we use to instantiate a lvm2-pvscan@.service
systemd service to activate the VG/LVs (see also bug
info).
All that extra handling of foreign devices should eventually be moved
to rules which process those devices primarily (MD and loop)! We should
only check a dedicated variable whether the device is usable or not.
---
udev/69-dm-lvm-metad.rules.in | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in
index 5b15b6f..d0b7b2a 100644
--- a/udev/69-dm-lvm-metad.rules.in
+++ b/udev/69-dm-lvm-metad.rules.in
@@ -39,6 +39,8 @@ ACTION=="remove", GOTO="lvm_scan"
# but they require an extra setup and they are ready after a CHANGE event.
# Also support coldplugging with ADD event but only if the device is already
# properly activated.
+# This logic should be eventually moved to rules where those particular
+# devices are processed primarily (MD and loop).
# DM device:
KERNEL!="dm-[0-9]*", GOTO="next"
@@ -52,6 +54,7 @@ IMPORT{db}="LVM_MD_PV_ACTIVATED"
ACTION=="add", ENV{LVM_MD_PV_ACTIVATED}=="1", GOTO="lvm_scan"
ACTION=="change", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1", GOTO="lvm_scan"
ACTION=="add", KERNEL=="md[0-9]*p[0-9]*", GOTO="lvm_scan"
+ENV{SYSTEMD_READY}="0"
GOTO="lvm_end"
# Loop device:
@@ -59,6 +62,7 @@ LABEL="next"
KERNEL!="loop[0-9]*", GOTO="next"
ACTION=="add", ENV{LVM_LOOP_PV_ACTIVATED}=="1", GOTO="lvm_scan"
ACTION=="change", ENV{LVM_LOOP_PV_ACTIVATED}!="1", TEST=="loop/backing_file", ENV{LVM_LOOP_PV_ACTIVATED}="1", GOTO="lvm_scan"
+ENV{SYSTEMD_READY}="0"
GOTO="lvm_end"
# If the PV is not a special device listed above, scan only after device addition (ADD event)
@@ -80,6 +84,7 @@ LABEL="lvm_scan"
# MD | | X | X* | |
# loop | | X | X* | |
# other | X | | X | | X
+ENV{SYSTEMD_READY}="1"
(PVSCAN_RULE)
LABEL="lvm_end"

View File

@ -37,13 +37,14 @@
Summary: Userland logical volume management tools
Name: lvm2
Version: 2.02.104
Release: 1%{?dist}
Release: 2%{?dist}
License: GPLv2
Group: System Environment/Base
URL: http://sources.redhat.com/lvm2
Source0: ftp://sources.redhat.com/pub/lvm2/releases/LVM2.%{version}.tgz
Patch0: lvm2-set-default-preferred_names.patch
Patch1: lvm2-enable-lvmetad-by-default.patch
Patch2: lvm2-2_02_105-udev-fix-systemd_ready-env-var-assignment-for-foreign-devs-in-lvmetad-rules.patch
BuildRequires: libselinux-devel >= %{libselinux_version}, libsepol-devel
BuildRequires: ncurses-devel
@ -80,6 +81,7 @@ or more physical volumes and creating one or more logical volumes
%setup -q -n LVM2.%{version}
%patch0 -p1 -b .preferred_names
%patch1 -p1 -b .enable_lvmetad
%patch2 -p1 -b .systemd_ready
%build
%define _default_pid_dir /run
@ -577,6 +579,9 @@ the device-mapper event library.
%{_libdir}/pkgconfig/devmapper-event.pc
%changelog
* Wed Dec 11 2013 Peter Rajnoha <prajnoha@redhat.com> - 2.02.104-2
- Fix SYSTEMD_READY assignment for foreign devs in lvmetad rules.
* Thu Nov 14 2013 Peter Rajnoha <prajnoha@redhat.com> - 2.02.104-1
- Workaround VG refresh race during autoactivation by retrying the refresh.
- Handle failures in temporary mirror used when adding images to mirrors.