All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Rajnoha <prajnoha@redhat.com>
To: lvm-devel@redhat.com
Subject: [PATCH] Add configure option to select default run directory base and prepare for early /run use
Date: Fri, 21 Oct 2011 11:50:02 +0200	[thread overview]
Message-ID: <4EA1404A.5020500@redhat.com> (raw)

On systemd-enabled systems the /run is writeable and it's accessible early on
boot so we don't need to use --sysinit anymore on early boot's vgchange call
(the --sysint is just a shortcut for --ignorelockingfailure, --ignoremonitoring,
--poll n and setting the LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES).

This patch adds a new configure option "--with-default-run-dir-base" with which
it's possible to change the run directory base for all directories/files that
need to be moved to /run in one go easily.

This patch also removes some hardcoded defines (in dmeventd.h and dm-event.socket
files used for systemd).

The patch also changes the dependencies a bit (in Fedora, but the same logic
applies anywhere):

originally:

  <dm-event.socket>
  ...
  fedora-wait-storage.service
  fedora-storage-init.service (calling vgchange -a y --sysinit)
  dm-event.service
  lvm2-monitor.service

changing to:

  <dm-event.socket>
  ...
  fedora-wait-storage.service
  dm-event.service
  fedora-storage-init.service (calling vgchange -a y, without --sysinit!!!)
  lvm2-monitor.service (this is just for proper shutdown now since the dmevent
                        registration will happen within the vgchange -a y call
                        in previous step)


(For FIFO-based activation, the fifos are already prepared and hence the
dm-event service could be spawned already)

Once we have this patch upstream and in the distro, we can remove the --sysinit
from the vgchange call.

Peter
---

 configure.in                                |   29 +++++++++++++++++++-------
 daemons/dmeventd/dmeventd.h                 |    4 +-
 lib/misc/configure.h.in                     |    3 ++
 make.tmpl.in                                |    1 +
 scripts/dm_event_systemd_red_hat.service.in |    4 +-
 scripts/dm_event_systemd_red_hat.socket     |   11 ----------
 scripts/dm_event_systemd_red_hat.socket.in  |   11 ++++++++++
 7 files changed, 40 insertions(+), 23 deletions(-)

diff --git a/configure.in b/configure.in
index 5275b95..26eb268 100644
--- a/configure.in
+++ b/configure.in
@@ -425,6 +425,17 @@ AC_ARG_WITH(ocfdir,
 	    OCFDIR=$withval, OCFDIR='${prefix}/lib/ocf/resource.d/lvm2')
 
 ################################################################################
+dnl -- set run directory base
+AH_TEMPLATE(DEFAULT_RUN_DIR_BASE, [Name of default run directory base.])
+AC_ARG_WITH(default-run-dir-base,
+	    AC_HELP_STRING([--with-default-run-dir-base=RDIR],
+			   [Default run directory base [[/var/run]]]),
+	    [ DEFAULT_RUN_DIR_BASE="$withval" ],
+	    [ DEFAULT_RUN_DIR_BASE="/var/run" ])
+AC_DEFINE_UNQUOTED(DEFAULT_RUN_DIR_BASE, ["$DEFAULT_RUN_DIR_BASE"] )
+
+
+################################################################################
 dnl -- Init pkg-config with dummy invokation:
 dnl -- this is required because PKG_CHECK_MODULES macro is expanded
 dnl -- to initialize the pkg-config environment only at the first invokation,
@@ -653,9 +664,9 @@ dnl -- clvmd pidfile
 if test "x$CLVMD" != xnone; then
 	AC_ARG_WITH(clvmd-pidfile,
 		    AC_HELP_STRING([--with-clvmd-pidfile=PATH],
-				   [clvmd pidfile [[/var/run/clvmd.pid]]]),
+				   [clvmd pidfile [[RDIR/clvmd.pid]]]),
 		    CLVMD_PIDFILE=$withval,
-		    CLVMD_PIDFILE="/var/run/clvmd.pid")
+		    CLVMD_PIDFILE="$DEFAULT_RUN_DIR_BASE/clvmd.pid")
 	AC_DEFINE_UNQUOTED(CLVMD_PIDFILE, ["$CLVMD_PIDFILE"],
 			   [Path to clvmd pidfile.])
 fi
@@ -676,9 +687,9 @@ dnl -- cmirrord pidfile
 if test "x$BUILD_CMIRRORD" = xyes; then
 	AC_ARG_WITH(cmirrord-pidfile,
 		    AC_HELP_STRING([--with-cmirrord-pidfile=PATH],
-				   [cmirrord pidfile [[/var/run/cmirrord.pid]]]),
+				   [cmirrord pidfile [[RDIR/cmirrord.pid]]]),
 		    CMIRRORD_PIDFILE=$withval,
-		    CMIRRORD_PIDFILE="/var/run/cmirrord.pid")
+		    CMIRRORD_PIDFILE="$DEFAULT_RUN_DIR_BASE/cmirrord.pid")
 	AC_DEFINE_UNQUOTED(CMIRRORD_PIDFILE, ["$CMIRRORD_PIDFILE"],
 			   [Path to cmirrord pidfile.])
 fi
@@ -1195,9 +1206,9 @@ dnl -- dmeventd pidfile and executable path
 if test "$BUILD_DMEVENTD" = yes; then
 	AC_ARG_WITH(dmeventd-pidfile,
 		    AC_HELP_STRING([--with-dmeventd-pidfile=PATH],
-				   [dmeventd pidfile [[/var/run/dmeventd.pid]]]),
+				   [dmeventd pidfile [[RDIR/dmeventd.pid]]]),
 		    DMEVENTD_PIDFILE=$withval,
-		    DMEVENTD_PIDFILE="/var/run/dmeventd.pid")
+		    DMEVENTD_PIDFILE="$DEFAULT_RUN_DIR_BASE/dmeventd.pid")
 	AC_DEFINE_UNQUOTED(DMEVENTD_PIDFILE, ["$DMEVENTD_PIDFILE"],
 			   [Path to dmeventd pidfile.])
 fi
@@ -1214,9 +1225,9 @@ fi
 
 AH_TEMPLATE(DEFAULT_RUN_DIR, [Name of default run directory.])
 AC_ARG_WITH(default-run-dir,
-	    [  --with-default-run-dir=DIR       Default run directory [[/var/run/lvm]] ],
+	    [  --with-default-run-dir=DIR       Default run directory [[RDIR/lvm]] ],
 	    [ DEFAULT_RUN_DIR="$withval" ],
-	    [ DEFAULT_RUN_DIR="/var/run/lvm" ])
+	    [ DEFAULT_RUN_DIR="$DEFAULT_RUN_DIR_BASE/lvm" ])
 AC_DEFINE_UNQUOTED(DEFAULT_RUN_DIR,["$DEFAULT_RUN_DIR"] )
 
 ################################################################################
@@ -1328,6 +1339,7 @@ AC_SUBST(DEFAULT_BACKUP_SUBDIR)
 AC_SUBST(DEFAULT_CACHE_SUBDIR)
 AC_SUBST(DEFAULT_DATA_ALIGNMENT)
 AC_SUBST(DEFAULT_LOCK_DIR)
+AC_SUBST(DEFAULT_RUN_DIR_BASE)
 AC_SUBST(DEFAULT_RUN_DIR)
 AC_SUBST(DEVMAPPER)
 AC_SUBST(DLM_CFLAGS)
@@ -1442,6 +1454,7 @@ po/Makefile
 scripts/clvmd_init_red_hat
 scripts/cmirrord_init_red_hat
 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/Makefile
diff --git a/daemons/dmeventd/dmeventd.h b/daemons/dmeventd/dmeventd.h
index c60d402..d4c54ec 100644
--- a/daemons/dmeventd/dmeventd.h
+++ b/daemons/dmeventd/dmeventd.h
@@ -17,8 +17,8 @@
 
 /* FIXME This stuff must be configurable. */
 
-#define	DM_EVENT_FIFO_CLIENT	"/var/run/dmeventd-client"
-#define	DM_EVENT_FIFO_SERVER	"/var/run/dmeventd-server"
+#define	DM_EVENT_FIFO_CLIENT	DEFAULT_RUN_DIR_BASE "/dmeventd-client"
+#define	DM_EVENT_FIFO_SERVER	DEFAULT_RUN_DIR_BASE "/dmeventd-server"
 
 #define DM_EVENT_DEFAULT_TIMEOUT 10
 
diff --git a/lib/misc/configure.h.in b/lib/misc/configure.h.in
index 707445a..b739723 100644
--- a/lib/misc/configure.h.in
+++ b/lib/misc/configure.h.in
@@ -44,6 +44,9 @@
 /* Name of default run directory. */
 #undef DEFAULT_RUN_DIR
 
+/* Name of default run directory base. */
+#undef DEFAULT_RUN_DIR_BASE
+
 /* Define to 0 to reinstate the pre-2.02.54 handling of unit suffixes. */
 #undef DEFAULT_SI_UNIT_CONSISTENCY
 
diff --git a/make.tmpl.in b/make.tmpl.in
index 298fe31..ce0a09b 100644
--- a/make.tmpl.in
+++ b/make.tmpl.in
@@ -76,6 +76,7 @@ DEFAULT_ARCHIVE_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_ARCHIVE_SUBDIR@
 DEFAULT_BACKUP_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_BACKUP_SUBDIR@
 DEFAULT_CACHE_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_CACHE_SUBDIR@
 DEFAULT_LOCK_DIR = @DEFAULT_LOCK_DIR@
+DEFAULT_RUN_DIR_BASE = @DEFAULT_RUN_DIR_BASE@
 DEFAULT_RUN_DIR = @DEFAULT_RUN_DIR@
 
 # Setup vpath search paths for some suffixes
diff --git a/scripts/dm_event_systemd_red_hat.service.in b/scripts/dm_event_systemd_red_hat.service.in
index 32295d3..d9bb107 100644
--- a/scripts/dm_event_systemd_red_hat.service.in
+++ b/scripts/dm_event_systemd_red_hat.service.in
@@ -1,7 +1,7 @@
 [Unit]
 Description=Device-mapper event daemon
-After=fedora-storage-init.service fedora-storage-init-late.service
-Before=local-fs.target
+After=fedora-wait-storage.service
+Before=fedora-storage-init.service
 DefaultDependencies=no
 
 [Service]
diff --git a/scripts/dm_event_systemd_red_hat.socket b/scripts/dm_event_systemd_red_hat.socket
deleted file mode 100644
index c580555..0000000
--- a/scripts/dm_event_systemd_red_hat.socket
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Device-mapper event daemon FIFOs
-DefaultDependencies=no
-
-[Socket]
-ListenFIFO=/var/run/dmeventd-server
-ListenFIFO=/var/run/dmeventd-client
-SocketMode=0600
-
-[Install]
-WantedBy=sockets.target
diff --git a/scripts/dm_event_systemd_red_hat.socket.in b/scripts/dm_event_systemd_red_hat.socket.in
new file mode 100644
index 0000000..7dbcd4c
--- /dev/null
+++ b/scripts/dm_event_systemd_red_hat.socket.in
@@ -0,0 +1,11 @@
+[Unit]
+Description=Device-mapper event daemon FIFOs
+DefaultDependencies=no
+
+[Socket]
+ListenFIFO=@DEFAULT_RUN_DIR_BASE@/dmeventd-server
+ListenFIFO=@DEFAULT_RUN_DIR_BASE@/dmeventd-client
+SocketMode=0600
+
+[Install]
+WantedBy=sockets.target



             reply	other threads:[~2011-10-21  9:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-21  9:50 Peter Rajnoha [this message]
2011-10-21 10:55 ` [PATCH] Add configure option to select default run directory base and prepare for early /run use Zdenek Kabelac
2011-10-21 11:14   ` Peter Rajnoha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EA1404A.5020500@redhat.com \
    --to=prajnoha@redhat.com \
    --cc=lvm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.