diff mbox series

[v2,31/37] multipath-tools man pages: generate with correct paths

Message ID 20230911163846.27197-32-mwilck@suse.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show
Series multipath-tools: user-friendly names rework | expand

Commit Message

Martin Wilck Sept. 11, 2023, 4:38 p.m. UTC
From: Martin Wilck <mwilck@suse.com>

Generate the man pages using the compile-time settings for paths
to multipath.conf etc.

Add a paragraph about the CONFIGDIR (/etc/multipath/conf.d)
and the drop-in configuration files in the multipath.conf man page.

Also, make sure all generated man pages and other files are correctly
removed by "make clean".

Signed-off-by: Martin Wilck <mwilck@suse.com>
---
 .gitignore                                    |  4 +++
 Makefile.inc                                  |  3 +++
 mpathpersist/Makefile                         |  5 ++--
 .../{mpathpersist.8 => mpathpersist.8.in}     |  2 +-
 multipath/Makefile                            | 13 +++++----
 multipath/{multipath.8 => multipath.8.in}     | 10 +++----
 .../{multipath.conf.5 => multipath.conf.5.in} | 27 ++++++++++++-------
 multipathd/Makefile                           |  9 ++++---
 multipathd/{multipathd.8 => multipathd.8.in}  |  8 +++---
 9 files changed, 49 insertions(+), 32 deletions(-)
 rename mpathpersist/{mpathpersist.8 => mpathpersist.8.in} (99%)
 rename multipath/{multipath.8 => multipath.8.in} (97%)
 rename multipath/{multipath.conf.5 => multipath.conf.5.in} (98%)
 rename multipathd/{multipathd.8 => multipathd.8.in} (97%)

Comments

Benjamin Marzinski Sept. 13, 2023, 10:44 p.m. UTC | #1
On Mon, Sep 11, 2023 at 06:38:40PM +0200, mwilck@suse.com wrote:
> From: Martin Wilck <mwilck@suse.com>
> 
> Generate the man pages using the compile-time settings for paths
> to multipath.conf etc.
> 
> Add a paragraph about the CONFIGDIR (/etc/multipath/conf.d)
> and the drop-in configuration files in the multipath.conf man page.
> 
> Also, make sure all generated man pages and other files are correctly
> removed by "make clean".
> 
> Signed-off-by: Martin Wilck <mwilck@suse.com>
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
> ---
>  .gitignore                                    |  4 +++
>  Makefile.inc                                  |  3 +++
>  mpathpersist/Makefile                         |  5 ++--
>  .../{mpathpersist.8 => mpathpersist.8.in}     |  2 +-
>  multipath/Makefile                            | 13 +++++----
>  multipath/{multipath.8 => multipath.8.in}     | 10 +++----
>  .../{multipath.conf.5 => multipath.conf.5.in} | 27 ++++++++++++-------
>  multipathd/Makefile                           |  9 ++++---
>  multipathd/{multipathd.8 => multipathd.8.in}  |  8 +++---
>  9 files changed, 49 insertions(+), 32 deletions(-)
>  rename mpathpersist/{mpathpersist.8 => mpathpersist.8.in} (99%)
>  rename multipath/{multipath.8 => multipath.8.in} (97%)
>  rename multipath/{multipath.conf.5 => multipath.conf.5.in} (98%)
>  rename multipathd/{multipathd.8 => multipathd.8.in} (97%)
> 
> diff --git a/.gitignore b/.gitignore
> index 535353e..2986578 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -13,11 +13,15 @@ cscope.files
>  cscope.out
>  kpartx/kpartx
>  multipath/multipath
> +multipath/multipath.8
> +multipath/multipath.conf.5
>  multipath/multipath.rules
>  multipath/tmpfiles.conf
>  multipathd/multipathd
> +multipathd/multipathd.8
>  multipathd/multipathc
>  mpathpersist/mpathpersist
> +mpathpersist/mpathpersist.8
>  abi.tar.gz
>  abi
>  abi-test
> diff --git a/Makefile.inc b/Makefile.inc
> index 96206b2..79e521e 100644
> --- a/Makefile.inc
> +++ b/Makefile.inc
> @@ -133,3 +133,6 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
>  	@grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
>  	@printf 'local:\n\t*;\n};\n' >>$@
>  
> +%:	%.in
> +	@echo creating $@
> +	$(Q)sed 's:@CONFIGFILE@:'$(configfile)':g;s:@CONFIGDIR@:'$(configdir)':g;s:@STATE_DIR@:'$(statedir)':g;s:@RUNTIME_DIR@:'$(runtimedir)':g' $< >$@
> diff --git a/mpathpersist/Makefile b/mpathpersist/Makefile
> index f57c105..f374946 100644
> --- a/mpathpersist/Makefile
> +++ b/mpathpersist/Makefile
> @@ -8,10 +8,11 @@ LIBDEPS += -L$(mpathpersistdir) -lmpathpersist -L$(multipathdir) -lmultipath \
>  	-L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -lpthread -ldevmapper -ludev
>  
>  EXEC = mpathpersist
> +MANPAGES := mpathpersist.8
>  
>  OBJS = main.o
>  
> -all: $(EXEC)
> +all: $(EXEC) $(MANPAGES)
>  
>  $(EXEC): $(OBJS)
>  	$(Q)$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS) $(CFLAGS) $(LIBDEPS)
> @@ -23,7 +24,7 @@ install:
>  	$(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
>  
>  clean: dep_clean
> -	$(Q)$(RM) core *.o $(EXEC)
> +	$(Q)$(RM) core *.o $(EXEC) $(MANPAGES)
>  
>  include $(wildcard $(OBJS:.o=.d))
>  
> diff --git a/mpathpersist/mpathpersist.8 b/mpathpersist/mpathpersist.8.in
> similarity index 99%
> rename from mpathpersist/mpathpersist.8
> rename to mpathpersist/mpathpersist.8.in
> index 8d26b37..fecef0d 100644
> --- a/mpathpersist/mpathpersist.8
> +++ b/mpathpersist/mpathpersist.8.in
> @@ -31,7 +31,7 @@ mpathpersist \- Manages SCSI persistent reservations on dm multipath devices.
>  .
>  This utility is used to manage SCSI persistent reservations on Device Mapper
>  Multipath devices. To be able to use this functionality, the \fIreservation_key\fR
> -attribute must be defined in the \fI/etc/multipath.conf\fR file. Otherwise the
> +attribute must be defined in the \fI@CONFIGFILE@\fR file. Otherwise the
>  \fBmultipathd\fR daemon will not check for persistent reservation for newly
>  discovered paths or reinstated paths.
>  .
> diff --git a/multipath/Makefile b/multipath/Makefile
> index 73db991..68cb5ce 100644
> --- a/multipath/Makefile
> +++ b/multipath/Makefile
> @@ -3,7 +3,9 @@
>  #
>  include ../Makefile.inc
>  
> -EXEC := multipath
> +EXEC      := multipath
> +MANPAGES  := multipath.8 multipath.conf.5
> +GENERATED := $(MANPAGES) multipath.rules tmpfiles.conf
>  
>  CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir)
>  CFLAGS += $(BIN_CFLAGS)
> @@ -13,7 +15,7 @@ LIBDEPS += -L$(multipathdir) -lmultipath -L$(mpathutildir) -lmpathutil \
>  
>  OBJS := main.o
>  
> -all: $(EXEC) multipath.rules tmpfiles.conf
> +all: $(EXEC) $(GENERATED)
>  
>  $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
>  	@echo building $@ because of $?
> @@ -47,15 +49,12 @@ uninstall:
>  	$(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
>  	$(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
>  	$(Q)$(RM) $(DESTDIR)$(mandir)/man5/$(EXEC).conf.5
> +	$(Q)$(RM) $(DESTDIR)$(tmpfilesdir)/multipath.conf
>  
>  clean: dep_clean
> -	$(Q)$(RM) core *.o $(EXEC) multipath.rules tmpfiles.conf
> +	$(Q)$(RM) core *.o $(EXEC) $(GENERATED)
>  
>  include $(wildcard $(OBJS:.o=.d))
>  
>  dep_clean:
>  	$(Q)$(RM) $(OBJS:.o=.d)
> -
> -%:	%.in
> -	@echo creating $@
> -	$(Q)sed 's,@RUNTIME_DIR@,$(runtimedir),' $< >$@
> diff --git a/multipath/multipath.8 b/multipath/multipath.8.in
> similarity index 97%
> rename from multipath/multipath.8
> rename to multipath/multipath.8.in
> index 5fed6df..348eb22 100644
> --- a/multipath/multipath.8
> +++ b/multipath/multipath.8.in
> @@ -185,7 +185,7 @@ Display the currently used multipathd configuration.
>  .B \-T
>  Display the currently used multipathd configuration, limiting the output to
>  those devices actually present in the system. This can be used a template for
> -creating \fImultipath.conf\fR.
> +creating \fI@CONFIGFILE@\fR.
>  .
>  .\" ----------------------------------------------------------------------------
>  .SH OPTIONS
> @@ -233,11 +233,11 @@ option from \fBmultipath.conf(5)\fR.
>  .B \-i
>  Ignore WWIDs file when processing devices. If
>  \fIfind_multipaths strict\fR or \fIfind_multipaths no\fR is set in
> -\fImultipath.conf\fR, multipath only considers devices that are
> +\fI@CONFIGFILE@\fR, multipath only considers devices that are
>  listed in the WWIDs file. This option overrides that behavior. For other values
>  of \fIfind_multipaths\fR, this option has no effect. See the description of
>  \fIfind_multipaths\fR in
> -.BR multipath.conf (5).
> +.BR @CONFIGFILE@ (5).
>  This option should only be used in rare circumstances.
>  .
>  .TP
> @@ -246,8 +246,8 @@ Treat the bindings file as read only.
>  .
>  .TP
>  .BI \-b " file"
> -Set \fIuser_friendly_names\fR bindings file location. The default is
> -\fI/etc/multipath/bindings\fR.
> +(\fBdeprecated, do not use\fR) Set \fIuser_friendly_names\fR bindings file location. The default is
> +\fI@STATE_DIR@/bindings\fR.
>  .
>  .TP
>  .B \-q
> diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5.in
> similarity index 98%
> rename from multipath/multipath.conf.5
> rename to multipath/multipath.conf.5.in
> index 93af17d..20df223 100644
> --- a/multipath/multipath.conf.5
> +++ b/multipath/multipath.conf.5.in
> @@ -13,14 +13,14 @@
>  .SH NAME
>  .\" ----------------------------------------------------------------------------
>  .
> -multipath.conf \- multipath daemon configuration file.
> +@CONFIGFILE@, @CONFIGDIR@/*.conf \- multipath daemon configuration file.
>  .
>  .
>  .\" ----------------------------------------------------------------------------
>  .SH DESCRIPTION
>  .\" ----------------------------------------------------------------------------
>  .
> -.B "/etc/multipath.conf"
> +.B "@CONFIGFILE@"
>  is the configuration file for the multipath daemon. It is used to
>  overwrite the built-in configuration table of \fBmultipathd\fP.
>  Any line whose first non-white-space character is a '#' is considered
> @@ -29,6 +29,15 @@ a comment line. Empty lines are ignored.
>  Currently used multipathd configuration can be displayed with the \fBmultipath -t\fR
>  or \fBmultipathd show config\fR command.
>  .
> +.PP
> +Additional configuration can be made in drop-in files under
> +.B @CONFIGDIR@.
> +Files ending in \fI.conf\fR in this directory are read
> +in alphabetical order, after reading \fI@CONFIGFILE@\fR.
> +They use the same syntax as \fI@CONFIGFILE@\fR itself,
> +and support all sections and keywords. If a keyword occurs in the same section
> +in multiple files, the last occurence will take precedence over all others.
> +.
>  .
>  .\" ----------------------------------------------------------------------------
>  .SH SYNTAX
> @@ -85,7 +94,7 @@ not mandatory.
>  .
>  .LP
>  .B Note on regular expressions:
> -The \fImultipath.conf\fR syntax allows many attribute values to be specified as POSIX
> +The \fI@CONFIGFILE@\fR syntax allows many attribute values to be specified as POSIX
>  Extended Regular Expressions (see \fBregex\fR(7)). These regular expressions
>  are \fBcase sensitive\fR and \fBnot anchored\fR, thus the expression "bar" matches "barbie",
>  "rhabarber", and "wunderbar", but not "Barbie". To avoid unwanted substring
> @@ -711,7 +720,7 @@ The default is: \fBno\fR
>  .B user_friendly_names
>  If set to
>  .I yes
> -, using the bindings file \fI/etc/multipath/bindings\fR to assign a persistent
> +, using the bindings file \fI@STATE_DIR@/bindings\fR to assign a persistent
>  and unique alias to the multipath, in the form of mpath<n>. If set to
>  .I no
>  use the WWID as the alias. In either case this be will
> @@ -790,7 +799,7 @@ The full pathname of the binding file to be used when the user_friendly_names
>  option is set.
>  .RS
>  .TP
> -The default is: \fB/etc/multipath/bindings\fR
> +The default is: \fB@STATE_DIR@/bindings\fR
>  .RE
>  .
>  .
> @@ -801,7 +810,7 @@ The full pathname of the WWIDs file, which is used by multipath to keep track
>  of the WWIDs for LUNs it has created multipath devices on in the past.
>  .RS
>  .TP
> -The default is: \fB/etc/multipath/wwids\fR
> +The default is: \fB@STATE_DIR@/wwids\fR
>  .RE
>  .
>  .
> @@ -813,7 +822,7 @@ track of the persistent reservation key used for a specific WWID, when
>  \fIreservation_key\fR is set to \fBfile\fR.
>  .RS
>  .TP
> -The default is: \fB/etc/multipath/prkeys\fR
> +The default is: \fB@STATE_DIR@/prkeys\fR
>  .RE
>  .
>  .
> @@ -872,7 +881,7 @@ The default is: \fBno\fR
>  .I yes
>  and the SCSI layer has already attached a hardware_handler to the device,
>  multipath will not force the device to use the hardware_handler specified by
> -multipath.conf. If the SCSI layer has not attached a hardware handler,
> +@CONFIGFILE@. If the SCSI layer has not attached a hardware handler,
>  multipath will continue to use its configured hardware handler.
>  .RS
>  .PP
> @@ -1559,7 +1568,7 @@ given device, the attributes of all matching entries are applied to it.
>  If an attribute is specified in several matching device subsections,
>  later entries take precedence. Thus, entries in files under \fIconfig_dir\fR (in
>  reverse alphabetical order) have the highest precedence, followed by entries
> -in \fImultipath.conf\fR; the built-in hardware table has the lowest
> +in \fI@CONFIGFILE@\fR; the built-in hardware table has the lowest
>  precedence. Inside a configuration file, later entries have higher precedence
>  than earlier ones.
>  .LP
> diff --git a/multipathd/Makefile b/multipathd/Makefile
> index 0d0146c..cdba3db 100644
> --- a/multipathd/Makefile
> +++ b/multipathd/Makefile
> @@ -1,7 +1,8 @@
>  include ../Makefile.inc
>  
> -EXEC := multipathd
> -CLI := multipathc
> +EXEC     := multipathd
> +CLI      := multipathc
> +MANPAGES := multipathd.8
>  
>  CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) -I$(thirdpartydir) \
>  	$(shell $(PKG_CONFIG) --modversion liburcu 2>/dev/null | \
> @@ -42,7 +43,7 @@ ifeq ($(FPIN_SUPPORT),1)
>  OBJS += fpin_handlers.o
>  endif
>  
> -all : $(EXEC) $(CLI)
> +all : $(EXEC) $(CLI) $(MANPAGES)
>  
>  $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
>  	@echo building $@ because of $?
> @@ -79,7 +80,7 @@ uninstall:
>  	$(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
>  
>  clean: dep_clean
> -	$(Q)$(RM) core *.o $(EXEC) $(CLI)
> +	$(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES)
>  
>  include $(wildcard $(OBJS:.o=.d) $(CLI_OBJS:.o=.d))
>  
> diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8.in
> similarity index 97%
> rename from multipathd/multipathd.8
> rename to multipathd/multipathd.8.in
> index cc72b77..e98c27f 100644
> --- a/multipathd/multipathd.8
> +++ b/multipathd/multipathd.8.in
> @@ -155,7 +155,7 @@ Show the format wildcards used in interactive commands taking $format.
>  .TP
>  .B list|show config
>  Show the currently used configuration, derived from default values and values
> -specified within the configuration file \fI/etc/multipath.conf\fR.
> +specified within the configuration file \fI@CONFIGFILE@\fR.
>  .
>  .TP
>  .B list|show config local
> @@ -165,7 +165,7 @@ the devices section to those devices that are actually present in the system.
>  .TP
>  .B list|show blacklist
>  Show the currently used blacklist rules, derived from default values and values
> -specified within the configuration file \fI/etc/multipath.conf\fR.
> +specified within the configuration file \fI@CONFIGFILE@\fR.
>  .
>  .TP
>  .B list|show devices
> @@ -290,13 +290,13 @@ Get the current persistent reservation key associated with $map.
>  .B map|multipath $map setprkey key $key
>  Set the persistent reservation key associated with $map to $key in the
>  \fIprkeys_file\fR. This key will only be used by multipathd if
> -\fIreservation_key\fR is set to \fBfile\fR in \fI/etc/multipath.conf\fR.
> +\fIreservation_key\fR is set to \fBfile\fR in \fI@CONFIGFILE@\fR.
>  .
>  .TP
>  .B map|multipath $map unsetprkey
>  Remove the persistent reservation key associated with $map from the
>  \fIprkeys_file\fR. This will only unset the key used by multipathd if
> -\fIreservation_key\fR is set to \fBfile\fR in \fI/etc/multipath.conf\fR.
> +\fIreservation_key\fR is set to \fBfile\fR in \fI@CONFIGFILE@\fR.
>  .
>  .TP
>  .B path $path setmarginal
> -- 
> 2.42.0
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

diff --git a/.gitignore b/.gitignore
index 535353e..2986578 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,11 +13,15 @@  cscope.files
 cscope.out
 kpartx/kpartx
 multipath/multipath
+multipath/multipath.8
+multipath/multipath.conf.5
 multipath/multipath.rules
 multipath/tmpfiles.conf
 multipathd/multipathd
+multipathd/multipathd.8
 multipathd/multipathc
 mpathpersist/mpathpersist
+mpathpersist/mpathpersist.8
 abi.tar.gz
 abi
 abi-test
diff --git a/Makefile.inc b/Makefile.inc
index 96206b2..79e521e 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -133,3 +133,6 @@  NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version)
 	@grep -P '^[ \t]+[a-zA-Z_][a-zA-Z0-9_]*;' $< >>$@
 	@printf 'local:\n\t*;\n};\n' >>$@
 
+%:	%.in
+	@echo creating $@
+	$(Q)sed 's:@CONFIGFILE@:'$(configfile)':g;s:@CONFIGDIR@:'$(configdir)':g;s:@STATE_DIR@:'$(statedir)':g;s:@RUNTIME_DIR@:'$(runtimedir)':g' $< >$@
diff --git a/mpathpersist/Makefile b/mpathpersist/Makefile
index f57c105..f374946 100644
--- a/mpathpersist/Makefile
+++ b/mpathpersist/Makefile
@@ -8,10 +8,11 @@  LIBDEPS += -L$(mpathpersistdir) -lmpathpersist -L$(multipathdir) -lmultipath \
 	-L$(mpathutildir) -lmpathutil -L$(mpathcmddir) -lmpathcmd -lpthread -ldevmapper -ludev
 
 EXEC = mpathpersist
+MANPAGES := mpathpersist.8
 
 OBJS = main.o
 
-all: $(EXEC)
+all: $(EXEC) $(MANPAGES)
 
 $(EXEC): $(OBJS)
 	$(Q)$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS) $(CFLAGS) $(LIBDEPS)
@@ -23,7 +24,7 @@  install:
 	$(Q)$(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)/man8
 
 clean: dep_clean
-	$(Q)$(RM) core *.o $(EXEC)
+	$(Q)$(RM) core *.o $(EXEC) $(MANPAGES)
 
 include $(wildcard $(OBJS:.o=.d))
 
diff --git a/mpathpersist/mpathpersist.8 b/mpathpersist/mpathpersist.8.in
similarity index 99%
rename from mpathpersist/mpathpersist.8
rename to mpathpersist/mpathpersist.8.in
index 8d26b37..fecef0d 100644
--- a/mpathpersist/mpathpersist.8
+++ b/mpathpersist/mpathpersist.8.in
@@ -31,7 +31,7 @@  mpathpersist \- Manages SCSI persistent reservations on dm multipath devices.
 .
 This utility is used to manage SCSI persistent reservations on Device Mapper
 Multipath devices. To be able to use this functionality, the \fIreservation_key\fR
-attribute must be defined in the \fI/etc/multipath.conf\fR file. Otherwise the
+attribute must be defined in the \fI@CONFIGFILE@\fR file. Otherwise the
 \fBmultipathd\fR daemon will not check for persistent reservation for newly
 discovered paths or reinstated paths.
 .
diff --git a/multipath/Makefile b/multipath/Makefile
index 73db991..68cb5ce 100644
--- a/multipath/Makefile
+++ b/multipath/Makefile
@@ -3,7 +3,9 @@ 
 #
 include ../Makefile.inc
 
-EXEC := multipath
+EXEC      := multipath
+MANPAGES  := multipath.8 multipath.conf.5
+GENERATED := $(MANPAGES) multipath.rules tmpfiles.conf
 
 CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathcmddir)
 CFLAGS += $(BIN_CFLAGS)
@@ -13,7 +15,7 @@  LIBDEPS += -L$(multipathdir) -lmultipath -L$(mpathutildir) -lmpathutil \
 
 OBJS := main.o
 
-all: $(EXEC) multipath.rules tmpfiles.conf
+all: $(EXEC) $(GENERATED)
 
 $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
 	@echo building $@ because of $?
@@ -47,15 +49,12 @@  uninstall:
 	$(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/56-multipath.rules
 	$(Q)$(RM) $(DESTDIR)$(mandir)/man8/$(EXEC).8
 	$(Q)$(RM) $(DESTDIR)$(mandir)/man5/$(EXEC).conf.5
+	$(Q)$(RM) $(DESTDIR)$(tmpfilesdir)/multipath.conf
 
 clean: dep_clean
-	$(Q)$(RM) core *.o $(EXEC) multipath.rules tmpfiles.conf
+	$(Q)$(RM) core *.o $(EXEC) $(GENERATED)
 
 include $(wildcard $(OBJS:.o=.d))
 
 dep_clean:
 	$(Q)$(RM) $(OBJS:.o=.d)
-
-%:	%.in
-	@echo creating $@
-	$(Q)sed 's,@RUNTIME_DIR@,$(runtimedir),' $< >$@
diff --git a/multipath/multipath.8 b/multipath/multipath.8.in
similarity index 97%
rename from multipath/multipath.8
rename to multipath/multipath.8.in
index 5fed6df..348eb22 100644
--- a/multipath/multipath.8
+++ b/multipath/multipath.8.in
@@ -185,7 +185,7 @@  Display the currently used multipathd configuration.
 .B \-T
 Display the currently used multipathd configuration, limiting the output to
 those devices actually present in the system. This can be used a template for
-creating \fImultipath.conf\fR.
+creating \fI@CONFIGFILE@\fR.
 .
 .\" ----------------------------------------------------------------------------
 .SH OPTIONS
@@ -233,11 +233,11 @@  option from \fBmultipath.conf(5)\fR.
 .B \-i
 Ignore WWIDs file when processing devices. If
 \fIfind_multipaths strict\fR or \fIfind_multipaths no\fR is set in
-\fImultipath.conf\fR, multipath only considers devices that are
+\fI@CONFIGFILE@\fR, multipath only considers devices that are
 listed in the WWIDs file. This option overrides that behavior. For other values
 of \fIfind_multipaths\fR, this option has no effect. See the description of
 \fIfind_multipaths\fR in
-.BR multipath.conf (5).
+.BR @CONFIGFILE@ (5).
 This option should only be used in rare circumstances.
 .
 .TP
@@ -246,8 +246,8 @@  Treat the bindings file as read only.
 .
 .TP
 .BI \-b " file"
-Set \fIuser_friendly_names\fR bindings file location. The default is
-\fI/etc/multipath/bindings\fR.
+(\fBdeprecated, do not use\fR) Set \fIuser_friendly_names\fR bindings file location. The default is
+\fI@STATE_DIR@/bindings\fR.
 .
 .TP
 .B \-q
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5.in
similarity index 98%
rename from multipath/multipath.conf.5
rename to multipath/multipath.conf.5.in
index 93af17d..20df223 100644
--- a/multipath/multipath.conf.5
+++ b/multipath/multipath.conf.5.in
@@ -13,14 +13,14 @@ 
 .SH NAME
 .\" ----------------------------------------------------------------------------
 .
-multipath.conf \- multipath daemon configuration file.
+@CONFIGFILE@, @CONFIGDIR@/*.conf \- multipath daemon configuration file.
 .
 .
 .\" ----------------------------------------------------------------------------
 .SH DESCRIPTION
 .\" ----------------------------------------------------------------------------
 .
-.B "/etc/multipath.conf"
+.B "@CONFIGFILE@"
 is the configuration file for the multipath daemon. It is used to
 overwrite the built-in configuration table of \fBmultipathd\fP.
 Any line whose first non-white-space character is a '#' is considered
@@ -29,6 +29,15 @@  a comment line. Empty lines are ignored.
 Currently used multipathd configuration can be displayed with the \fBmultipath -t\fR
 or \fBmultipathd show config\fR command.
 .
+.PP
+Additional configuration can be made in drop-in files under
+.B @CONFIGDIR@.
+Files ending in \fI.conf\fR in this directory are read
+in alphabetical order, after reading \fI@CONFIGFILE@\fR.
+They use the same syntax as \fI@CONFIGFILE@\fR itself,
+and support all sections and keywords. If a keyword occurs in the same section
+in multiple files, the last occurence will take precedence over all others.
+.
 .
 .\" ----------------------------------------------------------------------------
 .SH SYNTAX
@@ -85,7 +94,7 @@  not mandatory.
 .
 .LP
 .B Note on regular expressions:
-The \fImultipath.conf\fR syntax allows many attribute values to be specified as POSIX
+The \fI@CONFIGFILE@\fR syntax allows many attribute values to be specified as POSIX
 Extended Regular Expressions (see \fBregex\fR(7)). These regular expressions
 are \fBcase sensitive\fR and \fBnot anchored\fR, thus the expression "bar" matches "barbie",
 "rhabarber", and "wunderbar", but not "Barbie". To avoid unwanted substring
@@ -711,7 +720,7 @@  The default is: \fBno\fR
 .B user_friendly_names
 If set to
 .I yes
-, using the bindings file \fI/etc/multipath/bindings\fR to assign a persistent
+, using the bindings file \fI@STATE_DIR@/bindings\fR to assign a persistent
 and unique alias to the multipath, in the form of mpath<n>. If set to
 .I no
 use the WWID as the alias. In either case this be will
@@ -790,7 +799,7 @@  The full pathname of the binding file to be used when the user_friendly_names
 option is set.
 .RS
 .TP
-The default is: \fB/etc/multipath/bindings\fR
+The default is: \fB@STATE_DIR@/bindings\fR
 .RE
 .
 .
@@ -801,7 +810,7 @@  The full pathname of the WWIDs file, which is used by multipath to keep track
 of the WWIDs for LUNs it has created multipath devices on in the past.
 .RS
 .TP
-The default is: \fB/etc/multipath/wwids\fR
+The default is: \fB@STATE_DIR@/wwids\fR
 .RE
 .
 .
@@ -813,7 +822,7 @@  track of the persistent reservation key used for a specific WWID, when
 \fIreservation_key\fR is set to \fBfile\fR.
 .RS
 .TP
-The default is: \fB/etc/multipath/prkeys\fR
+The default is: \fB@STATE_DIR@/prkeys\fR
 .RE
 .
 .
@@ -872,7 +881,7 @@  The default is: \fBno\fR
 .I yes
 and the SCSI layer has already attached a hardware_handler to the device,
 multipath will not force the device to use the hardware_handler specified by
-multipath.conf. If the SCSI layer has not attached a hardware handler,
+@CONFIGFILE@. If the SCSI layer has not attached a hardware handler,
 multipath will continue to use its configured hardware handler.
 .RS
 .PP
@@ -1559,7 +1568,7 @@  given device, the attributes of all matching entries are applied to it.
 If an attribute is specified in several matching device subsections,
 later entries take precedence. Thus, entries in files under \fIconfig_dir\fR (in
 reverse alphabetical order) have the highest precedence, followed by entries
-in \fImultipath.conf\fR; the built-in hardware table has the lowest
+in \fI@CONFIGFILE@\fR; the built-in hardware table has the lowest
 precedence. Inside a configuration file, later entries have higher precedence
 than earlier ones.
 .LP
diff --git a/multipathd/Makefile b/multipathd/Makefile
index 0d0146c..cdba3db 100644
--- a/multipathd/Makefile
+++ b/multipathd/Makefile
@@ -1,7 +1,8 @@ 
 include ../Makefile.inc
 
-EXEC := multipathd
-CLI := multipathc
+EXEC     := multipathd
+CLI      := multipathc
+MANPAGES := multipathd.8
 
 CPPFLAGS += -I$(multipathdir) -I$(mpathutildir) -I$(mpathpersistdir) -I$(mpathcmddir) -I$(thirdpartydir) \
 	$(shell $(PKG_CONFIG) --modversion liburcu 2>/dev/null | \
@@ -42,7 +43,7 @@  ifeq ($(FPIN_SUPPORT),1)
 OBJS += fpin_handlers.o
 endif
 
-all : $(EXEC) $(CLI)
+all : $(EXEC) $(CLI) $(MANPAGES)
 
 $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so
 	@echo building $@ because of $?
@@ -79,7 +80,7 @@  uninstall:
 	$(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket
 
 clean: dep_clean
-	$(Q)$(RM) core *.o $(EXEC) $(CLI)
+	$(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES)
 
 include $(wildcard $(OBJS:.o=.d) $(CLI_OBJS:.o=.d))
 
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8.in
similarity index 97%
rename from multipathd/multipathd.8
rename to multipathd/multipathd.8.in
index cc72b77..e98c27f 100644
--- a/multipathd/multipathd.8
+++ b/multipathd/multipathd.8.in
@@ -155,7 +155,7 @@  Show the format wildcards used in interactive commands taking $format.
 .TP
 .B list|show config
 Show the currently used configuration, derived from default values and values
-specified within the configuration file \fI/etc/multipath.conf\fR.
+specified within the configuration file \fI@CONFIGFILE@\fR.
 .
 .TP
 .B list|show config local
@@ -165,7 +165,7 @@  the devices section to those devices that are actually present in the system.
 .TP
 .B list|show blacklist
 Show the currently used blacklist rules, derived from default values and values
-specified within the configuration file \fI/etc/multipath.conf\fR.
+specified within the configuration file \fI@CONFIGFILE@\fR.
 .
 .TP
 .B list|show devices
@@ -290,13 +290,13 @@  Get the current persistent reservation key associated with $map.
 .B map|multipath $map setprkey key $key
 Set the persistent reservation key associated with $map to $key in the
 \fIprkeys_file\fR. This key will only be used by multipathd if
-\fIreservation_key\fR is set to \fBfile\fR in \fI/etc/multipath.conf\fR.
+\fIreservation_key\fR is set to \fBfile\fR in \fI@CONFIGFILE@\fR.
 .
 .TP
 .B map|multipath $map unsetprkey
 Remove the persistent reservation key associated with $map from the
 \fIprkeys_file\fR. This will only unset the key used by multipathd if
-\fIreservation_key\fR is set to \fBfile\fR in \fI/etc/multipath.conf\fR.
+\fIreservation_key\fR is set to \fBfile\fR in \fI@CONFIGFILE@\fR.
 .
 .TP
 .B path $path setmarginal