mrc0mmand / rpms / lvm2

Forked from rpms/lvm2 2 years ago
Clone

Blame SOURCES/lvm2-2_02_104-udev-systemd-background-job-for-pvscan-cache-aay.patch

191583
commit 6a2f2b0374b679ddff67668c9830df22d9a044a8
191583
Author: Peter Rajnoha <prajnoha@redhat.com>
191583
Date:   Fri Oct 18 11:22:35 2013 +0200
191583
191583
    udev_systemd_background_jobs
191583
---
191583
 WHATS_NEW                                       |  2 ++
191583
 configure                                       | 26 +++++++++++++++++++++----
191583
 configure.in                                    | 11 +++++++++++
191583
 scripts/Makefile.in                             |  2 ++
191583
 scripts/lvm2_pvscan_systemd_red_hat@.service.in | 11 +++++++++++
191583
 udev/69-dm-lvm-metad.rules.in                   |  2 +-
191583
 udev/Makefile.in                                |  8 +++++++-
191583
 7 files changed, 56 insertions(+), 6 deletions(-)
191583
191583
diff --git a/WHATS_NEW b/WHATS_NEW
191583
index e49a98d..2dfeada 100644
191583
--- a/WHATS_NEW
191583
+++ b/WHATS_NEW
191583
@@ -1,5 +1,7 @@
191583
 Version 2.02.104 - 
191583
 ===================================
191583
+  Add configure --enable-udev-systemd-background-jobs.
191583
+  Add lvm2-pvscan@.service to run pvscan as a service for lvmetad/autoactivation.
191583
   Fix possible race during daemon worker thread creation (lvmetad).
191583
   Fix possible deadlock while clearing lvmetad cache for full rescan.
191583
   Fix possible race while creating/destroying memory pools.
191583
diff --git a/configure b/configure
191583
index 20a706a..002a7d2 100755
191583
--- a/configure
191583
+++ b/configure
191583
@@ -613,6 +613,7 @@ DMEVENTD_PIDFILE
191583
 WRITE_INSTALL
191583
 UDEV_HAS_BUILTIN_BLKID
191583
 UDEV_RULE_EXEC_DETECTION
191583
+UDEV_SYSTEMD_BACKGROUND_JOBS
191583
 UDEV_SYNC
191583
 UDEV_RULES
191583
 UDEV_PC
191583
@@ -849,6 +850,7 @@ enable_valgrind_pool
191583
 enable_devmapper
191583
 enable_lvmetad
191583
 with_lvmetad_pidfile
191583
+enable_udev_systemd_background_jobs
191583
 enable_udev_sync
191583
 enable_udev_rules
191583
 enable_udev_rule_exec_detection
191583
@@ -1552,6 +1554,9 @@ Optional Features:
191583
   --enable-valgrind-pool  enable valgrind awareness of pools
191583
   --disable-devmapper     disable LVM2 device-mapper interaction
191583
   --enable-lvmetad        enable the LVM Metadata Daemon
191583
+  --enable-udev-systemd-background-jobs
191583
+                          enable udev-systemd protocol to instantiate a
191583
+                          service for background job
191583
   --enable-udev_sync      enable synchronisation with udev processing
191583
   --enable-udev_rules     install rule files needed for udev synchronisation
191583
   --enable-udev-rule-exec-detection
191583
@@ -9090,6 +9095,19 @@ _ACEOF
191583
 fi
191583
 
191583
 ################################################################################
191583
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use udev-systemd protocol for jobs in background" >&5
191583
+$as_echo_n "checking whether to use udev-systemd protocol for jobs in background... " >&6; }
191583
+# Check whether --enable-udev-systemd-background-jobs was given.
191583
+if test "${enable_udev_systemd_background_jobs+set}" = set; then :
191583
+  enableval=$enable_udev_systemd_background_jobs; UDEV_SYSTEMD_BACKGROUND_JOBS=$enableval
191583
+else
191583
+  UDEV_SYSTEMD_BACKGROUND_JOBS=no
191583
+fi
191583
+
191583
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UDEV_SYSTEMD_BACKGROUND_JOBS" >&5
191583
+$as_echo "$UDEV_SYSTEMD_BACKGROUND_JOBS" >&6; }
191583
+
191583
+################################################################################
191583
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable synchronisation with udev processing" >&5
191583
 $as_echo_n "checking whether to enable synchronisation with udev processing... " >&6; }
191583
 # Check whether --enable-udev_sync was given.
191583
@@ -9668,8 +9686,7 @@ if [ \( "x$LVM1" = xshared -o "x$POOL" = xshared -o "x$CLUSTER" = xshared \
191583
 fi
191583
 
191583
 ################################################################################
191583
-if [ "$DMEVENTD" = yes -o "$CLVMD" != none ] ; then
191583
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_lock in -lpthread" >&5
191583
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_mutex_lock in -lpthread" >&5
191583
 $as_echo_n "checking for pthread_mutex_lock in -lpthread... " >&6; }
191583
 if test "${ac_cv_lib_pthread_pthread_mutex_lock+set}" = set; then :
191583
   $as_echo_n "(cached) " >&6
191583
@@ -9711,7 +9728,6 @@ else
191583
   hard_bailout
191583
 fi
191583
 
191583
-fi
191583
 
191583
 ################################################################################
191583
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable selinux support" >&5
191583
@@ -10933,8 +10949,9 @@ LVM_LIBAPI=`echo "$VER" | $AWK -F '[()]' '{print $2}'`
191583
 
191583
 
191583
 
191583
+
191583
 ################################################################################
191583
-ac_config_files="$ac_config_files Makefile make.tmpl daemons/Makefile daemons/clvmd/Makefile daemons/cmirrord/Makefile daemons/dmeventd/Makefile daemons/dmeventd/libdevmapper-event.pc daemons/dmeventd/plugins/Makefile daemons/dmeventd/plugins/lvm2/Makefile daemons/dmeventd/plugins/raid/Makefile daemons/dmeventd/plugins/mirror/Makefile daemons/dmeventd/plugins/snapshot/Makefile daemons/dmeventd/plugins/thin/Makefile daemons/lvmetad/Makefile conf/Makefile conf/example.conf conf/default.profile include/.symlinks include/Makefile lib/Makefile lib/format1/Makefile lib/format_pool/Makefile lib/locking/Makefile lib/mirror/Makefile lib/replicator/Makefile lib/misc/lvm-version.h lib/raid/Makefile lib/snapshot/Makefile lib/thin/Makefile libdaemon/Makefile libdaemon/client/Makefile libdaemon/server/Makefile libdm/Makefile libdm/libdevmapper.pc liblvm/Makefile liblvm/liblvm2app.pc man/Makefile po/Makefile python/Makefile python/setup.py scripts/blkdeactivate.sh scripts/blk_availability_init_red_hat scripts/blk_availability_systemd_red_hat.service scripts/clvmd_init_red_hat scripts/cmirrord_init_red_hat scripts/lvm2_lvmetad_init_red_hat scripts/lvm2_lvmetad_systemd_red_hat.socket scripts/lvm2_lvmetad_systemd_red_hat.service scripts/lvm2_monitoring_init_red_hat scripts/dm_event_systemd_red_hat.socket scripts/dm_event_systemd_red_hat.service scripts/lvm2_monitoring_systemd_red_hat.service scripts/lvm2_tmpfiles_red_hat.conf scripts/Makefile test/Makefile test/api/Makefile test/unit/Makefile tools/Makefile udev/Makefile unit-tests/datastruct/Makefile unit-tests/regex/Makefile unit-tests/mm/Makefile"
191583
+ac_config_files="$ac_config_files Makefile make.tmpl daemons/Makefile daemons/clvmd/Makefile daemons/cmirrord/Makefile daemons/dmeventd/Makefile daemons/dmeventd/libdevmapper-event.pc daemons/dmeventd/plugins/Makefile daemons/dmeventd/plugins/lvm2/Makefile daemons/dmeventd/plugins/raid/Makefile daemons/dmeventd/plugins/mirror/Makefile daemons/dmeventd/plugins/snapshot/Makefile daemons/dmeventd/plugins/thin/Makefile daemons/lvmetad/Makefile conf/Makefile conf/example.conf conf/default.profile include/.symlinks include/Makefile lib/Makefile lib/format1/Makefile lib/format_pool/Makefile lib/locking/Makefile lib/mirror/Makefile lib/replicator/Makefile lib/misc/lvm-version.h lib/raid/Makefile lib/snapshot/Makefile lib/thin/Makefile libdaemon/Makefile libdaemon/client/Makefile libdaemon/server/Makefile libdm/Makefile libdm/libdevmapper.pc liblvm/Makefile liblvm/liblvm2app.pc man/Makefile po/Makefile python/Makefile python/setup.py scripts/blkdeactivate.sh scripts/blk_availability_init_red_hat scripts/blk_availability_systemd_red_hat.service scripts/clvmd_init_red_hat scripts/cmirrord_init_red_hat scripts/lvm2_lvmetad_init_red_hat scripts/lvm2_lvmetad_systemd_red_hat.socket scripts/lvm2_lvmetad_systemd_red_hat.service scripts/lvm2_pvscan_systemd_red_hat@.service scripts/lvm2_monitoring_init_red_hat scripts/dm_event_systemd_red_hat.socket scripts/dm_event_systemd_red_hat.service scripts/lvm2_monitoring_systemd_red_hat.service scripts/lvm2_tmpfiles_red_hat.conf scripts/Makefile test/Makefile test/api/Makefile test/unit/Makefile tools/Makefile udev/Makefile unit-tests/datastruct/Makefile unit-tests/regex/Makefile unit-tests/mm/Makefile"
191583
 
191583
 cat >confcache <<\_ACEOF
191583
 # This file is a shell script that caches the results of configure
191583
@@ -11671,6 +11688,7 @@ do
191583
     "scripts/lvm2_lvmetad_init_red_hat") CONFIG_FILES="$CONFIG_FILES scripts/lvm2_lvmetad_init_red_hat" ;;
191583
     "scripts/lvm2_lvmetad_systemd_red_hat.socket") CONFIG_FILES="$CONFIG_FILES scripts/lvm2_lvmetad_systemd_red_hat.socket" ;;
191583
     "scripts/lvm2_lvmetad_systemd_red_hat.service") CONFIG_FILES="$CONFIG_FILES scripts/lvm2_lvmetad_systemd_red_hat.service" ;;
191583
+    "scripts/lvm2_pvscan_systemd_red_hat@.service") CONFIG_FILES="$CONFIG_FILES scripts/lvm2_pvscan_systemd_red_hat@.service" ;;
191583
     "scripts/lvm2_monitoring_init_red_hat") CONFIG_FILES="$CONFIG_FILES scripts/lvm2_monitoring_init_red_hat" ;;
191583
     "scripts/dm_event_systemd_red_hat.socket") CONFIG_FILES="$CONFIG_FILES scripts/dm_event_systemd_red_hat.socket" ;;
191583
     "scripts/dm_event_systemd_red_hat.service") CONFIG_FILES="$CONFIG_FILES scripts/dm_event_systemd_red_hat.service" ;;
191583
diff --git a/configure.in b/configure.in
191583
index 3bd2439..07b0afc 100644
191583
--- a/configure.in
191583
+++ b/configure.in
191583
@@ -940,6 +940,15 @@ if test x$BUILD_LVMETAD = xyes; then
191583
 fi
191583
 
191583
 ################################################################################
191583
+dnl -- Enable udev-systemd protocol to instantiate a service for background jobs
191583
+AC_MSG_CHECKING(whether to use udev-systemd protocol for jobs in background)
191583
+AC_ARG_ENABLE(udev-systemd-background-jobs,
191583
+	      AC_HELP_STRING([--enable-udev-systemd-background-jobs],
191583
+			     [enable udev-systemd protocol to instantiate a service for background job]),
191583
+	      UDEV_SYSTEMD_BACKGROUND_JOBS=$enableval, UDEV_SYSTEMD_BACKGROUND_JOBS=no)
191583
+AC_MSG_RESULT($UDEV_SYSTEMD_BACKGROUND_JOBS)
191583
+
191583
+################################################################################
191583
 dnl -- Enable udev synchronisation
191583
 AC_MSG_CHECKING(whether to enable synchronisation with udev processing)
191583
 AC_ARG_ENABLE(udev_sync,
191583
@@ -1626,6 +1635,7 @@ AC_SUBST(UDEV_LIBS)
191583
 AC_SUBST(UDEV_PC)
191583
 AC_SUBST(UDEV_RULES)
191583
 AC_SUBST(UDEV_SYNC)
191583
+AC_SUBST(UDEV_SYSTEMD_BACKGROUND_JOBS)
191583
 AC_SUBST(UDEV_RULE_EXEC_DETECTION)
191583
 AC_SUBST(UDEV_HAS_BUILTIN_BLKID)
191583
 AC_SUBST(CUNIT_LIBS)
191583
@@ -1700,6 +1710,7 @@ scripts/cmirrord_init_red_hat
191583
 scripts/lvm2_lvmetad_init_red_hat
191583
 scripts/lvm2_lvmetad_systemd_red_hat.socket
191583
 scripts/lvm2_lvmetad_systemd_red_hat.service
191583
+scripts/lvm2_pvscan_systemd_red_hat@.service
191583
 scripts/lvm2_monitoring_init_red_hat
191583
 scripts/dm_event_systemd_red_hat.socket
191583
 scripts/dm_event_systemd_red_hat.service
191583
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
191583
index a658903..fac7e40 100644
191583
--- a/scripts/Makefile.in
191583
+++ b/scripts/Makefile.in
191583
@@ -107,6 +107,7 @@ endif
191583
 ifeq ("@BUILD_LVMETAD@", "yes")
191583
 	$(INSTALL_DATA) lvm2_lvmetad_systemd_red_hat.socket $(systemd_unit_dir)/lvm2-lvmetad.socket
191583
 	$(INSTALL_DATA) lvm2_lvmetad_systemd_red_hat.service $(systemd_unit_dir)/lvm2-lvmetad.service
191583
+	$(INSTALL_DATA) lvm2_pvscan_systemd_red_hat@.service $(systemd_unit_dir)/lvm2-pvscan@.service
191583
 endif
191583
 
191583
 install_tmpfiles_configuration:
191583
@@ -118,6 +119,7 @@ DISTCLEAN_TARGETS += clvmd_init_red_hat cmirrord_init_red_hat \
191583
 		     dm_event_systemd_red_hat.socket dm_event_systemd_red_hat.service \
191583
 		     lvm2_monitoring_systemd_red_hat.service \
191583
 		     lvm2_lvmetad_systemd_red_hat.socket lvm2_lvmetad_systemd_red_hat.service \
191583
+		     lvm2_lvmetad_systemd_red_hat@.service \
191583
 		     lvm2_tmpfiles_red_hat.conf blk_availability_init_red_hat \
191583
 		     blk_availability_systemd_red_hat.service \
191583
 		     blkdeactivate.sh
191583
diff --git a/scripts/lvm2_pvscan_systemd_red_hat@.service.in b/scripts/lvm2_pvscan_systemd_red_hat@.service.in
191583
new file mode 100644
191583
index 0000000..9d91b5e
191583
--- /dev/null
191583
+++ b/scripts/lvm2_pvscan_systemd_red_hat@.service.in
191583
@@ -0,0 +1,11 @@
191583
+[Unit]
191583
+Description=LVM2 PV scan on %I
191583
+Documentation=man:pvscan(8)
191583
+DefaultDependencies=no
191583
+After=lvm2-lvmetad.socket %i.device
191583
+Before=shutdown.target
191583
+Conflicts=shutdown.target
191583
+
191583
+[Service]
191583
+Type=simple
191583
+ExecStart=@sbindir@/pvscan --cache --activate ay %I
191583
diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in
191583
index 3303f4d..3e303b1 100644
191583
--- a/udev/69-dm-lvm-metad.rules.in
191583
+++ b/udev/69-dm-lvm-metad.rules.in
191583
@@ -79,6 +79,6 @@ LABEL="lvm_scan"
191583
 #  MD    |          |      X      |       X*       |                   |
191583
 #  loop  |          |      X      |       X*       |                   |
191583
 #  other |    X     |             |       X        |                   |   X
191583
-RUN+="(LVM_EXEC)/lvm pvscan --background --cache --activate ay --major $major --minor $minor", ENV{LVM_SCANNED}="1"
191583
+(PVSCAN_RULE)
191583
 
191583
 LABEL="lvm_end"
191583
diff --git a/udev/Makefile.in b/udev/Makefile.in
191583
index 5c15bdb..fdf43df 100644
191583
--- a/udev/Makefile.in
191583
+++ b/udev/Makefile.in
191583
@@ -46,8 +46,14 @@ else
191583
 BLKID_RULE=IMPORT{program}=\"${SBIN}\/blkid -o udev -p \$$tempnode\"
191583
 endif
191583
 
191583
+ifeq ("@UDEV_SYSTEMD_BACKGROUND_JOBS@", "yes")
191583
+PVSCAN_RULE=ENV{SYSTEMD_WANTS}=\"lvm2-pvscan@\$$devnode.service\"
191583
+else
191583
+PVSCAN_RULE=RUN\+\=\"$(LVM_EXEC)/lvm pvscan --background --cache --activate ay --major \$$major --minor \$$minor\", ENV{LVM_SCANNED}=\"1\"
191583
+endif
191583
+
191583
 %.rules: %.rules.in
191583
-	$(SED) -e "s+(DM_DIR)+$(DM_DIR)+;s+(BLKID_RULE)+$(BLKID_RULE)+;s+(DM_EXEC_RULE)+$(DM_EXEC_RULE)+;s+(DM_EXEC)+$(DM_EXEC)+;s+(LVM_EXEC_RULE)+$(LVM_EXEC_RULE)+;s+(LVM_EXEC)+$(LVM_EXEC)+;" $< >$@
191583
+	$(SED) -e "s+(DM_DIR)+$(DM_DIR)+;s+(BLKID_RULE)+$(BLKID_RULE)+;s+(PVSCAN_RULE)+$(PVSCAN_RULE)+;s+(DM_EXEC_RULE)+$(DM_EXEC_RULE)+;s+(DM_EXEC)+$(DM_EXEC)+;s+(LVM_EXEC_RULE)+$(LVM_EXEC_RULE)+;s+(LVM_EXEC)+$(LVM_EXEC)+;" $< >$@
191583
 
191583
 %_install: %.rules
191583
 	$(INSTALL_DATA) -D $< $(udevdir)/$(