[lvm-devel] master - man: Revise internal man page generation process.

Alasdair Kergon agk at sourceware.org
Tue Mar 14 01:10:13 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ca905681ccf9afd2b8313b5a7a89ac609c9a7ba5
Commit:        ca905681ccf9afd2b8313b5a7a89ac609c9a7ba5
Parent:        38292ca1d0a78aa6b06a4180b8e87cb9dd417a22
Author:        Alasdair G Kergon <agk at redhat.com>
AuthorDate:    Tue Mar 14 00:47:46 2017 +0000
Committer:     Alasdair G Kergon <agk at redhat.com>
CommitterDate: Tue Mar 14 00:47:46 2017 +0000

man: Revise internal man page generation process.

For each section 8 man page, a .8_gen file is created from one of:
  .8_main            - Old-style man page - content used directly
  .8_des and .8_end  - Description and end section of a generated page
  .8_pregen	     - Pre-generated page used if the generator fails

Other man sections are not generated and use the suffix .5_main or .7_main.

Developers should use 'make generate' to regenerate the .8_pregen files.
---
 Makefile.in                          |    5 +-
 man/Makefile.in                      |  112 +-
 man/blkdeactivate.8.in               |  105 --
 man/blkdeactivate.8_main             |  105 ++
 man/clvmd.8.in                       |  199 ---
 man/clvmd.8_main                     |  199 +++
 man/cmirrord.8.in                    |   39 -
 man/cmirrord.8_main                  |   39 +
 man/dmeventd.8.in                    |  150 --
 man/dmeventd.8_main                  |  150 ++
 man/dmfilemapd.8.in                  |  212 ---
 man/dmfilemapd.8_main                |  212 +++
 man/dmsetup.8.in                     | 1026 ------------
 man/dmsetup.8_main                   | 1026 ++++++++++++
 man/dmstats.8.in                     | 1284 ---------------
 man/dmstats.8_main                   | 1284 +++++++++++++++
 man/fsadm.8.in                       |  114 --
 man/fsadm.8_main                     |  114 ++
 man/lvchange.8.des                   |    2 -
 man/lvchange.8.end                   |    6 -
 man/lvchange.8_des                   |    2 +
 man/lvchange.8_end                   |    6 +
 man/lvchange.8_pregen                | 1272 +++++++++++++++
 man/lvconvert.8.des                  |   65 -
 man/lvconvert.8.end                  |  116 --
 man/lvconvert.8_des                  |   65 +
 man/lvconvert.8_end                  |  116 ++
 man/lvconvert.8_pregen               | 2059 ++++++++++++++++++++++++
 man/lvcreate.8.des                   |   39 -
 man/lvcreate.8.end                   |   98 --
 man/lvcreate.8_des                   |   39 +
 man/lvcreate.8_end                   |   98 ++
 man/lvcreate.8_pregen                | 2865 ++++++++++++++++++++++++++++++++++
 man/lvdisplay.8.des                  |    5 -
 man/lvdisplay.8_des                  |    5 +
 man/lvdisplay.8_pregen               |  639 ++++++++
 man/lvextend.8.des                   |   12 -
 man/lvextend.8.end                   |   16 -
 man/lvextend.8_des                   |   12 +
 man/lvextend.8_end                   |   16 +
 man/lvextend.8_pregen                |  781 +++++++++
 man/lvm-config.8.des                 |    5 -
 man/lvm-config.8_des                 |    5 +
 man/lvm-config.8_pregen              |  522 +++++++
 man/lvm-dumpconfig.8.des             |    5 -
 man/lvm-dumpconfig.8_des             |    5 +
 man/lvm-dumpconfig.8_pregen          |  522 +++++++
 man/lvm-fullreport.8.des             |    6 -
 man/lvm-fullreport.8_des             |    6 +
 man/lvm-fullreport.8_pregen          |  623 ++++++++
 man/lvm-lvpoll.8.des                 |    4 -
 man/lvm-lvpoll.8.end                 |   33 -
 man/lvm-lvpoll.8_des                 |    4 +
 man/lvm-lvpoll.8_end                 |   33 +
 man/lvm-lvpoll.8_pregen              |  373 +++++
 man/lvm.8.in                         |  553 -------
 man/lvm.8_main                       |  553 +++++++
 man/lvm.conf.5.in                    |  213 ---
 man/lvm.conf.5_main                  |  213 +++
 man/lvm2-activation-generator.8.in   |   55 -
 man/lvm2-activation-generator.8_main |   55 +
 man/lvmcache.7.in                    |  419 -----
 man/lvmcache.7_main                  |  419 +++++
 man/lvmconf.8.in                     |   70 -
 man/lvmconf.8_main                   |   70 +
 man/lvmconfig.8.des                  |    3 -
 man/lvmconfig.8_des                  |    3 +
 man/lvmconfig.8_pregen               |  520 ++++++
 man/lvmdbusd.8.in                    |   38 -
 man/lvmdbusd.8_main                  |   38 +
 man/lvmdiskscan.8.des                |    7 -
 man/lvmdiskscan.8_des                |    7 +
 man/lvmdiskscan.8_pregen             |  314 ++++
 man/lvmdump.8.in                     |  112 --
 man/lvmdump.8_main                   |  112 ++
 man/lvmetad.8.in                     |  126 --
 man/lvmetad.8_main                   |  126 ++
 man/lvmlockctl.8.in                  |  102 --
 man/lvmlockctl.8_main                |  102 ++
 man/lvmlockd.8.in                    |  889 -----------
 man/lvmlockd.8_main                  |  889 +++++++++++
 man/lvmpolld.8.in                    |   90 --
 man/lvmpolld.8_main                  |   90 ++
 man/lvmraid.7.in                     | 1711 --------------------
 man/lvmraid.7_main                   | 1711 ++++++++++++++++++++
 man/lvmreport.7.in                   | 1810 ---------------------
 man/lvmreport.7_main                 | 1810 +++++++++++++++++++++
 man/lvmsadc.8.des                    |    3 -
 man/lvmsadc.8_des                    |    3 +
 man/lvmsadc.8_pregen                 |  280 ++++
 man/lvmsar.8.des                     |    3 -
 man/lvmsar.8_des                     |    3 +
 man/lvmsar.8_pregen                  |  296 ++++
 man/lvmsystemid.7.in                 |  354 -----
 man/lvmsystemid.7_main               |  354 +++++
 man/lvmthin.7.in                     | 1359 ----------------
 man/lvmthin.7_main                   | 1359 ++++++++++++++++
 man/lvreduce.8.des                   |   19 -
 man/lvreduce.8.end                   |    5 -
 man/lvreduce.8_des                   |   19 +
 man/lvreduce.8_end                   |    5 +
 man/lvreduce.8_pregen                |  426 +++++
 man/lvremove.8.des                   |   27 -
 man/lvremove.8.end                   |   11 -
 man/lvremove.8_des                   |   27 +
 man/lvremove.8_end                   |   11 +
 man/lvremove.8_pregen                |  424 +++++
 man/lvrename.8.des                   |    2 -
 man/lvrename.8.end                   |   10 -
 man/lvrename.8_des                   |    2 +
 man/lvrename.8_end                   |   10 +
 man/lvrename.8_pregen                |  356 +++++
 man/lvresize.8.des                   |    7 -
 man/lvresize.8.end                   |    6 -
 man/lvresize.8_des                   |    7 +
 man/lvresize.8_end                   |    6 +
 man/lvresize.8_pregen                |  702 +++++++++
 man/lvs.8.des                        |    1 -
 man/lvs.8.end                        |   76 -
 man/lvs.8_des                        |    1 +
 man/lvs.8_end                        |   76 +
 man/lvs.8_pregen                     |  733 +++++++++
 man/lvscan.8.des                     |    5 -
 man/lvscan.8_des                     |    5 +
 man/lvscan.8_pregen                  |  399 +++++
 man/pvchange.8.des                   |    1 -
 man/pvchange.8.end                   |    6 -
 man/pvchange.8_des                   |    1 +
 man/pvchange.8_end                   |    6 +
 man/pvchange.8_pregen                |  487 ++++++
 man/pvck.8.des                       |    1 -
 man/pvck.8.end                       |    8 -
 man/pvck.8_des                       |    1 +
 man/pvck.8_end                       |    8 +
 man/pvck.8_pregen                    |  311 ++++
 man/pvcreate.8.des                   |   21 -
 man/pvcreate.8.end                   |   13 -
 man/pvcreate.8_des                   |   21 +
 man/pvcreate.8_end                   |   13 +
 man/pvcreate.8_pregen                |  539 +++++++
 man/pvdisplay.8.des                  |    5 -
 man/pvdisplay.8_des                  |    5 +
 man/pvdisplay.8_pregen               |  610 ++++++++
 man/pvmove.8.des                     |   16 -
 man/pvmove.8.end                     |   93 --
 man/pvmove.8_des                     |   16 +
 man/pvmove.8_end                     |   93 ++
 man/pvmove.8_pregen                  |  551 +++++++
 man/pvremove.8.des                   |    7 -
 man/pvremove.8_des                   |    7 +
 man/pvremove.8_pregen                |  323 ++++
 man/pvresize.8.des                   |    2 -
 man/pvresize.8.end                   |   16 -
 man/pvresize.8_des                   |    2 +
 man/pvresize.8_end                   |   16 +
 man/pvresize.8_pregen                |  334 ++++
 man/pvs.8.des                        |    1 -
 man/pvs.8.end                        |   11 -
 man/pvs.8_des                        |    1 +
 man/pvs.8_end                        |   11 +
 man/pvs.8_pregen                     |  656 ++++++++
 man/pvscan.8.des                     |  105 --
 man/pvscan.8_des                     |  105 ++
 man/pvscan.8_pregen                  |  542 +++++++
 man/vgcfgbackup.8.des                |   16 -
 man/vgcfgbackup.8_des                |   16 +
 man/vgcfgbackup.8_pregen             |  389 +++++
 man/vgcfgrestore.8.des               |   11 -
 man/vgcfgrestore.8.end               |    9 -
 man/vgcfgrestore.8_des               |   11 +
 man/vgcfgrestore.8_end               |    9 +
 man/vgcfgrestore.8_pregen            |  473 ++++++
 man/vgchange.8.des                   |    2 -
 man/vgchange.8.end                   |   16 -
 man/vgchange.8_des                   |    2 +
 man/vgchange.8_end                   |   16 +
 man/vgchange.8_pregen                | 1151 ++++++++++++++
 man/vgck.8.des                       |    1 -
 man/vgck.8_des                       |    1 +
 man/vgck.8_pregen                    |  310 ++++
 man/vgconvert.8.des                  |    7 -
 man/vgconvert.8_des                  |    7 +
 man/vgconvert.8_pregen               |  394 +++++
 man/vgcreate.8.des                   |    4 -
 man/vgcreate.8.end                   |    6 -
 man/vgcreate.8_des                   |    4 +
 man/vgcreate.8_end                   |    6 +
 man/vgcreate.8_pregen                |  626 ++++++++
 man/vgdisplay.8.des                  |    4 -
 man/vgdisplay.8_des                  |    4 +
 man/vgdisplay.8_pregen               |  606 +++++++
 man/vgexport.8.des                   |    8 -
 man/vgexport.8_des                   |    8 +
 man/vgexport.8_pregen                |  363 +++++
 man/vgextend.8.des                   |   11 -
 man/vgextend.8.end                   |    6 -
 man/vgextend.8_des                   |   11 +
 man/vgextend.8_end                   |    6 +
 man/vgextend.8_pregen                |  473 ++++++
 man/vgimport.8.des                   |    5 -
 man/vgimport.8_des                   |    5 +
 man/vgimport.8_pregen                |  372 +++++
 man/vgimportclone.8.des              |    6 -
 man/vgimportclone.8.end              |    9 -
 man/vgimportclone.8_des              |    6 +
 man/vgimportclone.8_end              |    9 +
 man/vgimportclone.8_pregen           |  330 ++++
 man/vgmerge.8.des                    |    3 -
 man/vgmerge.8.end                    |    7 -
 man/vgmerge.8_des                    |    3 +
 man/vgmerge.8_end                    |    7 +
 man/vgmerge.8_pregen                 |  315 ++++
 man/vgmknodes.8.des                  |    5 -
 man/vgmknodes.8_des                  |    5 +
 man/vgmknodes.8_pregen               |  346 ++++
 man/vgreduce.8.des                   |    1 -
 man/vgreduce.8_des                   |    1 +
 man/vgreduce.8_pregen                |  483 ++++++
 man/vgremove.8.des                   |    9 -
 man/vgremove.8_des                   |    9 +
 man/vgremove.8_pregen                |  364 +++++
 man/vgrename.8.des                   |    9 -
 man/vgrename.8.end                   |   10 -
 man/vgrename.8_des                   |    9 +
 man/vgrename.8_end                   |   10 +
 man/vgrename.8_pregen                |  361 +++++
 man/vgs.8.des                        |    1 -
 man/vgs.8.end                        |   17 -
 man/vgs.8_des                        |    1 +
 man/vgs.8_end                        |   17 +
 man/vgs.8_pregen                     |  642 ++++++++
 man/vgscan.8.des                     |    1 -
 man/vgscan.8_des                     |    1 +
 man/vgscan.8_pregen                  |  356 +++++
 man/vgsplit.8.des                    |   13 -
 man/vgsplit.8_des                    |   13 +
 man/vgsplit.8_pregen                 |  444 ++++++
 237 files changed, 39462 insertions(+), 12172 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index b525278..31d428d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -100,7 +100,7 @@ CLEAN_DIRS += autom4te.cache
 check check_system check_cluster check_local check_lvmetad check_lvmpolld check_lvmlockd_test check_lvmlockd_dlm check_lvmlockd_sanlock unit: all
 	$(MAKE) -C test $(@)
 
-conf.generate: tools
+conf.generate man.generate: tools
 
 # how to use parenthesis in makefiles
 leftparen:=(
@@ -130,8 +130,9 @@ rpm: dist
 	    $(top_srcdir)/spec/source.inc >$(rpmbuilddir)/SOURCES/source.inc
 	rpmbuild -v --define "_topdir $(rpmbuilddir)" -ba $(top_srcdir)/spec/lvm2.spec
 
-generate: conf.generate
+generate: conf.generate man.generate
 	$(MAKE) -C conf generate
+	$(MAKE) -C man generate
 
 all_man:
 	$(MAKE) -C man all_man
diff --git a/man/Makefile.in b/man/Makefile.in
index 6c799a5..e7020cd 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2004-2017 Red Hat, Inc. All rights reserved.
 #
 # This file is part of LVM2.
 #
@@ -31,24 +31,20 @@ LVMRAIDMAN = lvmraid.7
 
 MAN5=lvm.conf.5
 MAN7=lvmsystemid.7 lvmreport.7 
-MAN8=lvm.8 lvmconf.8 lvmdump.8
-MAN8DM=dmsetup.8 dmstats.8
-MAN8CLUSTER=
-MAN8SYSTEMD_GENERATORS=lvm2-activation-generator.8
-
-MAN8GEN=lvm-config.8 lvm-dumpconfig.8 lvm-fullreport.8 lvm-lvpoll.8 \
-	lvcreate.8 lvchange.8 lvmconfig.8 lvconvert.8 lvdisplay.8 lvextend.8 \
-	lvreduce.8 lvremove.8 lvrename.8 lvresize.8 lvs.8 \
-	lvscan.8 pvchange.8 pvck.8 pvcreate.8 pvdisplay.8 pvmove.8 pvremove.8 \
-	pvresize.8 pvs.8 pvscan.8 vgcfgbackup.8 vgcfgrestore.8 vgchange.8 \
-	vgck.8 vgcreate.8 vgconvert.8 vgdisplay.8 vgexport.8 vgextend.8 \
-	vgimport.8 vgimportclone.8 vgmerge.8 vgmknodes.8 vgreduce.8 vgremove.8 \
-	vgrename.8 vgs.8 vgscan.8 vgsplit.8 \
-	lvmsar.8 lvmsadc.8 lvmdiskscan.8 lvmchange.8
+MAN8=lvm.8 lvmconf.8 lvmdump.8 lvm-config.8 lvm-dumpconfig.8 lvm-fullreport.8 \
+     lvm-lvpoll.8 lvcreate.8 lvchange.8 lvmconfig.8 lvconvert.8 lvdisplay.8 \
+     lvextend.8 lvreduce.8 lvremove.8 lvrename.8 lvresize.8 lvs.8 \
+     lvscan.8 pvchange.8 pvck.8 pvcreate.8 pvdisplay.8 pvmove.8 pvremove.8 \
+     pvresize.8 pvs.8 pvscan.8 vgcfgbackup.8 vgcfgrestore.8 vgchange.8 \
+     vgck.8 vgcreate.8 vgconvert.8 vgdisplay.8 vgexport.8 vgextend.8 \
+     vgimport.8 vgimportclone.8 vgmerge.8 vgmknodes.8 vgreduce.8 vgremove.8 \
+     vgrename.8 vgs.8 vgscan.8 vgsplit.8 \
+     lvmsar.8 lvmsadc.8 lvmdiskscan.8 lvmchange.8
 MAN8DM=dmsetup.8 dmstats.8 dmfilemapd.8
 MAN8CLUSTER=
 MAN8SYSTEMD_GENERATORS=lvm2-activation-generator.8
 
+
 ifeq ($(MAKECMDGOALS),all_man)
   MAN_ALL="yes"
 endif
@@ -116,46 +112,73 @@ MAN5DIR=$(mandir)/man5
 MAN7DIR=$(mandir)/man7
 MAN8DIR=$(mandir)/man8
 
+MANGENERATOR=man-generator
+TESTMAN=test.gen
+
 include $(top_builddir)/make.tmpl
 
-CLEAN_TARGETS+=$(MAN5) $(MAN7) $(MAN8) $(MAN8GEN) $(MAN8CLUSTER) \
-	$(MAN8SYSTEMD_GENERATORS) $(MAN8DM) *.gen man-generator
+CLEAN_TARGETS+=$(MAN5) $(MAN7) $(MAN8) $(MAN8:%.8_gen=%.8) $(MAN8CLUSTER) \
+	$(MAN8SYSTEMD_GENERATORS) $(MAN8DM) $(MANGENERATOR) $(TESTMAN)
 DISTCLEAN_TARGETS+=$(FSADMMAN) $(BLKDEACTIVATEMAN) $(DMEVENTDMAN) \
 	$(LVMETADMAN) $(LVMPOLLDMAN) $(LVMLOCKDMAN) $(CLVMDMAN) $(CMIRRORDMAN) \
 	$(LVMCACHEMAN) $(LVMTHINMAN) $(LVMDBUSDMAN) $(LVMRAIDMAN)
 
 all: man device-mapper
 
-.PHONY: man install_man5 install_man7 install_man8
+.PHONY: man install_man5 install_man7 install_man8 pregenerated_man
 
 device-mapper: $(MAN8DM)
 
-man: $(MAN5) $(MAN7) $(MAN8) $(MAN8GEN) $(MAN8CLUSTER) $(MAN8SYSTEMD_GENERATORS)
+man: $(MAN5) $(MAN7) $(MAN8) $(MAN8CLUSTER) $(MAN8SYSTEMD_GENERATORS)
 
 all_man: man
 
-$(MAN5) $(MAN7) $(MAN8) $(MAN8GEN) $(MAN8DM) $(MAN8CLUSTER):	Makefile
+$(MAN5) $(MAN7) $(MAN8) $(MAN8DM) $(MAN8CLUSTER) $(MAN8SYSTEMD_GENERATORS): Makefile
 
-Makefile: Makefile.in
-	@:
-
-%: %.in
-	@case "$@" in \
-	  */*) ;; \
-	  *) echo "Creating $@" ; $(SED) -e "s+#VERSION#+$(LVM_VERSION)+;s+#DEFAULT_SYS_DIR#+$(DEFAULT_SYS_DIR)+;s+#DEFAULT_ARCHIVE_DIR#+$(DEFAULT_ARCHIVE_DIR)+;s+#DEFAULT_BACKUP_DIR#+$(DEFAULT_BACKUP_DIR)+;s+#DEFAULT_PROFILE_DIR#+$(DEFAULT_PROFILE_DIR)+;s+#DEFAULT_CACHE_DIR#+$(DEFAULT_CACHE_DIR)+;s+#DEFAULT_LOCK_DIR#+$(DEFAULT_LOCK_DIR)+;s+#CLVMD_PATH#+ at CLVMD_PATH@+;s+#LVM_PATH#+ at LVM_PATH@+;s+#DEFAULT_RUN_DIR#+ at DEFAULT_RUN_DIR@+;s+#DEFAULT_PID_DIR#+ at DEFAULT_PID_DIR@+;s+#SYSTEMD_GENERATOR_DIR#+$(SYSTEMD_GENERATOR_DIR)+;s+#DEFAULT_MANGLING#+$(DEFAULT_MANGLING)+;" $< > $@ ;; \
-	esac
-
-man-generator:
+$(MANGENERATOR): Makefile
 	$(CC) -DMAN_PAGE_GENERATOR -I$(top_builddir)/tools $(CFLAGS) $(top_srcdir)/tools/command.c -o $@
-	- ./man-generator --primary lvmconfig > test.gen
-	if [ ! -s test.gen ] ; then cp genfiles/*.gen $(top_builddir)/man; fi;
 
-$(MAN8GEN): man-generator
-	echo "Generating $@" ;
-	if [ ! -e $@.gen ]; then ./man-generator --primary $(basename $@) $(top_srcdir)/man/$@.des > $@.gen; ./man-generator --secondary $(basename $@) >> $@.gen; fi
-	if [ -f $(top_srcdir)/man/$@.end ]; then cat $(top_srcdir)/man/$@.end >> $@.gen; fi;
-	cat $(top_srcdir)/man/see_also.end >> $@.gen
-	$(SED) -e "s+#VERSION#+$(LVM_VERSION)+;s+#DEFAULT_SYS_DIR#+$(DEFAULT_SYS_DIR)+;s+#DEFAULT_ARCHIVE_DIR#+$(DEFAULT_ARCHIVE_DIR)+;s+#DEFAULT_BACKUP_DIR#+$(DEFAULT_BACKUP_DIR)+;s+#DEFAULT_PROFILE_DIR#+$(DEFAULT_PROFILE_DIR)+;s+#DEFAULT_CACHE_DIR#+$(DEFAULT_CACHE_DIR)+;s+#DEFAULT_LOCK_DIR#+$(DEFAULT_LOCK_DIR)+;s+#CLVMD_PATH#+ at CLVMD_PATH@+;s+#LVM_PATH#+ at LVM_PATH@+;s+#DEFAULT_RUN_DIR#+ at DEFAULT_RUN_DIR@+;s+#DEFAULT_PID_DIR#+ at DEFAULT_PID_DIR@+;s+#SYSTEMD_GENERATOR_DIR#+$(SYSTEMD_GENERATOR_DIR)+;s+#DEFAULT_MANGLING#+$(DEFAULT_MANGLING)+;" $@.gen > $@
+# Test whether or not the man page generator works
+$(TESTMAN): $(MANGENERATOR)
+	- $(MANGENERATOR) --primary lvmconfig > $@
+
+SEE_ALSO=$(srcdir)/see_also.end
+
+%.8_gen: $(srcdir)/%.8_des $(srcdir)/%.8_end $(MANGENERATOR) $(TESTMAN)
+	( \
+	    if [ ! -s $(TESTMAN) ] ; then \
+		echo "Copying pre-generated $@" ; \
+	    else \
+		echo "Generating $@" ; \
+	    fi \
+	)
+	( \
+	    if [ ! -s $(TESTMAN) ] ; then \
+		cat $(srcdir)/$(@:%.8_gen=%.8_pregen) ; \
+	    else \
+		MANCMD=$(basename $@) && \
+		$(MANGENERATOR) --primary $$MANCMD $< && \
+		$(MANGENERATOR) --secondary $$MANCMD && \
+		cat $(srcdir)/$(basename $@).8_end && \
+		cat $(SEE_ALSO) ; \
+	    fi \
+	) > $@
+
+define SUBSTVARS
+echo "Generating $@" ; $(SED) -e "s+#VERSION#+$(LVM_VERSION)+;s+#DEFAULT_SYS_DIR#+$(DEFAULT_SYS_DIR)+;s+#DEFAULT_ARCHIVE_DIR#+$(DEFAULT_ARCHIVE_DIR)+;s+#DEFAULT_BACKUP_DIR#+$(DEFAULT_BACKUP_DIR)+;s+#DEFAULT_PROFILE_DIR#+$(DEFAULT_PROFILE_DIR)+;s+#DEFAULT_CACHE_DIR#+$(DEFAULT_CACHE_DIR)+;s+#DEFAULT_LOCK_DIR#+$(DEFAULT_LOCK_DIR)+;s+#CLVMD_PATH#+/data/lvmtest/usr/sbin/clvmd+;s+#LVM_PATH#+/data/lvmtest/sbin/lvm+;s+#DEFAULT_RUN_DIR#+/var/run/lvm+;s+#DEFAULT_PID_DIR#+/var/run+;s+#SYSTEMD_GENERATOR_DIR#+$(SYSTEMD_GENERATOR_DIR)+;s+#DEFAULT_MANGLING#+$(DEFAULT_MANGLING)+;" $< > $@
+endef
+
+%.5: $(srcdir)/%.5_main
+	$(SUBSTVARS)
+
+%.7: $(srcdir)/%.7_main
+	$(SUBSTVARS)
+
+%.8: $(srcdir)/%.8_main
+	$(SUBSTVARS)
+
+%.8: %.8_gen
+	$(SUBSTVARS)
 
 install_man5: $(MAN5)
 	$(INSTALL) -d $(MAN5DIR)
@@ -165,10 +188,10 @@ install_man7: $(MAN7)
 	$(INSTALL) -d $(MAN7DIR)
 	$(INSTALL_DATA) $(MAN7) $(MAN7DIR)/
 
-install_man8: $(MAN8) $(MAN8GEN)
+install_man8: $(MAN8) $(MAN8GENERATED)
 	$(INSTALL) -d $(MAN8DIR)
 	$(INSTALL_DATA) $(MAN8) $(MAN8DIR)/
-	$(INSTALL_DATA) $(MAN8GEN) $(MAN8DIR)/
+	$(INSTALL_DATA) $(MAN8GENERATED) $(MAN8DIR)/
 
 install_lvm2: install_man5 install_man7 install_man8
 
@@ -189,3 +212,12 @@ install_systemd_generators: $(MAN8SYSTEMD_GENERATORS)
 install: install_lvm2 install_device-mapper install_cluster
 
 install_all_man: install install_systemd_generators
+
+# Copy generated man pages back to source tree as fallback for machines where generator doesn't work
+pregenerated_man: all
+	for i in $(srcdir)/*.8_des; do \
+		CMD=`basename $$i .8_des`; \
+		cat $${CMD}.8 > $(srcdir)/$$CMD.8_pregen ; \
+	done
+
+generate: pregenerated_man
diff --git a/man/blkdeactivate.8.in b/man/blkdeactivate.8.in
deleted file mode 100644
index 8bb10b5..0000000
--- a/man/blkdeactivate.8.in
+++ /dev/null
@@ -1,105 +0,0 @@
-.TH "BLKDEACTIVATE" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-.SH "NAME"
-blkdeactivate \(em utility to deactivate block devices
-.SH SYNOPSIS
-.B blkdeactivate
-.RB [ \-d \  \fIdm_options\fP ]
-.RB [ \-e ]
-.RB [ \-h ]
-.RB [ \-l \  \fIlvm_options\fP ]
-.RB [ \-m \  \fImpath_options\fP ]
-.RB [ \-u ]
-.RB [ \-v ]
-.RI [ device ]
-.SH DESCRIPTION
-blkdeactivate utility deactivates block devices. If a device
-is mounted, the utility can unmount it automatically before
-trying to deactivate. The utility currently supports
-device-mapper devices (DM), including LVM volumes and
-software RAID MD devices. LVM volumes are handled directly
-using the \fBlvm\fP(8) command, the rest of device-mapper
-based devices are handled using the \fBdmsetup\fP(8) command.
-MD devices are handled using the \fBmdadm\fP(8) command.
-.SH OPTIONS
-.TP
-.BR \-d ", " \-\-dmoption \ \fIdm_options\fP
-Comma separated list of device-mapper specific options.
-Accepted \fBdmsetup\fP(8) options are:
-.RS
-.IP \fIretry\fP
-Retry removal several times in case of failure.
-.IP \fIforce\fP
-Force device removal.
-.RE
-.TP
-.BR \-e ", " \-\-errors
-Show errors reported from tools called by \fBblkdeactivate\fP. Without this
-option, any error messages from these external tools are suppressed and the
-\fBblkdeactivate\fP itself provides only a summary message about device being
-skipped or not.
-.TP
-.BR \-h ", " \-\-help
-Display the help text.
-.TP
-.BR \-l ", " \-\-lvmoption \ \fIlvm_options\fP
-Comma separated list of LVM specific options:
-.RS
-.IP \fIretry\fP
-Retry removal several times in case of failure.
-.IP \fIwholevg\fP
-Deactivate the whole LVM Volume Group when processing a Logical Volume.
-Deactivating Volume Group as a whole takes less time than deactivating each
-Logical Volume separately.
-.RE
-.TP
-.BR \-m ", " \-\-mpathoption \ \fImpath_options\fP
-Comma separated list of device-mapper multipath specific options:
-.RS
-.IP \fIdisablequeueing\fP
-Disable queueing on all multipath devices first before deactivation.
-This avoids a situation where blkdeactivate may end up waiting if
-all paths are unavailable for any underlying device-mapper multipath
-device.
-.RE
-.TP
-.BR \-u ", " \-\-umount
-Unmount a mounted device before trying to deactivate it.
-Without this option used, a device that is mounted is not deactivated.
-.TP
-.BR \-v ", " \-\-verbose
-Run in verbose mode. Use \-\-vv for even more verbose mode.
-.SH EXAMPLES
-.sp
-Deactivate all supported block devices found in the system. If a device
-is mounted, skip its deactivation.
-.sp
-.B blkdeactivate
-
-Deactivate all supported block devices found in the system. If a device
-is mounted, unmount it first if possible.
-.sp
-.B blkdeactivate \-u
-
-Deactivate supplied device together with all its holders. If any of the
-devices processed is mounted, unmount it first if possible.
-.sp
-.B blkdeactivate \-u /dev/vg/lvol0
-
-Deactivate all supported block devices found in the system. Retry deactivation
-of device-mapper devices in case the deactivation fails. Deactivate the whole
-Volume Group at once when processing an LVM Logical Volume.
-.sp
-.B blkdeactivate \-u \-d retry \-l wholevg
-
-Deactivate all supported block devices found in the system. Retry deactivation
-of device-mapper devices in case the deactivation fails and force removal.
-.sp
-.B blkdeactivate \-d force,retry
-
-.SH SEE ALSO
-.BR dmsetup (8),
-.BR lsblk (8),
-.BR lvm (8),
-.BR mdadm (8),
-.BR multipathd (8),
-.BR umount (8)
diff --git a/man/blkdeactivate.8_main b/man/blkdeactivate.8_main
new file mode 100644
index 0000000..8bb10b5
--- /dev/null
+++ b/man/blkdeactivate.8_main
@@ -0,0 +1,105 @@
+.TH "BLKDEACTIVATE" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+.SH "NAME"
+blkdeactivate \(em utility to deactivate block devices
+.SH SYNOPSIS
+.B blkdeactivate
+.RB [ \-d \  \fIdm_options\fP ]
+.RB [ \-e ]
+.RB [ \-h ]
+.RB [ \-l \  \fIlvm_options\fP ]
+.RB [ \-m \  \fImpath_options\fP ]
+.RB [ \-u ]
+.RB [ \-v ]
+.RI [ device ]
+.SH DESCRIPTION
+blkdeactivate utility deactivates block devices. If a device
+is mounted, the utility can unmount it automatically before
+trying to deactivate. The utility currently supports
+device-mapper devices (DM), including LVM volumes and
+software RAID MD devices. LVM volumes are handled directly
+using the \fBlvm\fP(8) command, the rest of device-mapper
+based devices are handled using the \fBdmsetup\fP(8) command.
+MD devices are handled using the \fBmdadm\fP(8) command.
+.SH OPTIONS
+.TP
+.BR \-d ", " \-\-dmoption \ \fIdm_options\fP
+Comma separated list of device-mapper specific options.
+Accepted \fBdmsetup\fP(8) options are:
+.RS
+.IP \fIretry\fP
+Retry removal several times in case of failure.
+.IP \fIforce\fP
+Force device removal.
+.RE
+.TP
+.BR \-e ", " \-\-errors
+Show errors reported from tools called by \fBblkdeactivate\fP. Without this
+option, any error messages from these external tools are suppressed and the
+\fBblkdeactivate\fP itself provides only a summary message about device being
+skipped or not.
+.TP
+.BR \-h ", " \-\-help
+Display the help text.
+.TP
+.BR \-l ", " \-\-lvmoption \ \fIlvm_options\fP
+Comma separated list of LVM specific options:
+.RS
+.IP \fIretry\fP
+Retry removal several times in case of failure.
+.IP \fIwholevg\fP
+Deactivate the whole LVM Volume Group when processing a Logical Volume.
+Deactivating Volume Group as a whole takes less time than deactivating each
+Logical Volume separately.
+.RE
+.TP
+.BR \-m ", " \-\-mpathoption \ \fImpath_options\fP
+Comma separated list of device-mapper multipath specific options:
+.RS
+.IP \fIdisablequeueing\fP
+Disable queueing on all multipath devices first before deactivation.
+This avoids a situation where blkdeactivate may end up waiting if
+all paths are unavailable for any underlying device-mapper multipath
+device.
+.RE
+.TP
+.BR \-u ", " \-\-umount
+Unmount a mounted device before trying to deactivate it.
+Without this option used, a device that is mounted is not deactivated.
+.TP
+.BR \-v ", " \-\-verbose
+Run in verbose mode. Use \-\-vv for even more verbose mode.
+.SH EXAMPLES
+.sp
+Deactivate all supported block devices found in the system. If a device
+is mounted, skip its deactivation.
+.sp
+.B blkdeactivate
+
+Deactivate all supported block devices found in the system. If a device
+is mounted, unmount it first if possible.
+.sp
+.B blkdeactivate \-u
+
+Deactivate supplied device together with all its holders. If any of the
+devices processed is mounted, unmount it first if possible.
+.sp
+.B blkdeactivate \-u /dev/vg/lvol0
+
+Deactivate all supported block devices found in the system. Retry deactivation
+of device-mapper devices in case the deactivation fails. Deactivate the whole
+Volume Group at once when processing an LVM Logical Volume.
+.sp
+.B blkdeactivate \-u \-d retry \-l wholevg
+
+Deactivate all supported block devices found in the system. Retry deactivation
+of device-mapper devices in case the deactivation fails and force removal.
+.sp
+.B blkdeactivate \-d force,retry
+
+.SH SEE ALSO
+.BR dmsetup (8),
+.BR lsblk (8),
+.BR lvm (8),
+.BR mdadm (8),
+.BR multipathd (8),
+.BR umount (8)
diff --git a/man/clvmd.8.in b/man/clvmd.8.in
deleted file mode 100644
index 21f8c7d..0000000
--- a/man/clvmd.8.in
+++ /dev/null
@@ -1,199 +0,0 @@
-.TH CLVMD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.
-.SH NAME
-.
-clvmd \(em cluster LVM daemon
-.
-.SH SYNOPSIS
-.
-.ad l
-.B clvmd
-.RB [ \-C ]
-.RB [ \-d
-.RI [ value ]]
-.RB [ \-E
-.IR lock_uuid ]
-.RB [ \-f ]
-.RB [ \-h ]
-.RB [ \-I
-.IR cluster_manager ]
-.RB [ \-R ]
-.RB [ \-S ]
-.RB [ \-t
-.IR timeout ]
-.RB [ \-T
-.IR start_timeout ]
-.RB [ \-V ]
-.ad b
-.
-.SH DESCRIPTION
-.
-clvmd is the daemon that distributes LVM metadata updates around a cluster.
-It must be running on all nodes in the cluster and will give an error
-if a node in the cluster does not have this daemon running.
-.
-.SH OPTIONS
-.
-.HP
-.BR \-C
-.br
-Only valid if \fB\-d\fP is also specified.
-Tells all clvmds in a cluster to enable/disable debug logging.
-Without this switch, only the local clvmd will change its debug level to that
-given with \fB\-d\fP.
-.br
-This does not work correctly if specified on the command-line that starts clvmd.
-If you want to start clvmd \fBand\fP
-enable cluster-wide logging then the command needs to be issued twice, eg:
-.br
-.BR clvmd
-.br
-.BR clvmd\ \-d2
-.
-.HP
-.BR \-d
-.RI [ value ]
-.br
-Set debug logging level.
-If \fB\-d\fP is specified without a \fIvalue\fP
-then 1 is assumed. \fIValue\fP can be:
-.PD 0
-.IP
-.BR 0
-\(em Disabled
-.IP
-.BR 1
-\(em Sends debug logs to stderr (implies \fB\-f\fP)
-.IP
-.BR 2
-\(em Sends debug logs to \fBsyslog\fP(3)
-.PD
-.
-.HP
-.BR \-E
-.IR lock_uuid
-.br
-Pass lock uuid to be reacquired exclusively when clvmd is restarted.
-.
-.HP
-.BR \-f
-.br
-Don't fork, run in the foreground.
-.
-.HP
-.BR \-h
-.br
-Show help information.
-.
-.HP
-.BR \-I
-.IR cluster_manager
-.br
-Selects the cluster manager to use for locking and internal
-communications. As it is quite possible to have multiple managers available on
-the same system you might have to manually specify this option to override the
-search.
-
-By default, omit \fB-I\fP is equivalent to \fB\-Iauto\fP.
-Clvmd will use the first cluster manager that succeeds,
-and it checks them in a predefined order
-.BR cman ,
-.BR corosync ,
-.BR openais .
-The available managers will be listed by order as part of the
-\fBclvmd \-h\fP output.
-.
-.HP
-.BR \-R
-.br
-Tells all the running instance of \fBclvmd\fP in the cluster to reload their device cache and
-re-read the lvm configuration file \fBlvm.conf\fP(5). This command should be run whenever the
-devices on a cluster system are changed.
-.
-.HP
-.BR \-S
-.br
-Tells the running \fBclvmd\fP to exit and reexecute itself, for example at the
-end of a package upgrade. The new instance is instructed to reacquire
-any locks in the same state as they were previously held. (Alternative
-methods of restarting the daemon have the side effect of changing
-exclusive LV locks into shared locks.)
-.
-.HP
-.BR \-t
-.IR timeout
-.br
-Specifies the \fItimeout\fP for commands to run around the cluster. This should not
-be so small that commands with many disk updates to do will fail, so you
-may need to increase this on systems with very large disk farms.
-The default is 60 seconds.
-.
-.HP
-.BR \-T
-.IR start_timeout
-.br
-Specifies the start timeout for \fBclvmd\fP daemon startup. If the
-daemon does not report that it has started up within this time then the parent
-command will exit with status of 5. This does NOT mean that \fBclvmd\fP has
-not started! What it means is that the startup has been delayed for some
-reason; the most likely cause of this is an inquorate cluster though it
-could be due to locking latencies on a cluster with large numbers of logical
-volumes. If you get the return code of 5 it is usually not necessary to
-restart \fBclvmd\fP it will start as soon as that blockage has cleared.
-This flag is to allow startup scripts to exit in a timely fashion even if the
-cluster is stalled for some reason.
-
-The default is \fB0\fP (no timeout) and the value is in seconds. Don't set this too
-small or you will experience spurious errors. 10 or 20 seconds might be
-sensible.
-
-This timeout will be ignored if you start \fBclvmd\fP with the \fB\-d\fP.
-.
-.HP
-.BR \-V
-.br
-Display the version of the cluster LVM daemon.
-.
-.SH NOTES
-.
-.SS Activation
-.
-In a clustered VG, clvmd is used for activation, and the following values are
-possible with \fBlvchange/vgchange -a\fP:
-.IP \fBy\fP|\fBsy\fP
-clvmd activates the LV in shared mode (with a shared lock),
-allowing multiple nodes to activate the LV concurrently.
-If the LV type prohibits shared access, such as an LV with a snapshot,
-an exclusive lock is automatically used instead.
-clvmd attempts to activate the LV concurrently on all nodes.
-.IP \fBey\fP
-clvmd activates the LV in exclusive mode (with an exclusive lock),
-allowing a single node to activate the LV.
-clvmd attempts to activate the LV concurrently on all nodes, but only
-one will succeed.
-.IP \fBly\fP
-clvmd attempts to activate the LV only on the local node.
-If the LV type allows concurrent access, then shared mode is used,
-otherwise exclusive.
-.IP \fBn\fP
-clvmd deactivates the LV on all nodes.
-.IP \fBln\fP
-clvmd deactivates the LV on the local node.
-.
-.SH ENVIRONMENT VARIABLES
-.TP
-.B LVM_CLVMD_BINARY
-The CLVMD binary to use when \fBclvmd\fP restart is requested.
-Defaults to \fI#CLVMD_PATH#\fP.
-.TP
-.B LVM_BINARY
-The LVM2 binary to use.
-Defaults to \fI#LVM_PATH#\fP.
-.SH FILES
-.I #CLVMD_PATH#
-.br
-.I #LVM_PATH#
-.SH SEE ALSO
-.BR syslog (3),
-.BR lvm.conf (5),
-.BR lvm (8)
diff --git a/man/clvmd.8_main b/man/clvmd.8_main
new file mode 100644
index 0000000..21f8c7d
--- /dev/null
+++ b/man/clvmd.8_main
@@ -0,0 +1,199 @@
+.TH CLVMD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.
+.SH NAME
+.
+clvmd \(em cluster LVM daemon
+.
+.SH SYNOPSIS
+.
+.ad l
+.B clvmd
+.RB [ \-C ]
+.RB [ \-d
+.RI [ value ]]
+.RB [ \-E
+.IR lock_uuid ]
+.RB [ \-f ]
+.RB [ \-h ]
+.RB [ \-I
+.IR cluster_manager ]
+.RB [ \-R ]
+.RB [ \-S ]
+.RB [ \-t
+.IR timeout ]
+.RB [ \-T
+.IR start_timeout ]
+.RB [ \-V ]
+.ad b
+.
+.SH DESCRIPTION
+.
+clvmd is the daemon that distributes LVM metadata updates around a cluster.
+It must be running on all nodes in the cluster and will give an error
+if a node in the cluster does not have this daemon running.
+.
+.SH OPTIONS
+.
+.HP
+.BR \-C
+.br
+Only valid if \fB\-d\fP is also specified.
+Tells all clvmds in a cluster to enable/disable debug logging.
+Without this switch, only the local clvmd will change its debug level to that
+given with \fB\-d\fP.
+.br
+This does not work correctly if specified on the command-line that starts clvmd.
+If you want to start clvmd \fBand\fP
+enable cluster-wide logging then the command needs to be issued twice, eg:
+.br
+.BR clvmd
+.br
+.BR clvmd\ \-d2
+.
+.HP
+.BR \-d
+.RI [ value ]
+.br
+Set debug logging level.
+If \fB\-d\fP is specified without a \fIvalue\fP
+then 1 is assumed. \fIValue\fP can be:
+.PD 0
+.IP
+.BR 0
+\(em Disabled
+.IP
+.BR 1
+\(em Sends debug logs to stderr (implies \fB\-f\fP)
+.IP
+.BR 2
+\(em Sends debug logs to \fBsyslog\fP(3)
+.PD
+.
+.HP
+.BR \-E
+.IR lock_uuid
+.br
+Pass lock uuid to be reacquired exclusively when clvmd is restarted.
+.
+.HP
+.BR \-f
+.br
+Don't fork, run in the foreground.
+.
+.HP
+.BR \-h
+.br
+Show help information.
+.
+.HP
+.BR \-I
+.IR cluster_manager
+.br
+Selects the cluster manager to use for locking and internal
+communications. As it is quite possible to have multiple managers available on
+the same system you might have to manually specify this option to override the
+search.
+
+By default, omit \fB-I\fP is equivalent to \fB\-Iauto\fP.
+Clvmd will use the first cluster manager that succeeds,
+and it checks them in a predefined order
+.BR cman ,
+.BR corosync ,
+.BR openais .
+The available managers will be listed by order as part of the
+\fBclvmd \-h\fP output.
+.
+.HP
+.BR \-R
+.br
+Tells all the running instance of \fBclvmd\fP in the cluster to reload their device cache and
+re-read the lvm configuration file \fBlvm.conf\fP(5). This command should be run whenever the
+devices on a cluster system are changed.
+.
+.HP
+.BR \-S
+.br
+Tells the running \fBclvmd\fP to exit and reexecute itself, for example at the
+end of a package upgrade. The new instance is instructed to reacquire
+any locks in the same state as they were previously held. (Alternative
+methods of restarting the daemon have the side effect of changing
+exclusive LV locks into shared locks.)
+.
+.HP
+.BR \-t
+.IR timeout
+.br
+Specifies the \fItimeout\fP for commands to run around the cluster. This should not
+be so small that commands with many disk updates to do will fail, so you
+may need to increase this on systems with very large disk farms.
+The default is 60 seconds.
+.
+.HP
+.BR \-T
+.IR start_timeout
+.br
+Specifies the start timeout for \fBclvmd\fP daemon startup. If the
+daemon does not report that it has started up within this time then the parent
+command will exit with status of 5. This does NOT mean that \fBclvmd\fP has
+not started! What it means is that the startup has been delayed for some
+reason; the most likely cause of this is an inquorate cluster though it
+could be due to locking latencies on a cluster with large numbers of logical
+volumes. If you get the return code of 5 it is usually not necessary to
+restart \fBclvmd\fP it will start as soon as that blockage has cleared.
+This flag is to allow startup scripts to exit in a timely fashion even if the
+cluster is stalled for some reason.
+
+The default is \fB0\fP (no timeout) and the value is in seconds. Don't set this too
+small or you will experience spurious errors. 10 or 20 seconds might be
+sensible.
+
+This timeout will be ignored if you start \fBclvmd\fP with the \fB\-d\fP.
+.
+.HP
+.BR \-V
+.br
+Display the version of the cluster LVM daemon.
+.
+.SH NOTES
+.
+.SS Activation
+.
+In a clustered VG, clvmd is used for activation, and the following values are
+possible with \fBlvchange/vgchange -a\fP:
+.IP \fBy\fP|\fBsy\fP
+clvmd activates the LV in shared mode (with a shared lock),
+allowing multiple nodes to activate the LV concurrently.
+If the LV type prohibits shared access, such as an LV with a snapshot,
+an exclusive lock is automatically used instead.
+clvmd attempts to activate the LV concurrently on all nodes.
+.IP \fBey\fP
+clvmd activates the LV in exclusive mode (with an exclusive lock),
+allowing a single node to activate the LV.
+clvmd attempts to activate the LV concurrently on all nodes, but only
+one will succeed.
+.IP \fBly\fP
+clvmd attempts to activate the LV only on the local node.
+If the LV type allows concurrent access, then shared mode is used,
+otherwise exclusive.
+.IP \fBn\fP
+clvmd deactivates the LV on all nodes.
+.IP \fBln\fP
+clvmd deactivates the LV on the local node.
+.
+.SH ENVIRONMENT VARIABLES
+.TP
+.B LVM_CLVMD_BINARY
+The CLVMD binary to use when \fBclvmd\fP restart is requested.
+Defaults to \fI#CLVMD_PATH#\fP.
+.TP
+.B LVM_BINARY
+The LVM2 binary to use.
+Defaults to \fI#LVM_PATH#\fP.
+.SH FILES
+.I #CLVMD_PATH#
+.br
+.I #LVM_PATH#
+.SH SEE ALSO
+.BR syslog (3),
+.BR lvm.conf (5),
+.BR lvm (8)
diff --git a/man/cmirrord.8.in b/man/cmirrord.8.in
deleted file mode 100644
index ad604c7..0000000
--- a/man/cmirrord.8.in
+++ /dev/null
@@ -1,39 +0,0 @@
-.TH CMIRRORD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.SH NAME
-cmirrord \(em cluster mirror log daemon
-
-.SH SYNOPSIS
-\fBcmirrord\fR [\fB\-f\fR] [\fB\-h\fR]
-
-.SH DESCRIPTION
-\fBcmirrord\fP is the daemon that tracks mirror log information in a cluster.
-It is specific to device-mapper based mirrors (and by extension, LVM
-cluster mirrors).  Cluster mirrors are not possible without this daemon
-running.
-
-This daemon relies on the cluster infrastructure provided by the
-Cluster MANager (CMAN), which must be set up and running in order for
-cmirrord to function.  (The cluster infrastructure is also required for
-\fBclvmd\fP(8).)
-
-Output is logged via \fBsyslog\fP(3). The \fBSIGUSR1 signal\fP(7) can be
-issued to \fBcmirrord\fP to gather current status information for debugging
-purposes.
-
-Once started, \fBcmirrord\fP will run until it is shutdown via \fBSIGINT\fP
-signal. If there are still active cluster mirrors, however, the signal will be
-ignored. Active cluster mirrors should be shutdown before stopping the cluster
-mirror log daemon.
-
-.SH OPTIONS
-.IP "\fB\-f\fR, \fB\-\-foreground\fR" 4
-Do not fork and log to the terminal.
-.IP "\fB\-h\fR, \fB\-\-help\fR" 4
-Print usage.
-
-.SH SEE ALSO
-.BR syslog (3),
-.BR cluster.conf (5),
-.BR signal (7),
-.BR clvmd (8),
-.BR lvm (8)
diff --git a/man/cmirrord.8_main b/man/cmirrord.8_main
new file mode 100644
index 0000000..ad604c7
--- /dev/null
+++ b/man/cmirrord.8_main
@@ -0,0 +1,39 @@
+.TH CMIRRORD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.SH NAME
+cmirrord \(em cluster mirror log daemon
+
+.SH SYNOPSIS
+\fBcmirrord\fR [\fB\-f\fR] [\fB\-h\fR]
+
+.SH DESCRIPTION
+\fBcmirrord\fP is the daemon that tracks mirror log information in a cluster.
+It is specific to device-mapper based mirrors (and by extension, LVM
+cluster mirrors).  Cluster mirrors are not possible without this daemon
+running.
+
+This daemon relies on the cluster infrastructure provided by the
+Cluster MANager (CMAN), which must be set up and running in order for
+cmirrord to function.  (The cluster infrastructure is also required for
+\fBclvmd\fP(8).)
+
+Output is logged via \fBsyslog\fP(3). The \fBSIGUSR1 signal\fP(7) can be
+issued to \fBcmirrord\fP to gather current status information for debugging
+purposes.
+
+Once started, \fBcmirrord\fP will run until it is shutdown via \fBSIGINT\fP
+signal. If there are still active cluster mirrors, however, the signal will be
+ignored. Active cluster mirrors should be shutdown before stopping the cluster
+mirror log daemon.
+
+.SH OPTIONS
+.IP "\fB\-f\fR, \fB\-\-foreground\fR" 4
+Do not fork and log to the terminal.
+.IP "\fB\-h\fR, \fB\-\-help\fR" 4
+Print usage.
+
+.SH SEE ALSO
+.BR syslog (3),
+.BR cluster.conf (5),
+.BR signal (7),
+.BR clvmd (8),
+.BR lvm (8)
diff --git a/man/dmeventd.8.in b/man/dmeventd.8.in
deleted file mode 100644
index 057f756..0000000
--- a/man/dmeventd.8.in
+++ /dev/null
@@ -1,150 +0,0 @@
-.TH DMEVENTD 8 "DM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.
-.SH NAME
-.
-dmeventd \(em Device-mapper event daemon
-.
-.SH SYNOPSIS
-.
-.B dmeventd
-.RB [ \-d
-.RB [ \-d
-.RB [ \-d ]]]
-.RB [ \-f ]
-.RB [ \-h ]
-.RB [ \-l ]
-.RB [ \-R ]
-.RB [ \-V ]
-.RB [ \-? ]
-.
-.SH DESCRIPTION
-.
-dmeventd is the event monitoring daemon for device-mapper devices.
-Library plugins can register and carry out actions triggered when
-particular events occur.
-.
-.
-.SH OPTIONS
-.
-.HP
-.BR \-d
-.br
-Repeat from 1 to 3 times (
-.BR \-d ,
-.BR \-dd ,
-.BR \-ddd
-) to increase the detail of
-debug messages sent to syslog.
-Each extra d adds more debugging information.
-.
-.HP
-.BR \-f
-.br
-Don't fork, run in the foreground.
-.
-.HP
-.BR \-h
-.br
-Show help information.
-.
-.HP
-.BR \-l
-.br
-Log through stdout and stderr instead of syslog.
-This option works only with option \-f, otherwise it is ignored.
-.
-.HP
-.BR \-?
-.br
-Show help information on stderr.
-.
-.HP
-.BR \-R
-.br
-Replace a running dmeventd instance. The running dmeventd must be version
-2.02.77 or newer. The new dmeventd instance will obtain a list of devices and
-events to monitor from the currently running daemon.
-.
-.HP
-.BR \-V
-.br
-Show version of dmeventd.
-.
-.SH LVM PLUGINS
-.
-.HP
-.BR Mirror
-.br
-Attempts to handle device failure automatically. See
-.BR lvm.conf (5).
-.
-.HP
-.BR Raid
-.br
-Attempts to handle device failure automatically. See
-.BR lvm.conf (5).
-.
-.HP
-.BR Snapshot
-.br
-Monitors how full a snapshot is becoming and emits a warning to
-syslog when it exceeds 80% full.
-The warning is repeated when 85%, 90% and 95% of the snapshot is filled.
-See
-.BR lvm.conf (5).
-Snapshot which runs out of space gets invalid and when it is mounted,
-it gets umounted if possible.
-.
-.HP
-.BR Thin
-.br
-Monitors how full a thin pool data and metadata is becoming and emits
-a warning to syslog when it exceeds 80% full.
-The warning is repeated when more then 85%, 90% and 95%
-of the thin pool is filled. See
-.BR lvm.conf (5).
-When a thin pool fills over 50% (data or metadata) thin plugin calls
-configured \fIdmeventd/thin_command\fP with every 5% increase.
-With default setting it calls internal
-\fBlvm lvextend --use-policies\fP to resize thin pool
-when it's been filled above configured threshold
-\fIactivation/thin_pool_autoextend_threshold\fP.
-If the command fails, dmeventd thin plugin will keep
-retrying execution with increasing time delay between
-retries upto 42 minutes.
-User may also configure external command to support more advanced
-maintenance operations of a thin pool.
-Such external command can e.g. remove some unneeded snapshots,
-use \fBfstrim\fP(8) to free recover space in a thin pool,
-but also can use \fBlvextend --use-policies\fP if other actions
-have not released enough space.
-Command is executed with environmental variable
-\fBLVM_RUN_BY_DMEVENTD=1\fP so any lvm2 command executed
-in this environment will not try to interact with dmeventd.
-To see the fullness of a thin pool command may check these
-two environmental variables
-\fBDMEVENTD_THIN_POOL_DATA\fP and \fBDMEVENTD_THIN_POOL_DATA\fP.
-Command can also read status with tools like \fBlvs\fP(8).
-.
-.SH ENVIRONMENT VARIABLES
-.
-.TP
-.B DMEVENTD_THIN_POOL_DATA
-Variable is set by thin plugin and is available to executed program. Value present
-actual usage of thin pool data volume. Variable is not set when error event
-is processed.
-.TP
-.B DMEVENTD_THIN_POOL_DATA
-Variable is set by thin plugin and is available to executed program. Value present
-actual usage of thin pool metadata volume. Variable is not set when error event
-is processed.
-.TP
-.B LVM_RUN_BY_DMEVENTD
-Variable is set by thin plugin to prohibit recursive interation
-with dmeventd by any executed lvm2 command from
-a thin_command environment.
-.
-.SH SEE ALSO
-.
-.BR lvm (8),
-.BR lvm.conf (5)
diff --git a/man/dmeventd.8_main b/man/dmeventd.8_main
new file mode 100644
index 0000000..057f756
--- /dev/null
+++ b/man/dmeventd.8_main
@@ -0,0 +1,150 @@
+.TH DMEVENTD 8 "DM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.
+.SH NAME
+.
+dmeventd \(em Device-mapper event daemon
+.
+.SH SYNOPSIS
+.
+.B dmeventd
+.RB [ \-d
+.RB [ \-d
+.RB [ \-d ]]]
+.RB [ \-f ]
+.RB [ \-h ]
+.RB [ \-l ]
+.RB [ \-R ]
+.RB [ \-V ]
+.RB [ \-? ]
+.
+.SH DESCRIPTION
+.
+dmeventd is the event monitoring daemon for device-mapper devices.
+Library plugins can register and carry out actions triggered when
+particular events occur.
+.
+.
+.SH OPTIONS
+.
+.HP
+.BR \-d
+.br
+Repeat from 1 to 3 times (
+.BR \-d ,
+.BR \-dd ,
+.BR \-ddd
+) to increase the detail of
+debug messages sent to syslog.
+Each extra d adds more debugging information.
+.
+.HP
+.BR \-f
+.br
+Don't fork, run in the foreground.
+.
+.HP
+.BR \-h
+.br
+Show help information.
+.
+.HP
+.BR \-l
+.br
+Log through stdout and stderr instead of syslog.
+This option works only with option \-f, otherwise it is ignored.
+.
+.HP
+.BR \-?
+.br
+Show help information on stderr.
+.
+.HP
+.BR \-R
+.br
+Replace a running dmeventd instance. The running dmeventd must be version
+2.02.77 or newer. The new dmeventd instance will obtain a list of devices and
+events to monitor from the currently running daemon.
+.
+.HP
+.BR \-V
+.br
+Show version of dmeventd.
+.
+.SH LVM PLUGINS
+.
+.HP
+.BR Mirror
+.br
+Attempts to handle device failure automatically. See
+.BR lvm.conf (5).
+.
+.HP
+.BR Raid
+.br
+Attempts to handle device failure automatically. See
+.BR lvm.conf (5).
+.
+.HP
+.BR Snapshot
+.br
+Monitors how full a snapshot is becoming and emits a warning to
+syslog when it exceeds 80% full.
+The warning is repeated when 85%, 90% and 95% of the snapshot is filled.
+See
+.BR lvm.conf (5).
+Snapshot which runs out of space gets invalid and when it is mounted,
+it gets umounted if possible.
+.
+.HP
+.BR Thin
+.br
+Monitors how full a thin pool data and metadata is becoming and emits
+a warning to syslog when it exceeds 80% full.
+The warning is repeated when more then 85%, 90% and 95%
+of the thin pool is filled. See
+.BR lvm.conf (5).
+When a thin pool fills over 50% (data or metadata) thin plugin calls
+configured \fIdmeventd/thin_command\fP with every 5% increase.
+With default setting it calls internal
+\fBlvm lvextend --use-policies\fP to resize thin pool
+when it's been filled above configured threshold
+\fIactivation/thin_pool_autoextend_threshold\fP.
+If the command fails, dmeventd thin plugin will keep
+retrying execution with increasing time delay between
+retries upto 42 minutes.
+User may also configure external command to support more advanced
+maintenance operations of a thin pool.
+Such external command can e.g. remove some unneeded snapshots,
+use \fBfstrim\fP(8) to free recover space in a thin pool,
+but also can use \fBlvextend --use-policies\fP if other actions
+have not released enough space.
+Command is executed with environmental variable
+\fBLVM_RUN_BY_DMEVENTD=1\fP so any lvm2 command executed
+in this environment will not try to interact with dmeventd.
+To see the fullness of a thin pool command may check these
+two environmental variables
+\fBDMEVENTD_THIN_POOL_DATA\fP and \fBDMEVENTD_THIN_POOL_DATA\fP.
+Command can also read status with tools like \fBlvs\fP(8).
+.
+.SH ENVIRONMENT VARIABLES
+.
+.TP
+.B DMEVENTD_THIN_POOL_DATA
+Variable is set by thin plugin and is available to executed program. Value present
+actual usage of thin pool data volume. Variable is not set when error event
+is processed.
+.TP
+.B DMEVENTD_THIN_POOL_DATA
+Variable is set by thin plugin and is available to executed program. Value present
+actual usage of thin pool metadata volume. Variable is not set when error event
+is processed.
+.TP
+.B LVM_RUN_BY_DMEVENTD
+Variable is set by thin plugin to prohibit recursive interation
+with dmeventd by any executed lvm2 command from
+a thin_command environment.
+.
+.SH SEE ALSO
+.
+.BR lvm (8),
+.BR lvm.conf (5)
diff --git a/man/dmfilemapd.8.in b/man/dmfilemapd.8.in
deleted file mode 100644
index 8e19e4b..0000000
--- a/man/dmfilemapd.8.in
+++ /dev/null
@@ -1,212 +0,0 @@
-.TH DMFILEMAPD 8 "Dec 17 2016" "Linux" "MAINTENANCE COMMANDS"
-
-.de OPT_FD
-.  RB [ file_descriptor ]
-..
-.
-.de OPT_GROUP
-.  RB [ group_id ]
-..
-.de OPT_PATH
-.  RB [ abs_path ]
-..
-.
-.de OPT_MODE
-.  RB [ mode ]
-..
-.
-.de OPT_DEBUG
-.  RB [ foreground [ verbose ] ]
-..
-.
-.SH NAME
-.
-dmfilemapd \(em device-mapper filemap monitoring daemon
-.
-.SH SYNOPSIS
-.
-.de CMD_DMFILEMAPD
-.  ad l
-.  IR dmfilemapd
-.  OPT_FD
-.  OPT_GROUP
-.  OPT_PATH
-.  OPT_MODE
-.  OPT_DEBUG
-.  ad b
-..
-.CMD_DMFILEMAPD
-.
-.PD
-.ad b
-.
-.SH DESCRIPTION
-.
-The dmfilemapd daemon monitors groups of \fIdmstats\fP regions that
-correspond to the extents of a file, adding and removing regions to
-reflect the changing state of the file on-disk.
-
-The daemon is normally launched automatically by the \fPdmstats
-create\fP command, but can be run manually, either to create a new
-daemon where one did not previously exist, or to change the options
-previously used, by killing the existing daemon and starting a new
-one.
-.
-.SH OPTIONS
-.
-.HP
-.BR file_descriptor
-.br
-Specify the file descriptor number for the file to be monitored.
-The file descriptor must reference a regular file, open for reading,
-in a local file system that supports the FIEMAP ioctl, and that
-returns data describing the physical location of extents.
-
-The process that executes \fBdmfilemapd\fP is responsible for
-opening the file descriptor that is handed to the daemon.
-.
-.HP
-.BR group_id
-.br
-The \fBdmstats\fP group identifier of the group that \fBdmfilemapd\fP
-should update. The group must exist and it should correspond to
-a set of regions created by a previous filemap operation.
-.
-.HP
-.BR abs_path
-.br
-The absolute path to the file being monitored, at the time that
-it was opened. The use of \fBpath\fP by the daemon differs,
-depending on the filemap following mode in use; see \fBMODES\fP
-and the \fBmode\fP option for more information.
-
-.br
-.HP
-.BR mode
-.br
-The filemap monitoring mode the daemon should use: either "inode"
-(\fBDM_FILEMAP_FOLLOW_INODE\fP), or "path"
-(\fBDM_FILEMAP_FOLLOW_PATH\fP), to enable follow-inode or
-follow-path mode respectively.
-.
-.HP
-.BR [foreground]
-.br
-If set to 1, disable forking and allow the daemon to run in the
-foreground.
-.
-.HP
-.BR [verbose]
-Control daemon logging. If set to zero, the daemon will close all
-stdio streams and run silently. If \fBverbose\fP is a number
-between 1 and 3, stdio will be retained and the daemon will log
-messages to stdout and stderr that match the specified verbosity
-level.
-.
-.
-.SH MODES
-.
-The file map monitoring daemon can monitor files in two distinct
-ways: the mode affects the behaviour of the daemon when a file
-under monitoring is renamed or unlinked, and the conditions which
-cause the daemon to terminate.
-
-In both modes, the daemon will always shut down when the group
-being monitored is deleted.
-
-.P
-.B Follow inode
-.P
-The daemon follows the inode of the file, as it was at the time the
-daemon started. The file descriptor referencing the file is kept
-open at all times, and the daemon will exit when it detects that
-the file has been unlinked and it is the last holder of a reference
-to the file.
-
-This mode is useful if the file is expected to be renamed, or moved
-within the file system, while it is being monitored.
-
-.P
-.B Follow path
-.P
-The daemon follows the path that was given on the daemon command
-line. The file descriptor referencing the file is re-opened on each
-iteration of the daemon, and the daemon will exit if no file exists
-at this location (a tolerance is allowed so that a brief delay
-between removal and replacement is permitted).
-
-This mode is useful if the file is updated by unlinking the original
-and placing a new file at the same path.
-.
-.SH LIMITATIONS
-.
-The daemon attempts to maintain good synchronisation between the file
-extents and the regions contained in the group, however, since the
-daemon can only react to new allocations once they have been written,
-there are inevitably some IO events that cannot be counted when a
-file is growing, particularly if the file is being extended by a
-single thread writing beyond EOF (for example, the \fBdd\fP program).
-
-There is a further loss of events in that there is currently no way
-to atomically resize a \fBdmstats\fP region and preserve its current
-counter values. This affects files when they grow by extending the
-final extent, rather than allocating a new extent: any events that
-had accumulated in the region between any prior operation and the
-resize are lost.
-
-File mapping is currently most effective in cases where the majority
-of IO does not trigger extent allocation. Future updates may address
-these limitations when kernel support is available.
-.
-.SH EXAMPLES
-.
-Normally the daemon is started automatically by the \fBdmstats\fP
-\fBcreate\fP or \fBupdate_filemap\fP commands but it can be run
-manually for debugging or testing purposes.
-.P
-Start the daemon in the background, in follow-path mode
-.br
-#
-.B dmfilemapd 3 0 /srv/images/vm.img path 0 0 3< /srv/images/vm.img
-.br
-.P
-Start the daemon in follow-inode mode, disable forking and enable
-verbose logging
-.br
-#
-.B dmfilemapd 3 0 /var/tmp/data inode 1 3 3< /var/tmp/data
-.br
-Starting dmfilemapd with fd=3, group_id=0 mode=inode, path=/var/tmp/data
-.br
-dm version   [ opencount flush ]   [16384] (*1)
-.br
-dm info   (253:0) [ opencount flush ]   [16384] (*1)
-.br
-dm message   (253:0) [ opencount flush ]  @stats_list dmstats [16384] (*1)
-.br
-Read alias 'data' from aux_data
-.br
-Found group_id 0: alias="data"
-.br
-dm_stats_walk_init: initialised flags to 4000000000000
-.br
-starting stats walk with   GROUP
-.br
-exiting _filemap_monitor_get_events() with deleted=0, check=0
-.br
-Waiting for check interval
-.br
-.P
-.
-.SH AUTHORS
-.
-Bryn M. Reeves <bmr at redhat.com>
-.
-.SH SEE ALSO
-.
-.BR dmstats (8)
-
-LVM2 resource page: https://www.sourceware.org/lvm2/
-.br
-Device-mapper resource page: http://sources.redhat.com/dm/
-.br
diff --git a/man/dmfilemapd.8_main b/man/dmfilemapd.8_main
new file mode 100644
index 0000000..8e19e4b
--- /dev/null
+++ b/man/dmfilemapd.8_main
@@ -0,0 +1,212 @@
+.TH DMFILEMAPD 8 "Dec 17 2016" "Linux" "MAINTENANCE COMMANDS"
+
+.de OPT_FD
+.  RB [ file_descriptor ]
+..
+.
+.de OPT_GROUP
+.  RB [ group_id ]
+..
+.de OPT_PATH
+.  RB [ abs_path ]
+..
+.
+.de OPT_MODE
+.  RB [ mode ]
+..
+.
+.de OPT_DEBUG
+.  RB [ foreground [ verbose ] ]
+..
+.
+.SH NAME
+.
+dmfilemapd \(em device-mapper filemap monitoring daemon
+.
+.SH SYNOPSIS
+.
+.de CMD_DMFILEMAPD
+.  ad l
+.  IR dmfilemapd
+.  OPT_FD
+.  OPT_GROUP
+.  OPT_PATH
+.  OPT_MODE
+.  OPT_DEBUG
+.  ad b
+..
+.CMD_DMFILEMAPD
+.
+.PD
+.ad b
+.
+.SH DESCRIPTION
+.
+The dmfilemapd daemon monitors groups of \fIdmstats\fP regions that
+correspond to the extents of a file, adding and removing regions to
+reflect the changing state of the file on-disk.
+
+The daemon is normally launched automatically by the \fPdmstats
+create\fP command, but can be run manually, either to create a new
+daemon where one did not previously exist, or to change the options
+previously used, by killing the existing daemon and starting a new
+one.
+.
+.SH OPTIONS
+.
+.HP
+.BR file_descriptor
+.br
+Specify the file descriptor number for the file to be monitored.
+The file descriptor must reference a regular file, open for reading,
+in a local file system that supports the FIEMAP ioctl, and that
+returns data describing the physical location of extents.
+
+The process that executes \fBdmfilemapd\fP is responsible for
+opening the file descriptor that is handed to the daemon.
+.
+.HP
+.BR group_id
+.br
+The \fBdmstats\fP group identifier of the group that \fBdmfilemapd\fP
+should update. The group must exist and it should correspond to
+a set of regions created by a previous filemap operation.
+.
+.HP
+.BR abs_path
+.br
+The absolute path to the file being monitored, at the time that
+it was opened. The use of \fBpath\fP by the daemon differs,
+depending on the filemap following mode in use; see \fBMODES\fP
+and the \fBmode\fP option for more information.
+
+.br
+.HP
+.BR mode
+.br
+The filemap monitoring mode the daemon should use: either "inode"
+(\fBDM_FILEMAP_FOLLOW_INODE\fP), or "path"
+(\fBDM_FILEMAP_FOLLOW_PATH\fP), to enable follow-inode or
+follow-path mode respectively.
+.
+.HP
+.BR [foreground]
+.br
+If set to 1, disable forking and allow the daemon to run in the
+foreground.
+.
+.HP
+.BR [verbose]
+Control daemon logging. If set to zero, the daemon will close all
+stdio streams and run silently. If \fBverbose\fP is a number
+between 1 and 3, stdio will be retained and the daemon will log
+messages to stdout and stderr that match the specified verbosity
+level.
+.
+.
+.SH MODES
+.
+The file map monitoring daemon can monitor files in two distinct
+ways: the mode affects the behaviour of the daemon when a file
+under monitoring is renamed or unlinked, and the conditions which
+cause the daemon to terminate.
+
+In both modes, the daemon will always shut down when the group
+being monitored is deleted.
+
+.P
+.B Follow inode
+.P
+The daemon follows the inode of the file, as it was at the time the
+daemon started. The file descriptor referencing the file is kept
+open at all times, and the daemon will exit when it detects that
+the file has been unlinked and it is the last holder of a reference
+to the file.
+
+This mode is useful if the file is expected to be renamed, or moved
+within the file system, while it is being monitored.
+
+.P
+.B Follow path
+.P
+The daemon follows the path that was given on the daemon command
+line. The file descriptor referencing the file is re-opened on each
+iteration of the daemon, and the daemon will exit if no file exists
+at this location (a tolerance is allowed so that a brief delay
+between removal and replacement is permitted).
+
+This mode is useful if the file is updated by unlinking the original
+and placing a new file at the same path.
+.
+.SH LIMITATIONS
+.
+The daemon attempts to maintain good synchronisation between the file
+extents and the regions contained in the group, however, since the
+daemon can only react to new allocations once they have been written,
+there are inevitably some IO events that cannot be counted when a
+file is growing, particularly if the file is being extended by a
+single thread writing beyond EOF (for example, the \fBdd\fP program).
+
+There is a further loss of events in that there is currently no way
+to atomically resize a \fBdmstats\fP region and preserve its current
+counter values. This affects files when they grow by extending the
+final extent, rather than allocating a new extent: any events that
+had accumulated in the region between any prior operation and the
+resize are lost.
+
+File mapping is currently most effective in cases where the majority
+of IO does not trigger extent allocation. Future updates may address
+these limitations when kernel support is available.
+.
+.SH EXAMPLES
+.
+Normally the daemon is started automatically by the \fBdmstats\fP
+\fBcreate\fP or \fBupdate_filemap\fP commands but it can be run
+manually for debugging or testing purposes.
+.P
+Start the daemon in the background, in follow-path mode
+.br
+#
+.B dmfilemapd 3 0 /srv/images/vm.img path 0 0 3< /srv/images/vm.img
+.br
+.P
+Start the daemon in follow-inode mode, disable forking and enable
+verbose logging
+.br
+#
+.B dmfilemapd 3 0 /var/tmp/data inode 1 3 3< /var/tmp/data
+.br
+Starting dmfilemapd with fd=3, group_id=0 mode=inode, path=/var/tmp/data
+.br
+dm version   [ opencount flush ]   [16384] (*1)
+.br
+dm info   (253:0) [ opencount flush ]   [16384] (*1)
+.br
+dm message   (253:0) [ opencount flush ]  @stats_list dmstats [16384] (*1)
+.br
+Read alias 'data' from aux_data
+.br
+Found group_id 0: alias="data"
+.br
+dm_stats_walk_init: initialised flags to 4000000000000
+.br
+starting stats walk with   GROUP
+.br
+exiting _filemap_monitor_get_events() with deleted=0, check=0
+.br
+Waiting for check interval
+.br
+.P
+.
+.SH AUTHORS
+.
+Bryn M. Reeves <bmr at redhat.com>
+.
+.SH SEE ALSO
+.
+.BR dmstats (8)
+
+LVM2 resource page: https://www.sourceware.org/lvm2/
+.br
+Device-mapper resource page: http://sources.redhat.com/dm/
+.br
diff --git a/man/dmsetup.8.in b/man/dmsetup.8.in
deleted file mode 100644
index 4261fc4..0000000
--- a/man/dmsetup.8.in
+++ /dev/null
@@ -1,1026 +0,0 @@
-.TH DMSETUP 8 "Apr 06 2006" "Linux" "MAINTENANCE COMMANDS"
-.
-.SH NAME
-.
-dmsetup \(em low level logical volume management
-.
-.SH SYNOPSIS
-.
-.\".nh
-.ad l
-.PD 0
-.HP 9
-.B dmsetup
-.de CMD_CLEAR
-.  BR clear
-.  IR device_name
-..
-.CMD_CLEAR
-.
-.HP
-.B dmsetup
-.de CMD_CREATE
-.  ad l
-.  BR create
-.  IR device_name
-.  RB [ -u | \-\-uuid
-.  IR uuid ]
-.  RB \%[ \-\-addnodeoncreate | \-\-addnodeonresume ]
-.  RB \%[ \-n | \-\-notable | \-\-table
-.  IR \%table | table_file ]
-.  RB [ \-\-readahead
-.  RB \%[ + ] \fIsectors | auto | none ]
-.  ad b
-..
-.CMD_CREATE
-.
-.HP
-.B dmsetup
-.de CMD_DEPS
-.  ad l
-.  BR deps
-.  RB [ \-o
-.  IR options ]
-.  RI [ device_name ...]
-.  ad b
-..
-.CMD_DEPS
-.
-.HP
-.B dmsetup
-.de CMD_HELP
-.  BR help
-.  RB [ \-c | \-C | \-\-columns ]
-..
-.CMD_HELP
-.
-.HP
-.B dmsetup
-.de CMD_INFO
-.  BR info
-.  RI [ device_name ...]
-..
-.CMD_INFO
-.
-.HP
-.B dmsetup
-.de CMD_INFOLONG
-.  ad l
-.  BR info
-.  BR \-c | \-C | \-\-columns
-.  RB [ \-\-count
-.  IR count ]
-.  RB [ \-\-interval
-.  IR seconds ]
-.  RB \%[ \-\-nameprefixes ]
-.  RB \%[ \-\-noheadings ]
-.  RB [ \-o
-.  IR fields ]
-.  RB [ \-O | \-\-sort
-.  IR sort_fields ]
-.  RB [ \-\-separator
-.  IR separator ]
-.  RI [ device_name ]
-.  ad b
-..
-.CMD_INFOLONG
-.
-.HP
-.B dmsetup
-.de CMD_LOAD
-.  ad l
-.  BR load
-.  IR device_name
-.  RB [ \-\-table
-.  IR table | table_file ]
-.  ad b
-..
-.CMD_LOAD
-.
-.HP
-.B dmsetup
-.de CMD_LS
-.  ad l
-.  BR ls
-.  RB [ \-\-target
-.  IR target_type ]
-.  RB [ \-\-exec
-.  IR command ]
-.  RB [ \-\-tree ]
-.  RB [ \-o
-.  IR options ]
-.  ad b
-..
-.CMD_LS
-.
-.HP
-.B dmsetup
-.de CMD_MANGLE
-.  BR mangle
-.  RI [ device_name ...]
-..
-.CMD_MANGLE
-.
-.HP
-.B dmsetup
-.de CMD_MESSAGE
-.  BR message
-.  IR device_name
-.  IR sector
-.  IR message
-..
-.CMD_MESSAGE
-.
-.HP
-.B dmsetup
-.de CMD_MKNODES
-.  BR mknodes
-.  RI [ device_name ...]
-..
-.CMD_MKNODES
-.
-.HP
-.B dmsetup
-.de CMD_RELOAD
-.  ad l
-.  BR reload
-.  IR device_name
-.  RB [ \-\-table
-.  IR table | table_file ]
-.  ad b
-..
-.CMD_RELOAD
-.
-.HP
-.B dmsetup
-.de CMD_REMOVE
-.  ad l
-.  BR remove
-.  RB [ \-f | \-\-force ]
-.  RB [ \-\-retry ]
-.  RB [ \-\-deferred ]
-.  IR device_name ...
-.  ad b
-..
-.CMD_REMOVE
-.
-.HP
-.B dmsetup
-.de CMD_REMOVE_ALL
-.  BR remove_all
-.  RB [ \-f | \-\-force ]
-.  RB [ \-\-deferred ]
-..
-.CMD_REMOVE_ALL
-.
-.HP
-.B dmsetup
-.de CMD_RENAME
-.  BR rename
-.  IR device_name
-.  IR new_name
-..
-.CMD_RENAME
-.
-.HP
-.B dmsetup
-.de CMD_RENAME_UUID
-.  BR rename
-.  IR device_name
-.  BR \-\-setuuid
-.  IR uuid
-..
-.CMD_RENAME_UUID
-.
-.HP
-.B dmsetup
-.de CMD_RESUME
-.  ad l
-.  BR resume
-.  IR device_name ...
-.  RB [ \-\-addnodeoncreate | \-\-addnodeonresume ]
-.  RB [ \-\-noflush ]
-.  RB [ \-\-nolockfs ]
-.  RB \%[ \-\-readahead
-.  RB \%[ + ] \fIsectors | auto | none ]
-.  ad b
-..
-.CMD_RESUME
-.
-.HP
-.B dmsetup
-.de CMD_SETGEOMETRY
-.  ad l
-.  BR setgeometry
-.  IR device_name
-.  IR cyl
-.  IR head
-.  IR sect
-.  IR start
-.  ad b
-..
-.CMD_SETGEOMETRY
-.
-.HP
-.B dmsetup
-.de CMD_SPLITNAME
-.  BR splitname
-.  IR device_name
-.  RI [ subsystem ]
-..
-.CMD_SPLITNAME
-.
-.HP
-.B dmsetup
-.de CMD_STATS
-.  BR stats
-.  IR command
-.  RI [ options ]
-..
-.CMD_STATS
-.
-.HP
-.B dmsetup
-.de CMD_STATUS
-.  ad l
-.  BR status
-.  RB [ \-\-target
-.  IR target_type ]
-.  RB [ \-\-noflush ]
-.  RI [ device_name ...]
-.  ad b
-..
-.CMD_STATUS
-.
-.HP
-.B dmsetup
-.de CMD_SUSPEND
-.  ad l
-.  BR suspend
-.  RB [ \-\-nolockfs ]
-.  RB [ \-\-noflush ]
-.  IR device_name ...
-.  ad b
-..
-.CMD_SUSPEND
-.
-.HP
-.B dmsetup
-.de CMD_TABLE
-.  ad l
-.  BR table
-.  RB [ \-\-target
-.  IR target_type ]
-.  RB [ \-\-showkeys ]
-.  RI [ device_name ...]
-.  ad b
-..
-.CMD_TABLE
-.
-.HP
-.B dmsetup
-.de CMD_TARGETS
-.  BR targets
-..
-.CMD_TARGETS
-.
-.HP
-.B dmsetup
-.de CMD_UDEVCOMPLETE
-.  BR udevcomplete
-.  IR cookie
-..
-.CMD_UDEVCOMPLETE
-.
-.HP
-.B dmsetup
-.de CMD_UDEVCOMPLETE_ALL
-.  BR udevcomplete_all
-.  RI [ age_in_minutes ]
-..
-.CMD_UDEVCOMPLETE_ALL
-.
-.HP
-.B dmsetup
-.de CMD_UDEVCOOKIES
-.  BR udevcookie
-..
-.CMD_UDEVCOOKIES
-.
-.HP
-.B dmsetup
-.de CMD_UDEVCREATECOOKIE
-.  BR udevcreatecookie
-..
-.CMD_UDEVCREATECOOKIE
-.
-.HP
-.B dmsetup
-.de CMD_UDEVFLAGS
-.  BR udevflags
-.  IR cookie
-..
-.CMD_UDEVFLAGS
-.
-.HP
-.B dmsetup
-.de CMD_UDEVRELEASECOOKIE
-.  BR udevreleasecookie
-.  RI [ cookie ]
-..
-.CMD_UDEVRELEASECOOKIE
-.
-.HP
-.B dmsetup
-.de CMD_VERSION
-.  BR version
-..
-.CMD_VERSION
-.
-.HP
-.B dmsetup
-.de CMD_WAIT
-.  ad l
-.  BR wait
-.  RB [ \-\-noflush ]
-.  IR device_name
-.  RI [ event_nr ]
-.  ad b
-..
-.CMD_WAIT
-.
-.HP
-.B dmsetup
-.de CMD_WIPE_TABLE
-.  ad l
-.  BR wipe_table
-.  IR device_name ...
-.  RB [ \-f | \-\-force ]
-.  RB [ \-\-noflush ]
-.  RB [ \-\-nolockfs ]
-.  ad b
-..
-.CMD_WIPE_TABLE
-.PD
-.P
-.HP
-.PD 0
-.B devmap_name \fImajor minor
-.HP
-.B devmap_name \fImajor:minor
-.PD
-.ad b
-.
-.SH DESCRIPTION
-.
-dmsetup manages logical devices that use the device-mapper driver.
-Devices are created by loading a table that specifies a target for
-each sector (512 bytes) in the logical device.
-
-The first argument to dmsetup is a command.
-The second argument is the logical device name or uuid.
-
-Invoking the dmsetup tool as \fBdevmap_name\fP
-(which is not normally distributed and is supported
-only for historical reasons) is equivalent to
-.BI \%dmsetup\ info\ \-c\ \-\-noheadings\ \-j \ major\  \-m \ minor \c
-\fR.
-.\" dot above here fixes -Thtml rendering for next HP option
-.
-.SH OPTIONS
-.
-.HP
-.BR \-\-addnodeoncreate
-.br
-Ensure \fI/dev/mapper\fP node exists after \fBdmsetup create\fP.
-.
-.HP
-.BR \-\-addnodeonresume
-.br
-Ensure \fI/dev/mapper\fP node exists after \fBdmsetup resume\fP (default with udev).
-.
-.HP
-.BR \-\-checks
-.br
-Perform additional checks on the operations requested and report
-potential problems.  Useful when debugging scripts.
-In some cases these checks may slow down operations noticeably.
-.
-.HP
-.BR \-c | \-C | \-\-columns
-.br
-Display output in columns rather than as Field: Value lines.
-.
-.HP
-.BR \-\-count
-.IR count
-.br
-Specify the number of times to repeat a report. Set this to zero
-continue until interrupted.  The default interval is one second.
-.
-.HP
-.BR \-f | \-\-force
-.br
-Try harder to complete operation.
-.
-.HP
-.BR \-h | \-\-help
-.br
-Outputs a summary of the commands available, optionally including
-the list of report fields (synonym with \fBhelp\fP command).
-.
-.HP
-.BR \-\-inactive
-.br
-When returning any table information from the kernel report on the
-inactive table instead of the live table.
-Requires kernel driver version 4.16.0 or above.
-.
-.HP
-.BR \-\-interval
-.IR seconds
-.br
-Specify the interval in seconds between successive iterations for
-repeating reports. If \fB\-\-interval\fP is specified but \fB\-\-count\fP
-is not, reports will continue to repeat until interrupted.
-The default interval is one second.
-.
-.HP
-.BR \-\-manglename
-.BR auto | hex | none
-.br
-Mangle any character not on a whitelist using mangling_mode when
-processing device-mapper device names and UUIDs. The names and UUIDs
-are mangled on input and unmangled on output where the mangling mode
-is one of:
-\fBauto\fP (only do the mangling if not mangled yet, do nothing
-if already mangled, error on mixed),
-\fBhex\fP (always do the mangling) and
-\fBnone\fP (no mangling).
-Default mode is \fB#DEFAULT_MANGLING#\fP.
-Character whitelist: 0-9, A-Z, a-z, #+-.:=@_. This whitelist is
-also supported by udev. Any character not on a whitelist is replaced
-with its hex value (two digits) prefixed by \\x.
-Mangling mode could be also set through
-\fBDM_DEFAULT_NAME_MANGLING_MODE\fP
-environment variable.
-.
-.HP
-.BR \-j | \-\-major
-.IR major
-.br
-Specify the major number.
-.
-.HP
-.BR \-m | \-\-minor
-.IR minor
-.br
-Specify the minor number.
-.
-.HP
-.BR \-n | \-\-notable
-.br
-When creating a device, don't load any table.
-.
-.HP
-.BR \-\-nameprefixes
-.br
-Add a "DM_" prefix plus the field name to the output.  Useful with
-\fB\-\-noheadings\fP to produce a list of
-field=value pairs that can be used to set environment variables
-(for example, in
-.BR udev (7)
-rules).
-.
-.HP
-.BR \-\-noheadings
-Suppress the headings line when using columnar output.
-.
-.HP
-.BR \-\-noflush
-Do not flush outstading I/O when suspending a device, or do not
-commit thin-pool metadata when obtaining thin-pool status.
-.
-.HP
-.BR \-\-nolockfs
-.br
-Do not attempt to synchronize filesystem eg, when suspending a device.
-.
-.HP
-.BR \-\-noopencount
-.br
-Tell the kernel not to supply the open reference count for the device.
-.
-.HP
-.BR \-\-noudevrules
-.br
-Do not allow udev to manage nodes for devices in device-mapper directory.
-.
-.HP
-.BR \-\-noudevsync
-.br
-Do not synchronise with udev when creating, renaming or removing devices.
-.
-.HP
-.BR \-o | \-\-options
-.IR options
-.br
-Specify which fields to display.
-.
-.HP
-.BR \-\-readahead
-.RB [ + ] \fIsectors | auto | none
-.br
-Specify read ahead size in units of sectors.
-The default value is \fBauto\fP which allows the kernel to choose
-a suitable value automatically.  The \fB+\fP prefix lets you
-specify a minimum value which will not be used if it is
-smaller than the value chosen by the kernel.
-The value \fBnone\fP is equivalent to specifying zero.
-.
-.HP
-.BR \-r | \-\-readonly
-.br
-Set the table being loaded read-only.
-.
-.HP
-.BR \-S | \-\-select
-.IR selection
-.br
-Display only rows that match \fIselection\fP criteria. All rows are displayed
-with the additional "selected" column (\fB-o selected\fP) showing 1 if the row
-matches the \fIselection\fP and 0 otherwise. The selection criteria are defined
-by specifying column names and their valid values while making use of
-supported comparison operators. As a quick help and to see full list of
-column names that can be used in selection and the set of supported
-selection operators, check the output of \fBdmsetup\ info\ -c\ -S\ help\fP
-command.
-.
-.HP
-.BR \-\-table
-.IR table
-.br
-Specify a one-line table directly on the command line.
-See below for more information on the table format.
-.
-.HP
-.BR \-\-udevcookie
-.IR cookie
-.br
-Use cookie for udev synchronisation.
-Note: Same cookie should be used for same type of operations i.e. creation of
-multiple different devices. It's not adviced to combine different
-operations on the single device.
-.
-.HP
-.BR \-u | \-\-uuid
-.br
-Specify the \fIuuid\fP.
-.
-.HP
-.BR \-y | \-\-yes
-.br
-Answer yes to all prompts automatically.
-.
-.HP
-.BR \-v | \-\-verbose
-.RB [ \-v | \-\-verbose ]
-.br
-Produce additional output.
-.
-.HP
-.BR \-\-verifyudev
-.br
-If udev synchronisation is enabled, verify that udev operations get performed
-correctly and try to fix up the device nodes afterwards if not.
-.
-.HP
-.BR \-\-version
-.br
-Display the library and kernel driver version.
-.br
-.
-.SH COMMANDS
-.
-.HP
-.CMD_CLEAR
-.br
-Destroys the table in the inactive table slot for device_name.
-.
-.HP
-.CMD_CREATE
-.br
-Creates a device with the given name.
-If \fItable\fP or \fItable_file\fP is supplied, the table is loaded and made live.
-Otherwise a table is read from standard input unless \fB\-\-notable\fP is used.
-The optional \fIuuid\fP can be used in place of
-device_name in subsequent dmsetup commands.
-If successful the device will appear in table and for live
-device the node \fI/dev/mapper/device_name\fP is created.
-See below for more information on the table format.
-.
-.HP
-.CMD_DEPS
-.br
-Outputs a list of devices referenced by the live table for the specified
-device. Device names on output can be customised by following \fIoptions\fP:
-\fBdevno\fP (major and minor pair, used by default),
-\fBblkdevname\fP (block device name),
-\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
-.
-.HP
-.CMD_HELP
-.br
-Outputs a summary of the commands available, optionally including
-the list of report fields.
-.
-.HP
-.CMD_INFO
-.br
-Outputs some brief information about the device in the form:
-.RS
-.RS
- State: SUSPENDED|ACTIVE, READ-ONLY
- Tables present: LIVE and/or INACTIVE
- Open reference count
- Last event sequence number (used by \fBwait\fP)
- Major and minor device number
- Number of targets in the live table
- UUID
-.RE
-.RE
-.HP
-.CMD_INFOLONG
-.br
-Output you can customise.
-Fields are comma-separated and chosen from the following list:
-.BR name ,
-.BR major ,
-.BR minor ,
-.BR attr ,
-.BR open ,
-.BR segments ,
-.BR events ,
-.BR uuid .
-Attributes are:
-.RI ( L )ive,
-.RI ( I )nactive,
-.RI ( s )uspended,
-.RI ( r )ead-only,
-.RI read-( w )rite.
-Precede the list with '\fB+\fP' to append
-to the default selection of columns instead of replacing it.
-Precede any sort field with '\fB-\fP' for a reverse sort on that column.
-.
-.HP
-.CMD_LS
-.br
-List device names.  Optionally only list devices that have at least
-one target of the specified type.  Optionally execute a command for
-each device.  The device name is appended to the supplied command.
-Device names on output can be customised by following options:
-\fBdevno\fP (major and minor pair, used by default),
-\fBblkdevname\fP (block device name),
-\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
-\fB\-\-tree\fP displays dependencies between devices as a tree.
-It accepts a comma-separate list of \fIoptions\fP.
-Some specify the information displayed against each node:
-.BR device / nodevice ;
-.BR blkdevname ;
-.BR active ", " open ", " rw ", " uuid .
-Others specify how the tree is displayed:
-.BR ascii ", " utf ", " vt100 ;
-.BR compact ", " inverted ", " notrunc .
-.
-.HP
-.BR load | \c
-.CMD_RELOAD
-.br
-Loads \fItable\fP or \fItable_file\fP into the inactive table slot for device_name.
-If neither is supplied, reads a table from standard input.
-.
-.HP
-.CMD_MANGLE
-.br
-Ensure existing device-mapper \fIdevice_name\fP and UUID is in the correct mangled
-form containing only whitelisted characters (supported by udev) and do
-a rename if necessary. Any character not on the whitelist will be mangled
-based on the \fB\-\-manglename\fP setting. Automatic rename works only for device
-names and not for device UUIDs because the kernel does not allow changing
-the UUID of active devices. Any incorrect UUIDs are reported only and they
-must be manually corrected by deactivating the device first and then
-reactivating it with proper mangling mode used (see also \fB\-\-manglename\fP).
-.
-.HP
-.CMD_MESSAGE
-.br
-Send message to target. If sector not needed use 0.
-.
-.HP
-.CMD_MKNODES
-.br
-Ensure that the node in \fI/dev/mapper\fP for \fIdevice_name\fP is correct.
-If no device_name is supplied, ensure that all nodes in \fI/dev/mapper\fP
-correspond to mapped devices currently loaded by the device-mapper kernel
-driver, adding, changing or removing nodes as necessary.
-.
-.HP
-.CMD_REMOVE
-.br
-Removes a device.  It will no longer be visible to dmsetup.  Open devices
-cannot be removed, but adding \fB\-\-force\fP will replace the table with one
-that fails all I/O.  \fB\-\-deferred\fP will enable deferred removal of open
-devices - the device will be removed when the last user closes it. The deferred
-removal feature is supported since version 4.27.0 of the device-mapper
-driver available in upstream kernel version 3.13.  (Use \fBdmsetup version\fP
-to check this.)  If an attempt to remove a device fails, perhaps because a process run
-from a quick udev rule temporarily opened the device, the \fB\-\-retry\fP
-option will cause the operation to be retried for a few seconds before failing.
-Do NOT combine
-\fB\-\-force\fP and \fB\-\-udevcookie\fP, as udev may start to process udev
-rules in the middle of error target replacement and result in nondeterministic
-result.
-.
-.HP
-.CMD_REMOVE_ALL
-.br
-Attempts to remove all device definitions i.e. reset the driver.  This also runs
-\fBmknodes\fP afterwards.  Use with care!  Open devices cannot be removed, but
-adding \fB\-\-force\fP will replace the table with one that fails all I/O.
-\fB\-\-deferred\fP will enable deferred removal of open devices - the device
-will be removed when the last user closes it.  The deferred removal feature is
-supported since version 4.27.0 of the device-mapper driver available in
-upstream kernel version 3.13.
-.
-.HP
-.CMD_RENAME
-.br
-Renames a device.
-.
-.HP
-.CMD_RENAME_UUID
-.br
-Sets the uuid of a device that was created without a uuid.
-After a uuid has been set it cannot be changed.
-.
-.HP
-.CMD_RESUME
-.br
-Un-suspends a device.
-If an inactive table has been loaded, it becomes live.
-Postponed I/O then gets re-queued for processing.
-.
-.HP
-.CMD_SETGEOMETRY
-.br
-Sets the device geometry to C/H/S.
-.
-.HP
-.CMD_SPLITNAME
-.br
-Splits given \fIdevice name\fP into \fIsubsystem\fP constituents.
-The default subsystem is LVM.
-LVM currently generates device names by concatenating the names of the Volume
-Group, Logical Volume and any internal Layer with a hyphen as separator.
-Any hyphens within the names are doubled to escape them.
-The precise encoding might change without notice in any future
-release, so we recommend you always decode using the current version of
-this command.
-.HP
-.CMD_STATS
-.br
-Manages IO statistics regions for devices.
-See
-.BR dmstats (8)
-for more details.
-.HP
-.CMD_STATUS
-.br
-Outputs status information for each of the device's targets.
-With \fB\-\-target\fP, only information relating to the specified target type
-any is displayed.  With \fB\-\-noflush\fP, the thin target (from version 1.3.0)
-doesn't commit any outstanding changes to disk before reporting its statistics.
-
-.HP
-.CMD_SUSPEND
-.br
-Suspends a device.  Any I/O that has already been mapped by the device
-but has not yet completed will be flushed.  Any further I/O to that
-device will be postponed for as long as the device is suspended.
-If there's a filesystem on the device which supports the operation,
-an attempt will be made to sync it first unless \fB\-\-nolockfs\fP is specified.
-Some targets such as recent (October 2006) versions of multipath may support
-the \fB\-\-noflush\fP option.  This lets outstanding I/O that has not yet reached the
-device to remain unflushed.
-.
-.HP
-.CMD_TABLE
-.br
-Outputs the current table for the device in a format that can be fed
-back in using the create or load commands.
-With \fB\-\-target\fP, only information relating to the specified target type
-is displayed.
-Real encryption keys are suppressed in the table output for the crypt
-target unless the \fB\-\-showkeys\fP parameter is supplied. Kernel key
-references prefixed with \fB:\fP are not affected by the parameter and get
-displayed always.
-.
-.HP
-.CMD_TARGETS
-.br
-Displays the names and versions of the currently-loaded targets.
-.
-.HP
-.CMD_UDEVCOMPLETE
-.br
-Wake any processes that are waiting for udev to complete processing the specified cookie.
-.
-.HP
-.CMD_UDEVCOMPLETE_ALL
-.br
-Remove all cookies older than the specified number of minutes.
-Any process waiting on a cookie will be resumed immediately.
-.
-.HP
-.CMD_UDEVCOOKIES
-.br
-List all existing cookies. Cookies are system-wide semaphores with keys
-prefixed by two predefined bytes (0x0D4D).
-.
-.HP
-.CMD_UDEVCREATECOOKIE
-.br
-Creates a new cookie to synchronize actions with udev processing.
-The output is a cookie value. Normally we don't need to create cookies since
-dmsetup creates and destroys them for each action automatically. However, we can
-generate one explicitly to group several actions together and use only one
-cookie instead. We can define a cookie to use for each relevant command by using
-\fB\-\-udevcookie\fP option. Alternatively, we can export this value into the environment
-of the dmsetup process as \fBDM_UDEV_COOKIE\fP variable and it will be used automatically
-with all subsequent commands until it is unset.
-Invoking this command will create system-wide semaphore that needs to be cleaned
-up explicitly by calling udevreleasecookie command.
-.
-.HP
-.CMD_UDEVFLAGS
-.br
-Parses given \fIcookie\fP value and extracts any udev control flags encoded.
-The output is in environment key format that is suitable for use in udev
-rules. If the flag has its symbolic name assigned then the output is
-DM_UDEV_FLAG_<flag_name> = '1', DM_UDEV_FLAG<flag_position> = '1' otherwise.
-Subsystem udev flags don't have symbolic names assigned and these ones are
-always reported as DM_SUBSYSTEM_UDEV_FLAG<flag_position> = '1'. There are
-16 udev flags altogether.
-.
-.HP
-.CMD_UDEVRELEASECOOKIE
-.br
-Waits for all pending udev processing bound to given cookie value and clean up
-the cookie with underlying semaphore. If the cookie is not given directly,
-the command will try to use a value defined by \fBDM_UDEV_COOKIE\fP environment variable.
-.
-.HP
-.CMD_VERSION
-.br
-Outputs version information.
-.
-.HP
-.CMD_WAIT
-.br
-Sleeps until the event counter for device_name exceeds event_nr.
-Use \fB\-v\fP to see the event number returned.
-To wait until the next event is triggered, use \fBinfo\fP to find
-the last event number.
-With \fB\-\-noflush\fP, the thin target (from version 1.3.0) doesn't commit
-any outstanding changes to disk before reporting its statistics.
-.
-.HP
-.CMD_WIPE_TABLE
-.br
-Wait for any I/O in-flight through the device to complete, then
-replace the table with a new table that fails any new I/O
-sent to the device.  If successful, this should release any devices
-held open by the device's table(s).
-.
-.SH TABLE FORMAT
-.
-Each line of the table specifies a single target and is of the form:
-.sp
-.I logical_start_sector num_sectors
-.B target_type
-.I target_args
-.sp
-Simple target types and target args include:
-.
-.TP
-.B linear \fIdestination_device start_sector
-The traditional linear mapping.
-.TP
-.B striped \fInum_stripes chunk_size \fR[\fIdestination start_sector\fR]...
-Creates a striped area.
-.br
-e.g. striped 2 32 /dev/hda1 0 /dev/hdb1 0
-will map the first chunk (16k) as follows:
-.RS
-.RS
- LV chunk 1 -> hda1, chunk 1
- LV chunk 2 -> hdb1, chunk 1
- LV chunk 3 -> hda1, chunk 2
- LV chunk 4 -> hdb1, chunk 2
- etc.
-.RE
-.RE
-.TP
-.B error
-Errors any I/O that goes to this area.  Useful for testing or
-for creating devices with holes in them.
-.TP
-.B zero
-Returns blocks of zeroes on reads.  Any data written is discarded silently.
-This is a block-device equivalent of the \fI/dev/zero\fP
-character-device data sink described in \fBnull\fP(4).
-.P
-More complex targets include:
-.TP
-.B cache
-Improves performance of a block device (eg, a spindle) by dynamically
-migrating some of its data to a faster smaller device (eg, an SSD).
-.TP
-.B crypt
-Transparent encryption of block devices using the kernel crypto API.
-.TP
-.B delay
-Delays reads and/or writes to different devices.  Useful for testing.
-.TP
-.B flakey
-Creates a similar mapping to the linear target but
-exhibits unreliable behaviour periodically.
-Useful for simulating failing devices when testing.
-.TP
-.B mirror
-Mirrors data across two or more devices.
-.TP
-.B multipath
-Mediates access through multiple paths to the same device.
-.TP
-.B raid
-Offers an interface to the kernel's software raid driver, md.
-.TP
-.B snapshot
-Supports snapshots of devices.
-.TP
-.BR thin ", " thin-pool
-Supports thin provisioning of devices and also provides a better snapshot support.
-.P
-To find out more about the various targets and their table formats and status
-lines, please read the files in the Documentation/device-mapper directory in
-the kernel source tree.
-(Your distribution might include a copy of this information in the
-documentation directory for the device-mapper package.)
-.
-.SH EXAMPLES
-.
-# A table to join two disks together
-.br
-0 1028160 linear /dev/hda 0
-.br
-1028160 3903762 linear /dev/hdb 0
-.br
-# A table to stripe across the two disks,
-.br
-# and add the spare space from
-.br
-# hdb to the back of the volume
-.br
-0 2056320 striped 2 32 /dev/hda 0 /dev/hdb 0
-.br
-2056320 2875602 linear /dev/hdb 1028160
-.
-.SH ENVIRONMENT VARIABLES
-.
-.TP
-.B DM_DEV_DIR
-The device directory name.
-Defaults to "\fI/dev\fP" and must be an absolute path.
-.TP
-.B DM_UDEV_COOKIE
-A cookie to use for all relevant commands to synchronize with udev processing.
-It is an alternative to using \fB\-\-udevcookie\fP option.
-.TP
-.B DM_DEFAULT_NAME_MANGLING_MODE
-A default mangling mode. Defaults to "\fB#DEFAULT_MANGLING#\fP"
-and it is an alternative to using \fB\-\-manglename\fP option.
-.
-.SH AUTHORS
-.
-Original version: Joe Thornber <thornber at redhat.com>
-.
-.SH SEE ALSO
-.
-.BR dmstats (8),
-.BR udev (7),
-.BR udevadm (8)
-.P
-LVM2 resource page: https://www.sourceware.org/lvm2/
-.br
-Device-mapper resource page: http://sources.redhat.com/dm/
diff --git a/man/dmsetup.8_main b/man/dmsetup.8_main
new file mode 100644
index 0000000..4261fc4
--- /dev/null
+++ b/man/dmsetup.8_main
@@ -0,0 +1,1026 @@
+.TH DMSETUP 8 "Apr 06 2006" "Linux" "MAINTENANCE COMMANDS"
+.
+.SH NAME
+.
+dmsetup \(em low level logical volume management
+.
+.SH SYNOPSIS
+.
+.\".nh
+.ad l
+.PD 0
+.HP 9
+.B dmsetup
+.de CMD_CLEAR
+.  BR clear
+.  IR device_name
+..
+.CMD_CLEAR
+.
+.HP
+.B dmsetup
+.de CMD_CREATE
+.  ad l
+.  BR create
+.  IR device_name
+.  RB [ -u | \-\-uuid
+.  IR uuid ]
+.  RB \%[ \-\-addnodeoncreate | \-\-addnodeonresume ]
+.  RB \%[ \-n | \-\-notable | \-\-table
+.  IR \%table | table_file ]
+.  RB [ \-\-readahead
+.  RB \%[ + ] \fIsectors | auto | none ]
+.  ad b
+..
+.CMD_CREATE
+.
+.HP
+.B dmsetup
+.de CMD_DEPS
+.  ad l
+.  BR deps
+.  RB [ \-o
+.  IR options ]
+.  RI [ device_name ...]
+.  ad b
+..
+.CMD_DEPS
+.
+.HP
+.B dmsetup
+.de CMD_HELP
+.  BR help
+.  RB [ \-c | \-C | \-\-columns ]
+..
+.CMD_HELP
+.
+.HP
+.B dmsetup
+.de CMD_INFO
+.  BR info
+.  RI [ device_name ...]
+..
+.CMD_INFO
+.
+.HP
+.B dmsetup
+.de CMD_INFOLONG
+.  ad l
+.  BR info
+.  BR \-c | \-C | \-\-columns
+.  RB [ \-\-count
+.  IR count ]
+.  RB [ \-\-interval
+.  IR seconds ]
+.  RB \%[ \-\-nameprefixes ]
+.  RB \%[ \-\-noheadings ]
+.  RB [ \-o
+.  IR fields ]
+.  RB [ \-O | \-\-sort
+.  IR sort_fields ]
+.  RB [ \-\-separator
+.  IR separator ]
+.  RI [ device_name ]
+.  ad b
+..
+.CMD_INFOLONG
+.
+.HP
+.B dmsetup
+.de CMD_LOAD
+.  ad l
+.  BR load
+.  IR device_name
+.  RB [ \-\-table
+.  IR table | table_file ]
+.  ad b
+..
+.CMD_LOAD
+.
+.HP
+.B dmsetup
+.de CMD_LS
+.  ad l
+.  BR ls
+.  RB [ \-\-target
+.  IR target_type ]
+.  RB [ \-\-exec
+.  IR command ]
+.  RB [ \-\-tree ]
+.  RB [ \-o
+.  IR options ]
+.  ad b
+..
+.CMD_LS
+.
+.HP
+.B dmsetup
+.de CMD_MANGLE
+.  BR mangle
+.  RI [ device_name ...]
+..
+.CMD_MANGLE
+.
+.HP
+.B dmsetup
+.de CMD_MESSAGE
+.  BR message
+.  IR device_name
+.  IR sector
+.  IR message
+..
+.CMD_MESSAGE
+.
+.HP
+.B dmsetup
+.de CMD_MKNODES
+.  BR mknodes
+.  RI [ device_name ...]
+..
+.CMD_MKNODES
+.
+.HP
+.B dmsetup
+.de CMD_RELOAD
+.  ad l
+.  BR reload
+.  IR device_name
+.  RB [ \-\-table
+.  IR table | table_file ]
+.  ad b
+..
+.CMD_RELOAD
+.
+.HP
+.B dmsetup
+.de CMD_REMOVE
+.  ad l
+.  BR remove
+.  RB [ \-f | \-\-force ]
+.  RB [ \-\-retry ]
+.  RB [ \-\-deferred ]
+.  IR device_name ...
+.  ad b
+..
+.CMD_REMOVE
+.
+.HP
+.B dmsetup
+.de CMD_REMOVE_ALL
+.  BR remove_all
+.  RB [ \-f | \-\-force ]
+.  RB [ \-\-deferred ]
+..
+.CMD_REMOVE_ALL
+.
+.HP
+.B dmsetup
+.de CMD_RENAME
+.  BR rename
+.  IR device_name
+.  IR new_name
+..
+.CMD_RENAME
+.
+.HP
+.B dmsetup
+.de CMD_RENAME_UUID
+.  BR rename
+.  IR device_name
+.  BR \-\-setuuid
+.  IR uuid
+..
+.CMD_RENAME_UUID
+.
+.HP
+.B dmsetup
+.de CMD_RESUME
+.  ad l
+.  BR resume
+.  IR device_name ...
+.  RB [ \-\-addnodeoncreate | \-\-addnodeonresume ]
+.  RB [ \-\-noflush ]
+.  RB [ \-\-nolockfs ]
+.  RB \%[ \-\-readahead
+.  RB \%[ + ] \fIsectors | auto | none ]
+.  ad b
+..
+.CMD_RESUME
+.
+.HP
+.B dmsetup
+.de CMD_SETGEOMETRY
+.  ad l
+.  BR setgeometry
+.  IR device_name
+.  IR cyl
+.  IR head
+.  IR sect
+.  IR start
+.  ad b
+..
+.CMD_SETGEOMETRY
+.
+.HP
+.B dmsetup
+.de CMD_SPLITNAME
+.  BR splitname
+.  IR device_name
+.  RI [ subsystem ]
+..
+.CMD_SPLITNAME
+.
+.HP
+.B dmsetup
+.de CMD_STATS
+.  BR stats
+.  IR command
+.  RI [ options ]
+..
+.CMD_STATS
+.
+.HP
+.B dmsetup
+.de CMD_STATUS
+.  ad l
+.  BR status
+.  RB [ \-\-target
+.  IR target_type ]
+.  RB [ \-\-noflush ]
+.  RI [ device_name ...]
+.  ad b
+..
+.CMD_STATUS
+.
+.HP
+.B dmsetup
+.de CMD_SUSPEND
+.  ad l
+.  BR suspend
+.  RB [ \-\-nolockfs ]
+.  RB [ \-\-noflush ]
+.  IR device_name ...
+.  ad b
+..
+.CMD_SUSPEND
+.
+.HP
+.B dmsetup
+.de CMD_TABLE
+.  ad l
+.  BR table
+.  RB [ \-\-target
+.  IR target_type ]
+.  RB [ \-\-showkeys ]
+.  RI [ device_name ...]
+.  ad b
+..
+.CMD_TABLE
+.
+.HP
+.B dmsetup
+.de CMD_TARGETS
+.  BR targets
+..
+.CMD_TARGETS
+.
+.HP
+.B dmsetup
+.de CMD_UDEVCOMPLETE
+.  BR udevcomplete
+.  IR cookie
+..
+.CMD_UDEVCOMPLETE
+.
+.HP
+.B dmsetup
+.de CMD_UDEVCOMPLETE_ALL
+.  BR udevcomplete_all
+.  RI [ age_in_minutes ]
+..
+.CMD_UDEVCOMPLETE_ALL
+.
+.HP
+.B dmsetup
+.de CMD_UDEVCOOKIES
+.  BR udevcookie
+..
+.CMD_UDEVCOOKIES
+.
+.HP
+.B dmsetup
+.de CMD_UDEVCREATECOOKIE
+.  BR udevcreatecookie
+..
+.CMD_UDEVCREATECOOKIE
+.
+.HP
+.B dmsetup
+.de CMD_UDEVFLAGS
+.  BR udevflags
+.  IR cookie
+..
+.CMD_UDEVFLAGS
+.
+.HP
+.B dmsetup
+.de CMD_UDEVRELEASECOOKIE
+.  BR udevreleasecookie
+.  RI [ cookie ]
+..
+.CMD_UDEVRELEASECOOKIE
+.
+.HP
+.B dmsetup
+.de CMD_VERSION
+.  BR version
+..
+.CMD_VERSION
+.
+.HP
+.B dmsetup
+.de CMD_WAIT
+.  ad l
+.  BR wait
+.  RB [ \-\-noflush ]
+.  IR device_name
+.  RI [ event_nr ]
+.  ad b
+..
+.CMD_WAIT
+.
+.HP
+.B dmsetup
+.de CMD_WIPE_TABLE
+.  ad l
+.  BR wipe_table
+.  IR device_name ...
+.  RB [ \-f | \-\-force ]
+.  RB [ \-\-noflush ]
+.  RB [ \-\-nolockfs ]
+.  ad b
+..
+.CMD_WIPE_TABLE
+.PD
+.P
+.HP
+.PD 0
+.B devmap_name \fImajor minor
+.HP
+.B devmap_name \fImajor:minor
+.PD
+.ad b
+.
+.SH DESCRIPTION
+.
+dmsetup manages logical devices that use the device-mapper driver.
+Devices are created by loading a table that specifies a target for
+each sector (512 bytes) in the logical device.
+
+The first argument to dmsetup is a command.
+The second argument is the logical device name or uuid.
+
+Invoking the dmsetup tool as \fBdevmap_name\fP
+(which is not normally distributed and is supported
+only for historical reasons) is equivalent to
+.BI \%dmsetup\ info\ \-c\ \-\-noheadings\ \-j \ major\  \-m \ minor \c
+\fR.
+.\" dot above here fixes -Thtml rendering for next HP option
+.
+.SH OPTIONS
+.
+.HP
+.BR \-\-addnodeoncreate
+.br
+Ensure \fI/dev/mapper\fP node exists after \fBdmsetup create\fP.
+.
+.HP
+.BR \-\-addnodeonresume
+.br
+Ensure \fI/dev/mapper\fP node exists after \fBdmsetup resume\fP (default with udev).
+.
+.HP
+.BR \-\-checks
+.br
+Perform additional checks on the operations requested and report
+potential problems.  Useful when debugging scripts.
+In some cases these checks may slow down operations noticeably.
+.
+.HP
+.BR \-c | \-C | \-\-columns
+.br
+Display output in columns rather than as Field: Value lines.
+.
+.HP
+.BR \-\-count
+.IR count
+.br
+Specify the number of times to repeat a report. Set this to zero
+continue until interrupted.  The default interval is one second.
+.
+.HP
+.BR \-f | \-\-force
+.br
+Try harder to complete operation.
+.
+.HP
+.BR \-h | \-\-help
+.br
+Outputs a summary of the commands available, optionally including
+the list of report fields (synonym with \fBhelp\fP command).
+.
+.HP
+.BR \-\-inactive
+.br
+When returning any table information from the kernel report on the
+inactive table instead of the live table.
+Requires kernel driver version 4.16.0 or above.
+.
+.HP
+.BR \-\-interval
+.IR seconds
+.br
+Specify the interval in seconds between successive iterations for
+repeating reports. If \fB\-\-interval\fP is specified but \fB\-\-count\fP
+is not, reports will continue to repeat until interrupted.
+The default interval is one second.
+.
+.HP
+.BR \-\-manglename
+.BR auto | hex | none
+.br
+Mangle any character not on a whitelist using mangling_mode when
+processing device-mapper device names and UUIDs. The names and UUIDs
+are mangled on input and unmangled on output where the mangling mode
+is one of:
+\fBauto\fP (only do the mangling if not mangled yet, do nothing
+if already mangled, error on mixed),
+\fBhex\fP (always do the mangling) and
+\fBnone\fP (no mangling).
+Default mode is \fB#DEFAULT_MANGLING#\fP.
+Character whitelist: 0-9, A-Z, a-z, #+-.:=@_. This whitelist is
+also supported by udev. Any character not on a whitelist is replaced
+with its hex value (two digits) prefixed by \\x.
+Mangling mode could be also set through
+\fBDM_DEFAULT_NAME_MANGLING_MODE\fP
+environment variable.
+.
+.HP
+.BR \-j | \-\-major
+.IR major
+.br
+Specify the major number.
+.
+.HP
+.BR \-m | \-\-minor
+.IR minor
+.br
+Specify the minor number.
+.
+.HP
+.BR \-n | \-\-notable
+.br
+When creating a device, don't load any table.
+.
+.HP
+.BR \-\-nameprefixes
+.br
+Add a "DM_" prefix plus the field name to the output.  Useful with
+\fB\-\-noheadings\fP to produce a list of
+field=value pairs that can be used to set environment variables
+(for example, in
+.BR udev (7)
+rules).
+.
+.HP
+.BR \-\-noheadings
+Suppress the headings line when using columnar output.
+.
+.HP
+.BR \-\-noflush
+Do not flush outstading I/O when suspending a device, or do not
+commit thin-pool metadata when obtaining thin-pool status.
+.
+.HP
+.BR \-\-nolockfs
+.br
+Do not attempt to synchronize filesystem eg, when suspending a device.
+.
+.HP
+.BR \-\-noopencount
+.br
+Tell the kernel not to supply the open reference count for the device.
+.
+.HP
+.BR \-\-noudevrules
+.br
+Do not allow udev to manage nodes for devices in device-mapper directory.
+.
+.HP
+.BR \-\-noudevsync
+.br
+Do not synchronise with udev when creating, renaming or removing devices.
+.
+.HP
+.BR \-o | \-\-options
+.IR options
+.br
+Specify which fields to display.
+.
+.HP
+.BR \-\-readahead
+.RB [ + ] \fIsectors | auto | none
+.br
+Specify read ahead size in units of sectors.
+The default value is \fBauto\fP which allows the kernel to choose
+a suitable value automatically.  The \fB+\fP prefix lets you
+specify a minimum value which will not be used if it is
+smaller than the value chosen by the kernel.
+The value \fBnone\fP is equivalent to specifying zero.
+.
+.HP
+.BR \-r | \-\-readonly
+.br
+Set the table being loaded read-only.
+.
+.HP
+.BR \-S | \-\-select
+.IR selection
+.br
+Display only rows that match \fIselection\fP criteria. All rows are displayed
+with the additional "selected" column (\fB-o selected\fP) showing 1 if the row
+matches the \fIselection\fP and 0 otherwise. The selection criteria are defined
+by specifying column names and their valid values while making use of
+supported comparison operators. As a quick help and to see full list of
+column names that can be used in selection and the set of supported
+selection operators, check the output of \fBdmsetup\ info\ -c\ -S\ help\fP
+command.
+.
+.HP
+.BR \-\-table
+.IR table
+.br
+Specify a one-line table directly on the command line.
+See below for more information on the table format.
+.
+.HP
+.BR \-\-udevcookie
+.IR cookie
+.br
+Use cookie for udev synchronisation.
+Note: Same cookie should be used for same type of operations i.e. creation of
+multiple different devices. It's not adviced to combine different
+operations on the single device.
+.
+.HP
+.BR \-u | \-\-uuid
+.br
+Specify the \fIuuid\fP.
+.
+.HP
+.BR \-y | \-\-yes
+.br
+Answer yes to all prompts automatically.
+.
+.HP
+.BR \-v | \-\-verbose
+.RB [ \-v | \-\-verbose ]
+.br
+Produce additional output.
+.
+.HP
+.BR \-\-verifyudev
+.br
+If udev synchronisation is enabled, verify that udev operations get performed
+correctly and try to fix up the device nodes afterwards if not.
+.
+.HP
+.BR \-\-version
+.br
+Display the library and kernel driver version.
+.br
+.
+.SH COMMANDS
+.
+.HP
+.CMD_CLEAR
+.br
+Destroys the table in the inactive table slot for device_name.
+.
+.HP
+.CMD_CREATE
+.br
+Creates a device with the given name.
+If \fItable\fP or \fItable_file\fP is supplied, the table is loaded and made live.
+Otherwise a table is read from standard input unless \fB\-\-notable\fP is used.
+The optional \fIuuid\fP can be used in place of
+device_name in subsequent dmsetup commands.
+If successful the device will appear in table and for live
+device the node \fI/dev/mapper/device_name\fP is created.
+See below for more information on the table format.
+.
+.HP
+.CMD_DEPS
+.br
+Outputs a list of devices referenced by the live table for the specified
+device. Device names on output can be customised by following \fIoptions\fP:
+\fBdevno\fP (major and minor pair, used by default),
+\fBblkdevname\fP (block device name),
+\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
+.
+.HP
+.CMD_HELP
+.br
+Outputs a summary of the commands available, optionally including
+the list of report fields.
+.
+.HP
+.CMD_INFO
+.br
+Outputs some brief information about the device in the form:
+.RS
+.RS
+ State: SUSPENDED|ACTIVE, READ-ONLY
+ Tables present: LIVE and/or INACTIVE
+ Open reference count
+ Last event sequence number (used by \fBwait\fP)
+ Major and minor device number
+ Number of targets in the live table
+ UUID
+.RE
+.RE
+.HP
+.CMD_INFOLONG
+.br
+Output you can customise.
+Fields are comma-separated and chosen from the following list:
+.BR name ,
+.BR major ,
+.BR minor ,
+.BR attr ,
+.BR open ,
+.BR segments ,
+.BR events ,
+.BR uuid .
+Attributes are:
+.RI ( L )ive,
+.RI ( I )nactive,
+.RI ( s )uspended,
+.RI ( r )ead-only,
+.RI read-( w )rite.
+Precede the list with '\fB+\fP' to append
+to the default selection of columns instead of replacing it.
+Precede any sort field with '\fB-\fP' for a reverse sort on that column.
+.
+.HP
+.CMD_LS
+.br
+List device names.  Optionally only list devices that have at least
+one target of the specified type.  Optionally execute a command for
+each device.  The device name is appended to the supplied command.
+Device names on output can be customised by following options:
+\fBdevno\fP (major and minor pair, used by default),
+\fBblkdevname\fP (block device name),
+\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
+\fB\-\-tree\fP displays dependencies between devices as a tree.
+It accepts a comma-separate list of \fIoptions\fP.
+Some specify the information displayed against each node:
+.BR device / nodevice ;
+.BR blkdevname ;
+.BR active ", " open ", " rw ", " uuid .
+Others specify how the tree is displayed:
+.BR ascii ", " utf ", " vt100 ;
+.BR compact ", " inverted ", " notrunc .
+.
+.HP
+.BR load | \c
+.CMD_RELOAD
+.br
+Loads \fItable\fP or \fItable_file\fP into the inactive table slot for device_name.
+If neither is supplied, reads a table from standard input.
+.
+.HP
+.CMD_MANGLE
+.br
+Ensure existing device-mapper \fIdevice_name\fP and UUID is in the correct mangled
+form containing only whitelisted characters (supported by udev) and do
+a rename if necessary. Any character not on the whitelist will be mangled
+based on the \fB\-\-manglename\fP setting. Automatic rename works only for device
+names and not for device UUIDs because the kernel does not allow changing
+the UUID of active devices. Any incorrect UUIDs are reported only and they
+must be manually corrected by deactivating the device first and then
+reactivating it with proper mangling mode used (see also \fB\-\-manglename\fP).
+.
+.HP
+.CMD_MESSAGE
+.br
+Send message to target. If sector not needed use 0.
+.
+.HP
+.CMD_MKNODES
+.br
+Ensure that the node in \fI/dev/mapper\fP for \fIdevice_name\fP is correct.
+If no device_name is supplied, ensure that all nodes in \fI/dev/mapper\fP
+correspond to mapped devices currently loaded by the device-mapper kernel
+driver, adding, changing or removing nodes as necessary.
+.
+.HP
+.CMD_REMOVE
+.br
+Removes a device.  It will no longer be visible to dmsetup.  Open devices
+cannot be removed, but adding \fB\-\-force\fP will replace the table with one
+that fails all I/O.  \fB\-\-deferred\fP will enable deferred removal of open
+devices - the device will be removed when the last user closes it. The deferred
+removal feature is supported since version 4.27.0 of the device-mapper
+driver available in upstream kernel version 3.13.  (Use \fBdmsetup version\fP
+to check this.)  If an attempt to remove a device fails, perhaps because a process run
+from a quick udev rule temporarily opened the device, the \fB\-\-retry\fP
+option will cause the operation to be retried for a few seconds before failing.
+Do NOT combine
+\fB\-\-force\fP and \fB\-\-udevcookie\fP, as udev may start to process udev
+rules in the middle of error target replacement and result in nondeterministic
+result.
+.
+.HP
+.CMD_REMOVE_ALL
+.br
+Attempts to remove all device definitions i.e. reset the driver.  This also runs
+\fBmknodes\fP afterwards.  Use with care!  Open devices cannot be removed, but
+adding \fB\-\-force\fP will replace the table with one that fails all I/O.
+\fB\-\-deferred\fP will enable deferred removal of open devices - the device
+will be removed when the last user closes it.  The deferred removal feature is
+supported since version 4.27.0 of the device-mapper driver available in
+upstream kernel version 3.13.
+.
+.HP
+.CMD_RENAME
+.br
+Renames a device.
+.
+.HP
+.CMD_RENAME_UUID
+.br
+Sets the uuid of a device that was created without a uuid.
+After a uuid has been set it cannot be changed.
+.
+.HP
+.CMD_RESUME
+.br
+Un-suspends a device.
+If an inactive table has been loaded, it becomes live.
+Postponed I/O then gets re-queued for processing.
+.
+.HP
+.CMD_SETGEOMETRY
+.br
+Sets the device geometry to C/H/S.
+.
+.HP
+.CMD_SPLITNAME
+.br
+Splits given \fIdevice name\fP into \fIsubsystem\fP constituents.
+The default subsystem is LVM.
+LVM currently generates device names by concatenating the names of the Volume
+Group, Logical Volume and any internal Layer with a hyphen as separator.
+Any hyphens within the names are doubled to escape them.
+The precise encoding might change without notice in any future
+release, so we recommend you always decode using the current version of
+this command.
+.HP
+.CMD_STATS
+.br
+Manages IO statistics regions for devices.
+See
+.BR dmstats (8)
+for more details.
+.HP
+.CMD_STATUS
+.br
+Outputs status information for each of the device's targets.
+With \fB\-\-target\fP, only information relating to the specified target type
+any is displayed.  With \fB\-\-noflush\fP, the thin target (from version 1.3.0)
+doesn't commit any outstanding changes to disk before reporting its statistics.
+
+.HP
+.CMD_SUSPEND
+.br
+Suspends a device.  Any I/O that has already been mapped by the device
+but has not yet completed will be flushed.  Any further I/O to that
+device will be postponed for as long as the device is suspended.
+If there's a filesystem on the device which supports the operation,
+an attempt will be made to sync it first unless \fB\-\-nolockfs\fP is specified.
+Some targets such as recent (October 2006) versions of multipath may support
+the \fB\-\-noflush\fP option.  This lets outstanding I/O that has not yet reached the
+device to remain unflushed.
+.
+.HP
+.CMD_TABLE
+.br
+Outputs the current table for the device in a format that can be fed
+back in using the create or load commands.
+With \fB\-\-target\fP, only information relating to the specified target type
+is displayed.
+Real encryption keys are suppressed in the table output for the crypt
+target unless the \fB\-\-showkeys\fP parameter is supplied. Kernel key
+references prefixed with \fB:\fP are not affected by the parameter and get
+displayed always.
+.
+.HP
+.CMD_TARGETS
+.br
+Displays the names and versions of the currently-loaded targets.
+.
+.HP
+.CMD_UDEVCOMPLETE
+.br
+Wake any processes that are waiting for udev to complete processing the specified cookie.
+.
+.HP
+.CMD_UDEVCOMPLETE_ALL
+.br
+Remove all cookies older than the specified number of minutes.
+Any process waiting on a cookie will be resumed immediately.
+.
+.HP
+.CMD_UDEVCOOKIES
+.br
+List all existing cookies. Cookies are system-wide semaphores with keys
+prefixed by two predefined bytes (0x0D4D).
+.
+.HP
+.CMD_UDEVCREATECOOKIE
+.br
+Creates a new cookie to synchronize actions with udev processing.
+The output is a cookie value. Normally we don't need to create cookies since
+dmsetup creates and destroys them for each action automatically. However, we can
+generate one explicitly to group several actions together and use only one
+cookie instead. We can define a cookie to use for each relevant command by using
+\fB\-\-udevcookie\fP option. Alternatively, we can export this value into the environment
+of the dmsetup process as \fBDM_UDEV_COOKIE\fP variable and it will be used automatically
+with all subsequent commands until it is unset.
+Invoking this command will create system-wide semaphore that needs to be cleaned
+up explicitly by calling udevreleasecookie command.
+.
+.HP
+.CMD_UDEVFLAGS
+.br
+Parses given \fIcookie\fP value and extracts any udev control flags encoded.
+The output is in environment key format that is suitable for use in udev
+rules. If the flag has its symbolic name assigned then the output is
+DM_UDEV_FLAG_<flag_name> = '1', DM_UDEV_FLAG<flag_position> = '1' otherwise.
+Subsystem udev flags don't have symbolic names assigned and these ones are
+always reported as DM_SUBSYSTEM_UDEV_FLAG<flag_position> = '1'. There are
+16 udev flags altogether.
+.
+.HP
+.CMD_UDEVRELEASECOOKIE
+.br
+Waits for all pending udev processing bound to given cookie value and clean up
+the cookie with underlying semaphore. If the cookie is not given directly,
+the command will try to use a value defined by \fBDM_UDEV_COOKIE\fP environment variable.
+.
+.HP
+.CMD_VERSION
+.br
+Outputs version information.
+.
+.HP
+.CMD_WAIT
+.br
+Sleeps until the event counter for device_name exceeds event_nr.
+Use \fB\-v\fP to see the event number returned.
+To wait until the next event is triggered, use \fBinfo\fP to find
+the last event number.
+With \fB\-\-noflush\fP, the thin target (from version 1.3.0) doesn't commit
+any outstanding changes to disk before reporting its statistics.
+.
+.HP
+.CMD_WIPE_TABLE
+.br
+Wait for any I/O in-flight through the device to complete, then
+replace the table with a new table that fails any new I/O
+sent to the device.  If successful, this should release any devices
+held open by the device's table(s).
+.
+.SH TABLE FORMAT
+.
+Each line of the table specifies a single target and is of the form:
+.sp
+.I logical_start_sector num_sectors
+.B target_type
+.I target_args
+.sp
+Simple target types and target args include:
+.
+.TP
+.B linear \fIdestination_device start_sector
+The traditional linear mapping.
+.TP
+.B striped \fInum_stripes chunk_size \fR[\fIdestination start_sector\fR]...
+Creates a striped area.
+.br
+e.g. striped 2 32 /dev/hda1 0 /dev/hdb1 0
+will map the first chunk (16k) as follows:
+.RS
+.RS
+ LV chunk 1 -> hda1, chunk 1
+ LV chunk 2 -> hdb1, chunk 1
+ LV chunk 3 -> hda1, chunk 2
+ LV chunk 4 -> hdb1, chunk 2
+ etc.
+.RE
+.RE
+.TP
+.B error
+Errors any I/O that goes to this area.  Useful for testing or
+for creating devices with holes in them.
+.TP
+.B zero
+Returns blocks of zeroes on reads.  Any data written is discarded silently.
+This is a block-device equivalent of the \fI/dev/zero\fP
+character-device data sink described in \fBnull\fP(4).
+.P
+More complex targets include:
+.TP
+.B cache
+Improves performance of a block device (eg, a spindle) by dynamically
+migrating some of its data to a faster smaller device (eg, an SSD).
+.TP
+.B crypt
+Transparent encryption of block devices using the kernel crypto API.
+.TP
+.B delay
+Delays reads and/or writes to different devices.  Useful for testing.
+.TP
+.B flakey
+Creates a similar mapping to the linear target but
+exhibits unreliable behaviour periodically.
+Useful for simulating failing devices when testing.
+.TP
+.B mirror
+Mirrors data across two or more devices.
+.TP
+.B multipath
+Mediates access through multiple paths to the same device.
+.TP
+.B raid
+Offers an interface to the kernel's software raid driver, md.
+.TP
+.B snapshot
+Supports snapshots of devices.
+.TP
+.BR thin ", " thin-pool
+Supports thin provisioning of devices and also provides a better snapshot support.
+.P
+To find out more about the various targets and their table formats and status
+lines, please read the files in the Documentation/device-mapper directory in
+the kernel source tree.
+(Your distribution might include a copy of this information in the
+documentation directory for the device-mapper package.)
+.
+.SH EXAMPLES
+.
+# A table to join two disks together
+.br
+0 1028160 linear /dev/hda 0
+.br
+1028160 3903762 linear /dev/hdb 0
+.br
+# A table to stripe across the two disks,
+.br
+# and add the spare space from
+.br
+# hdb to the back of the volume
+.br
+0 2056320 striped 2 32 /dev/hda 0 /dev/hdb 0
+.br
+2056320 2875602 linear /dev/hdb 1028160
+.
+.SH ENVIRONMENT VARIABLES
+.
+.TP
+.B DM_DEV_DIR
+The device directory name.
+Defaults to "\fI/dev\fP" and must be an absolute path.
+.TP
+.B DM_UDEV_COOKIE
+A cookie to use for all relevant commands to synchronize with udev processing.
+It is an alternative to using \fB\-\-udevcookie\fP option.
+.TP
+.B DM_DEFAULT_NAME_MANGLING_MODE
+A default mangling mode. Defaults to "\fB#DEFAULT_MANGLING#\fP"
+and it is an alternative to using \fB\-\-manglename\fP option.
+.
+.SH AUTHORS
+.
+Original version: Joe Thornber <thornber at redhat.com>
+.
+.SH SEE ALSO
+.
+.BR dmstats (8),
+.BR udev (7),
+.BR udevadm (8)
+.P
+LVM2 resource page: https://www.sourceware.org/lvm2/
+.br
+Device-mapper resource page: http://sources.redhat.com/dm/
diff --git a/man/dmstats.8.in b/man/dmstats.8.in
deleted file mode 100644
index 682f01d..0000000
--- a/man/dmstats.8.in
+++ /dev/null
@@ -1,1284 +0,0 @@
-.TH DMSTATS 8 "Jun 23 2016" "Linux" "MAINTENANCE COMMANDS"
-
-.de OPT_PROGRAMS
-.  RB \%[ \-\-allprograms | \-\-programid
-.  IR id ]
-..
-.
-.de OPT_REGIONS
-.  RB \%[ \-\-allregions | \-\-regionid
-.  IR id ]
-..
-.de OPT_OBJECTS
-.  RB [ \-\-area ]
-.  RB [ \-\-region ]
-.  RB [ \-\-group ]
-..
-.de OPT_FOREGROUND
-.  RB [ \-\-foreground ]
-..
-.
-.\" Print units suffix, use with arg to print human
-.\" man2html can't handle too many changes per command
-.de UNITS
-.  BR b | B | s | S | k | K | m | M | \c
-.  BR g | G | t | T | p | P | e | E ]
-..
-.
-.\" Print help text for units, use with arg to print human
-.de HELP_UNITS
-.  RB ( b )ytes,
-.  RB ( s )ectors,
-.  RB ( k )ilobytes,
-.  RB ( m )egabytes,
-.  RB ( g )igabytes,
-.  RB ( t )erabytes,
-.  RB ( p )etabytes,
-.  RB ( e )xabytes.
-.  nop Capitalise to use multiples of 1000 (S.I.) instead of 1024.
-..
-.
-.SH NAME
-.
-dmstats \(em device-mapper statistics management
-.
-.SH SYNOPSIS
-.
-.B dmsetup
-.B stats
-.I command
-[OPTIONS]
-.sp
-.
-.PD 0
-.HP
-.B dmstats
-.de CMD_COMMAND
-.  ad l
-.  IR command
-.  IR device_name " |"
-.  BR \-\-major
-.  IR major
-.  BR \-\-minor
-.  IR minor " |"
-.  BR \-u | \-\-uuid
-.  IR uuid
-.  RB \%[ \-v | \-\-verbose]
-.  ad b
-..
-.CMD_COMMAND
-.
-.HP
-.B dmstats
-.de CMD_CLEAR
-.  ad l
-.  BR clear
-.  IR device_name
-.  OPT_PROGRAMS
-.  OPT_REGIONS
-.  ad b
-..
-.CMD_CLEAR
-.
-.HP
-.B dmstats
-.de CMD_CREATE
-.  ad l
-.  BR create
-.  IR device_name... | file_path... | \fB\-\-alldevices
-.  RB [ \-\-areas
-.  IR nr_areas | \fB\-\-areasize
-.  IR area_size ]
-.  RB [ \-\-bounds
-.  IR \%histogram_boundaries ]
-.  RB [ \-\-filemap ]
-.  RB [ \-\-follow
-.  IR follow_mode ]
-.  OPT_FOREGROUND
-.  RB [ \-\-nomonitor ]
-.  RB [ \-\-nogroup ]
-.  RB [ \-\-precise ]
-.  RB [ \-\-start
-.  IR start_sector
-.  BR \-\-length
-.  IR length | \fB\-\-segments ]
-.  RB \%[ \-\-userdata
-.  IR user_data ]
-.  RB [ \-\-programid
-.  IR id ]
-.  ad b
-..
-.CMD_CREATE
-.
-.HP
-.B dmstats
-.de CMD_DELETE
-.  ad l
-.  BR delete
-.  IR device_name | \fB\-\-alldevices
-.  OPT_PROGRAMS
-.  OPT_REGIONS
-.  ad b
-..
-.CMD_DELETE
-.
-.HP
-.B dmstats
-.de CMD_GROUP
-.  ad l
-.  BR group
-.  RI [ device_name | \fB\-\-alldevices ]
-.  RB [ \-\-alias
-.  IR name ]
-.  RB [ \-\-regions
-.  IR regions ]
-.  ad b
-..
-.CMD_GROUP
-.HP
-.B dmstats
-.de CMD_HELP
-.  ad l
-.  BR help
-.  RB [ \-c | \-C | \-\-columns ]
-.  ad b
-..
-.CMD_HELP
-.
-.HP
-.B dmstats
-.de CMD_LIST
-.  ad l
-.  BR list
-.  RI [ device_name ]
-.  RB [ \-\-histogram ]
-.  OPT_PROGRAMS
-.  RB [ \-\-units
-.  IR units ]
-.  OPT_OBJECTS
-.  RB \%[ \-\-nosuffix ]
-.  RB [ \-\-notimesuffix ]
-.  RB \%[ \-v | \-\-verbose]
-.  ad b
-..
-.CMD_LIST
-.
-.HP
-.B dmstats
-.de CMD_PRINT
-.  ad l
-.  BR print
-.  RI [ device_name ]
-.  RB [ \-\-clear ]
-.  OPT_PROGRAMS
-.  OPT_REGIONS
-.  ad b
-..
-.CMD_PRINT
-.
-.HP
-.B dmstats
-.de CMD_REPORT
-.  ad l
-.  BR report
-.  RI [ device_name ]
-.  RB [ \-\-interval
-.  IR seconds ]
-.  RB [ \-\-count
-.  IR count ]
-.  RB [ \-\-units
-.  IR units ]
-.  RB [ \-\-histogram ]
-.  OPT_PROGRAMS
-.  OPT_REGIONS
-.  OPT_OBJECTS
-.  RB [ \-O | \-\-sort
-.  IR sort_fields ]
-.  RB [ \-S | \-\-select
-.  IR selection ]
-.  RB [ \-\-units
-.  IR units ]
-.  RB [ \-\-nosuffix ]
-.  RB \%[ \-\-notimesuffix ]
-.  ad b
-..
-.CMD_REPORT
-.HP
-.B dmstats
-.de CMD_UNGROUP
-.  ad l
-.  BR ungroup
-.  RI [ device_name | \fB\-\-alldevices ]
-.  RB [ \-\-groupid
-.  IR id ]
-.  ad b
-..
-.CMD_UNGROUP
-.HP
-.B dmstats
-.de CMD_UPDATE_FILEMAP
-.  ad l
-.  BR update_filemap
-.  IR file_path
-.  RB [ \-\-groupid
-.  IR id ]
-.  RB [ \-\-follow
-.  IR follow_mode ]
-.  OPT_FOREGROUND
-.  ad b
-..
-.CMD_UPDATE_FILEMAP
-.
-.PD
-.ad b
-.
-.SH DESCRIPTION
-.
-The dmstats program manages IO statistics regions for devices that use
-the device-mapper driver. Statistics regions may be created, deleted,
-listed and reported on using the tool.
-
-The first argument to dmstats is a \fIcommand\fP.
-
-The second argument is the \fIdevice name\fP,
-\fIuuid\fP or \fImajor\fP and \fIminor\fP numbers.
-
-Further options permit the selection of regions, output format
-control, and reporting behaviour.
-
-When no device argument is given dmstats will by default operate on all
-device-mapper devices present. The \fBcreate\fP and \fBdelete\fP
-commands require the use of \fB\-\-alldevices\fP when used in this way.
-.
-.SH OPTIONS
-.
-.HP
-.BR \-\-alias
-.IR name
-.br
-Specify an alias name for a group.
-.
-.HP
-.BR \-\-alldevices
-.br
-If no device arguments are given allow operation on all devices when
-creating or deleting regions.
-.
-.HP
-.BR \-\-allprograms
-.br
-Include regions from all program IDs for list and report operations.
-.br
-.HP
-.BR \-\-allregions
-.br
-Include all present regions for commands that normally accept a single
-region identifier.
-.
-.HP
-.BR \-\-area
-.br
-When peforming a list or report, include objects of type area in the
-results.
-.
-.HP
-.BR \-\-areas
-.IR nr_areas
-.br
-Specify the number of statistics areas to create within a new region.
-.
-.HP
-.BR \-\-areasize
-.IR area_size \c
-.RB [ \c
-.UNITS
-.br
-Specify the size of areas into which a new region should be divided. An
-optional suffix selects units of:
-.HELP_UNITS
-.
-.HP
-.BR \-\-clear
-.br
-When printing statistics counters, also atomically reset them to zero.
-.
-.HP
-.BR \-\-count
-.IR count
-.br
-Specify the iteration count for repeating reports. If the count
-argument is zero reports will continue to repeat until interrupted.
-.
-.HP
-.BR \-\-group
-.br
-When peforming a list or report, include objects of type group in the
-results.
-.
-.HP
-.BR \-\-filemap
-.br
-Instead of creating regions on a device as specified by command line
-options, open the file found at each \fBfile_path\fP argument, and
-create regions corresponding to the locations of the on-disk extents
-allocated to the file(s).
-.
-.HP
-.BR \-\-nomonitor
-.br
-Disable the \fBdmfilemapd\fP daemon when creating new file mapped
-groups. Normally the device-mapper filemap monitoring daemon,
-\fBdmfilemapd\fP, is started for each file mapped group to update the
-set of regions as the file changes on-disk: use of this option
-disables this behaviour.
-
-Regions in the group may still be updated with the
-\fBupdate_filemap\fP command, or by starting the daemon manually.
-.
-.HP
-.BR \-\-follow
-.IR follow_mode
-.br
-Specify the \fBdmfilemapd\fP file following mode. The file map
-monitoring daemon can monitor files in two distinct ways: the mode
-affects the behaviour of the daemon when a file under monitoring is
-renamed or unlinked, and the conditions which cause the daemon to
-terminate.
-
-The \fBfollow_mode\fP argument is either "inode", for follow-inode
-mode, or "path", for follow-path.
-
-If follow-inode mode is used, the daemon will hold the file open, and
-continue to update regions from the same file descriptor. This means
-that the mapping will follow rename, move (within the same file
-system), and unlink operations. This mode is useful if the file is
-expected to be moved, renamed, or unlinked while it is being
-monitored.
-
-In follow-inode mode, the daemon will exit once it detects that the
-file has been unlinked and it is the last holder of a reference to it.
-
-If follow-path is used, the daemon will re-open the provided path on
-each monitoring iteration. This means that the group will be updated
-to reflect a new file being moved to the same path as the original
-file. This mode is useful for files that are expected to be updated
-via unlink and rename.
-
-In follow-path mode, the daemon will exit if the file is removed and
-not replaced within a brief tolerance interval.
-
-In either mode, the daemon exits automatically if the monitored group
-is removed.
-.
-.HP
-.BR \-\-foreground
-.br
-Specify that the \fBdmfilemapd\fP daemon should run in the foreground.
-The daemon will not fork into the background, and will replace the
-\fBdmstats\fP command that started it.
-.
-.HP
-.BR \-\-groupid
-.IR id
-.br
-Specify the group to operate on.
-.
-.HP
-.BR \-\-bounds
-.IR histogram_boundaries \c
-.RB [ ns | us | ms | s ]
-.br
-Specify the boundaries of a latency histogram to be tracked for the
-region as a comma separated list of latency values. Latency values are
-given in nanoseconds. An optional unit suffix of
-.BR ns ,
-.BR us ,
-.BR ms ,
-or \fBs\fP may be given after each value to specify units of
-nanoseconds, microseconds, miliseconds or seconds respectively.
-.
-.HP
-.BR \-\-histogram
-.br
-When used with the \fBreport\fP and \fBlist\fP commands select default
-fields that emphasize latency histogram data.
-.
-.HP
-.BR \-\-interval
-.IR seconds
-.br
-Specify the interval in seconds between successive iterations for
-repeating reports. If \fB\-\-interval\fP is specified but
-\fB\-\-count\fP is not,
-reports will continue to repeat until interrupted.
-.
-.HP
-.BR \-\-length
-.IR length \c
-.RB [ \c
-.UNITS
-.br
-Specify the length of a new statistics region in sectors. An optional
-suffix selects units of:
-.HELP_UNITS
-.
-.HP
-.BR \-j | \-\-major
-.IR major
-.br
-Specify the major number.
-.
-.HP
-.BR \-m | \-\-minor
-.IR minor
-.br
-Specify the minor number.
-.
-.HP
-.BR \-\-nogroup
-.br
-When creating regions mapping the extents of a file in the file
-system, do not create a group or set an alias.
-.
-.HP
-.BR \-\-nosuffix
-.br
-Suppress the suffix on output sizes.  Use with \fB\-\-units\fP
-(except h and H) if processing the output.
-.
-.HP
-.BR \-\-notimesuffix
-.br
-Suppress the suffix on output time values. Histogram boundary values
-will be reported in units of nanoseconds.
-.
-.HP
-.BR \-o | \-\-options
-.br
-Specify which report fields to display.
-.
-.HP
-.BR \-O | \-\-sort
-.IR sort_fields
-.br
-Sort output according to the list of fields given. Precede any
-sort field with '\fB-\fP' for a reverse sort on that column.
-.
-.HP
-.BR \-\-precise
-.br
-Attempt to use nanosecond precision counters when creating new
-statistics regions.
-.
-.HP
-.BR \-\-programid
-.IR id
-.br
-Specify a program ID string. When creating new statistics regions this
-string is stored with the region. Subsequent operations may supply a
-program ID in order to select only regions with a matching value. The
-default program ID for dmstats-managed regions is "dmstats".
-.
-.HP
-.BR \-\-region
-.br
-When peforming a list or report, include objects of type region in the
-results.
-.
-.HP
-.BR \-\-regionid
-.IR id
-.br
-Specify the region to operate on.
-.
-.HP
-.BR \-\-regions
-.IR region_list
-.br
-Specify a list of regions to group. The group list is a comma-separated
-list of region identifiers. Continuous sequences of identifiers may be
-expressed as a hyphen separated range, for example: '1-10'.
-.
-.HP
-.BR \-\-relative
-.br
-If displaying the histogram report show relative (percentage) values
-instead of absolute counts.
-.
-.HP
-.BR \-S | \-\-select
-.IR selection
-.br
-Display only rows that match \fIselection\fP criteria. All rows with the
-additional "selected" column (\fB\-o selected\fP) showing 1 if the row matches
-the \fIselection\fP and 0 otherwise. The selection criteria are defined by
-specifying column names and their valid values while making use of
-supported comparison operators.
-.
-.HP
-.BR \-\-start
-.IR start \c
-.RB [ \c
-.UNITS
-.br
-Specify the start offset of a new statistics region in sectors. An
-optional suffix selects units of:
-.HELP_UNITS
-.
-.HP
-.BR \-\-segments
-.br
-When used with \fBcreate\fP, create a new statistics region for each
-target contained in the given device(s). This causes a separate region
-to be allocated for each segment of the device.
-
-The newly created regions are automatically placed into a group unless
-the \fB\-\-nogroup\fP option is given. When grouping is enabled a group
-alias may be specified using the \fB\-\-alias\fP option.
-.
-.HP
-.BR \-\-units
-.RI [ units ] \c
-.RB [ h | H | \c
-.UNITS
-.br
-Set the display units for report output.
-All sizes are output in these units:
-.RB ( h )uman-readable,
-.HELP_UNITS
-Can also specify custom units e.g. \fB\-\-units\ 3M\fP.
-.
-.HP
-.BR \-\-userdata
-.IR user_data
-.br
-Specify user data (a word) to be stored with a new region. The value
-is added to any internal auxilliary data (for example, group
-information), and stored with the region in the aux_data field provided
-by the kernel. Whitespace is not permitted.
-.
-.HP
-.BR \-u | \-\-uuid
-.br
-Specify the uuid.
-.
-.HP
-.BR \-v | \-\-verbose " [" \-v | \-\-verbose ]
-.br
-Produce additional output.
-.
-.SH COMMANDS
-.
-.HP
-.CMD_CLEAR
-.br
-Instructs the kernel to clear statistics counters for the speficied
-regions (with the exception of in-flight IO counters).
-.
-.HP
-.CMD_CREATE
-.br
-Creates one or more new statistics regions on the specified device(s).
-
-The region will span the entire device unless \fB\-\-start\fP and
-\fB\-\-length\fP or \fB\-\-segments\fP are given. The \fB\-\-start\fP an
-\fB\-\-length\fP options allow a region of arbitrary length to be placed
-at an arbitrary offset into the device. The \fB\-\-segments\fP option
-causes a new region to be created for each target in the corresponding
-device-mapper device's table.
-
-If the \fB\-\-precise\fP option is used the command will attempt to
-create a region using nanosecond precision counters.
-
-If \fB\-\-bounds\fP is given a latency histogram will be tracked for
-the new region. The boundaries of the histogram bins are given as a
-comma separated list of latency values. There is an implicit lower bound
-of zero on the first bin and an implicit upper bound of infinity (or the
-configured interval duration) on the final bin.
-
-Latencies are given in nanoseconds. An optional unit suffix of ns, us,
-ms, or s may be given after each value to specify units of nanoseconds,
-microseconds, miliseconds or seconds respectively, so for example, 10ms
-is equivalent to 10000000. Latency values with a precision of less than
-one milisecond can only be used when precise timestamps are enabled: if
-\fB\-\-precise\fP is not given and values less than one milisecond are
-used it will be enabled automatically.
-
-An optional \fBprogram_id\fP or \fBuser_data\fP string may be associated
-with the region. A \fBprogram_id\fP may then be used to select regions
-for subsequent list, print, and report operations. The \fBuser_data\fP
-stores an arbitrary string and is not used by dmstats or the
-device-mapper kernel statistics subsystem.
-
-By default dmstats creates regions with a \fBprogram_id\fP of
-"dmstats".
-
-On success the \fBregion_id\fP of the newly created region is printed
-to stdout.
-
-If the \fB\-\-filemap\fP option is given with a regular file, or list
-of files, as the \fBfile_path\fP argument, instead of creating regions
-with parameters specified on the command line, \fBdmstats\fP will open
-the files located at \fBfile_path\fP and create regions corresponding to
-the physical extents allocated to the file. This can be used to monitor
-statistics for individual files in the file system, for example, virtual
-machine images, swap areas, or large database files.
-
-To work with the \fB\-\-filemap\fP option, files must be located on a
-local file system, backed by a device-mapper device, that supports
-physical extent data using the FIEMAP ioctl (Ext4 and XFS for e.g.).
-
-By default regions that map a file are placed into a group and the
-group alias is set to the basename of the file. This behaviour can be
-overridden with the \fB\-\-alias\fP and \fB\-\-nogroup\fP options.
-
-Creating a group that maps a file automatically starts a daemon,
-\fBdmfilemapd\fP to monitor the file and update the mapping as the
-extents allocated to the file change. This behaviour can be disabled
-using the \fB\-\-nomonitor\fP option.
-
-Use the \fB\-\-group\fP option to only display information for groups
-when listing and reporting.
-.
-.HP
-.CMD_DELETE
-.br
-Delete the specified statistics region. All counters and resources used
-by the region are released and the region will not appear in the output
-of subsequent list, print, or report operations.
-
-All regions registered on a device may be removed using
-\fB\-\-allregions\fP.
-
-To remove all regions on all devices both \fB\-\-allregions\fP and
-\fB\-\-alldevices\fP must be used.
-
-If a \fB\-\-groupid\fP is given instead of a \fB\-\-regionid\fP the
-command will attempt to delete the group and all regions that it
-contains.
-
-If a deleted region is the first member of a group of regions the group
-will also be removed.
-.
-.HP
-.CMD_GROUP
-.br
-Combine one or more statistics regions on the specified device into a
-group.
-
-The list of regions to be grouped is specified with \fB\-\-regions\fP
-and an optional alias may be assigned with \fB\-\-alias\fP. The set of
-regions is given as a comma-separated list of region identifiers. A
-continuous range of identifers spanning from \fBR1\fP to \fBR2\fP may
-be expressed as '\fBR1\fP-\fBR2\fP'.
-
-Regions that have a histogram configured can be grouped: in this case
-the number of histogram bins and their bounds must match exactly.
-
-On success the group list and newly created \fBgroup_id\fP are
-printed to stdout.
-
-The group metadata is stored with the first (lowest numbered)
-\fBregion_id\fP in the group: deleting this region will also delete
-the group and other group members will be returned to their prior
-state.
-.
-.HP
-.CMD_HELP
-.br
-Outputs a summary of the commands available, optionally including
-the list of report fields.
-.
-.HP
-.CMD_LIST
-.br
-List the statistics regions, areas, or groups registered on the device.
-If the \fB\-\-allprograms\fP switch is given all regions will be listed
-regardless of region program ID values.
-
-By default only regions and groups are included in list output. If
-\fB\-v\fP or \fB\-\-verbose\fP is given the report will also include a
-row of information for each configured group and for each area contained
-in each region displayed.
-
-Regions that contain a single area are by default omitted from the
-verbose list since their properties are identical to the area that they
-contain - to view all regions regardless of the number of areas present
-use \fB\-\-region\fP). To also view the areas contained within regions
-use \fB\-\-area\fP.
-
-If \fB\-\-histogram\fP is given the report will include the bin count
-and latency boundary values for any configured histograms.
-.HP
-.CMD_PRINT
-.br
-Print raw statistics counters for the specified region or for all
-present regions.
-.
-.HP
-.CMD_REPORT
-.br
-Start a report for the specified object or for all present objects. If
-the count argument is specified, the report will repeat at a fixed
-interval set by the \fB\-\-interval\fP option. The default interval is
-one second.
-
-If the \fB\-\-allprograms\fP switch is given, all regions will be
-listed, regardless of region program ID values.
-
-If the \fB\-\-histogram\fP is given the report will include the histogram
-values and latency boundaries.
-
-If the \fB\-\-relative\fP is used the default histogram field displays
-bin values as a percentage of the total number of I/Os.
-
-Object types (areas, regions and groups) to include in the report are
-selected using the \fB\-\-area\fP, \fB\-\-region\fP, and \fB\-\-group\fP
-options.
-.
-.HP
-.CMD_UNGROUP
-.br
-Remove an existing group and return all the group's regions to their
-original state.
-
-The group to be removed is specified using \fB\-\-groupid\fP.
-.HP
-.CMD_UPDATE_FILEMAP
-.br
-Update a group of \fBdmstats\fP regions specified by \fBgroup_id\fP,
-that were previously created with \fB\-\-filemap\fP, either directly,
-or by starting the monitoring daemon, \fBdmfilemapd\fP.
-
-This will add and remove regions to reflect changes in the allocated
-extents of the file on-disk, since the time that it was crated or last
-updated.
-
-Use of this command is not normally needed since the \fBdmfilemapd\fP
-daemon will automatically monitor filemap groups and perform these
-updates when required.
-
-If a filemapped group was created with \fB\-\-nomonitor\fP, or the
-daemon has been killed, the \fBupdate_filemap\fP can be used to
-manually force an update or start a new daemon.
-
-Use \fB\-\-nomonitor\fP to force a direct update and disable starting
-the monitoring daemon.
-.
-.SH REGIONS, AREAS, AND GROUPS
-.
-The device-mapper statistics facility allows separate performance
-counters to be maintained for arbitrary regions of devices. A region may
-span any range: from a single sector to the whole device. A region may
-be further sub-divided into a number of distinct areas (one or more),
-each with its own counter set. In this case a summary value for the
-entire region is also available for use in reports.
-
-In addition, one or more regions on one device can be combined into
-a statistics group. Groups allow several regions to be aggregated and
-reported as a single entity; counters for all regions and areas are
-summed and used to report totals for all group members. Groups also
-permit the assignment of an optional alias, allowing meaningful names
-to be associated with sets of regions.
-
-The group metadata is stored with the first (lowest numbered)
-\fBregion_id\fP in the group: deleting this region will also delete
-the group and other group members will be returned to their prior
-state.
-
-By default new regions span the entire device. The \fB\-\-start\fP and
-\fB\-\-length\fP options allows a region of any size to be placed at any
-location on the device.
-
-Using offsets it is possible to create regions that map individual
-objects within a block device (for example: partitions, files in a file
-system, or stripes or other structures in a RAID volume). Groups allow
-several non-contiguous regions to be assembled together for reporting
-and data aggregation.
-
-A region may be either divided into the specified number of equal-sized
-areas, or into areas of the given size by specifying one of
-\fB\-\-areas\fP or \fB\-\-areasize\fP when creating a region with the
-\fBcreate\fP command. Depending on the size of the areas and the device
-region the final area within the region may be smaller than requested.
-.P
-.B Region identifiers
-.P
-Each region is assigned an identifier when it is created that is used to
-reference the region in subsequent operations. Region identifiers are
-unique within a given device (including across different \fBprogram_id\fP
-values).
-
-Depending on the sequence of create and delete operations, gaps may
-exist in the sequence of \fBregion_id\fP values for a particular device.
-
-The \fBregion_id\fP should be treated as an opaque identifier used to
-reference the region.
-.
-.P
-.B Group identifiers
-.P
-Groups are also assigned an integer identifier at creation time;
-like region identifiers, group identifiers are unique within the
-containing device.
-
-The \fBgroup_id\fP should be treated as an opaque identifier used to
-reference the group.
-.
-.SH FILE MAPPING
-.
-Using \fB\-\-filemap\fP, it is possible to create regions that
-correspond to the extents of a file in the file system. This allows
-IO statistics to be monitored on a per-file basis, for example to
-observe large database files, virtual machine images, or other files
-of interest.
-
-To be able to use file mapping, the file must be backed by a
-device-mapper device, and in a file system that supports the FIEMAP
-ioctl (and which returns data describing the physical location of
-extents). This currently includes \fBxfs(5)\fP and \fBext4(5)\fP.
-
-By default the regions making up a file are placed together in a
-group, and the group alias is set to the \fBbasename(3)\fP of the
-file. This allows statistics to be reported for the file as a whole,
-aggregating values for the regions making up the group. To see only
-the whole file (group) when using the \fBlist\fP and \fBreport\fP
-commands, use \fB\-\-group\fP.
-
-Since it is possible for the file to change after the initial
-group of regions is created, the \fBupdate_filemap\fP command, and
-\fBdmfilemapd\fP daemon are provided to update file mapped groups
-either manually or automatically.
-.
-.P
-.B File follow modes
-.P
-The file map monitoring daemon can monitor files in two distinct ways:
-follow-inode mode, and follow-path mode.
-
-The mode affects the behaviour of the daemon when a file under
-monitoring is renamed or unlinked, and the conditions which cause the
-daemon to terminate.
-
-If follow-inode mode is used, the daemon will hold the file open, and
-continue to update regions from the same file descriptor. This means
-that the mapping will follow rename, move (within the same file
-system), and unlink operations. This mode is useful if the file is
-expected to be moved, renamed, or unlinked while it is being
-monitored.
-
-In follow-inode mode, the daemon will exit once it detects that the
-file has been unlinked and it is the last holder of a reference to it.
-
-If follow-path is used, the daemon will re-open the provided path on
-each monitoring iteration. This means that the group will be updated
-to reflect a new file being moved to the same path as the original
-file. This mode is useful for files that are expected to be updated
-via unlink and rename.
-
-In follow-path mode, the daemon will exit if the file is removed and
-not replaced within a brief tolerance interval (one second).
-
-To stop the daemon, delete the group containing the mapped regions:
-the daemon will automatically shut down.
-
-The daemon can also be safely killed at any time and the group kept:
-if the file is still being allocated the mapping will become
-progressively out-of-date as extents are added and removed (in this
-case the daemon can be re-started or the group updated manually with
-the \fBupdate_filemap\fP command).
-
-See the \fBcreate\fP command and \fB\-\-filemap\fP, \fB\-\-follow\fP,
-and \fB\-\-nomonitor\fP options for further information.
-.
-.P
-.B Limitations
-.P
-The daemon attempts to maintain good synchronisation between the file
-extents and the regions contained in the group, however, since it can
-only react to new allocations once they have been written, there are
-inevitably some IO events that cannot be counted when a file is
-growing, particularly if the file is being extended by a single thread
-writing beyond end-of-file (for example, the \fBdd\fP program).
-
-There is a further loss of events in that there is currently no way
-to atomically resize a \fBdmstats\fP region and preserve its current
-counter values. This affects files when they grow by extending the
-final extent, rather than allocating a new extent: any events that
-had accumulated in the region between any prior operation and the
-resize are lost.
-
-File mapping is currently most effective in cases where the majority
-of IO does not trigger extent allocation. Future updates may address
-these limitations when kernel support is available.
-.
-.SH REPORT FIELDS
-.
-The dmstats report provides several types of field that may be added to
-the default field set, or used to create custom reports.
-
-All performance counters and metrics are calculated per-area.
-.
-.SS Derived metrics
-.
-A number of metrics fields are included that provide high level
-performance indicators. These are based on the fields provided by the
-conventional Linux iostat program and are derived from the basic counter
-values provided by the kernel for each area.
-.TP
-.B reads_merged_per_sec
-Reads merged per second.
-.TP
-.B writes_merged_per_sec
-Writes merged per second.
-.TP
-.B reads_per_sec
-Reads completed per second.
-.TP
-.B writes_per_sec
-Writes completed per second.
-.TP
-.B read_size_per_sec
-Size of data read per second.
-.TP
-.B write_size_per_sec
-Size of data written per second.
-.TP
-.B avg_request_size
-Average request size.
-.TP
-.B queue_size
-Average queue size.
-.TP
-.B await
-The average wait time for read and write operations.
-.TP
-.B r_await
-The average wait time for read operations.
-.TP
-.B w_await
-The average wait time for write operations.
-.TP
-.B throughput
-The device throughput in operations per second.
-.TP
-.B service_time
-The average service time (in milliseconds) for operations issued
-to the device.
-.TP
-.B util
-Percentage of CPU time during which I/O requests were issued to the
-device (bandwidth utilization for the device). Device saturation occurs
-when this value is close to 100%.
-.
-.SS Group, region and area meta fields
-.
-Meta fields provide information about the groups, regions, or areas that
-the statistics values relate to. This includes the region and area
-identifier, start, length, and counts, as well as the program ID and
-user data values.
-.TP
-.B region_id
-Region identifier. This is a non-negative integer returned by the kernel
-when a statistics region is created.
-.TP
-.B region_start
-The region start location. Display units are selected by the
-\fB\-\-units\fP option.
-.TP
-.B region_len
-The length of the region. Display units are selected by the
-\fB\-\-units\fP option.
-.TP
-.B area_id
-Area identifier. Area identifiers are assigned by the device-mapper
-statistics library and uniquely identify each area within a region. Each
-ID corresponds to a distinct set of performance counters for that area
-of the statistics region. Area identifiers are always monotonically
-increasing within a region so that higher ID values correspond to
-greater sector addresses within the area and no gaps in the sequence of
-identifiers exist.
-.TP
-.B area_start
-The area start location. Display units are selected by the
-\fB\-\-units\fP option.
-.TP
-.B area_len
-The length of the area. Display units are selected by the
-\fB\-\-units\fP option.
-.TP
-.B area_count
-The number of areas in this region.
-.TP
-.B program_id
-The program ID value associated with this region.
-.TP
-.B user_data
-The user data value associated with this region.
-.TP
-.B group_id
-Group identifier. This is a non-negative integer returned by the dmstats
-\fBgroup\fP command when a statistics group is created.
-.TP
-.B interval_ns
-The estimated interval over which the current counter values have
-accumulated. The value is reported as an interger expressed in units
-of nanoseconds.
-.TP
-.B interval
-The estimated interval over which the current counter values have
-accumulated. The value is reported as a real number in units of
-seconds.
-.
-.SS Basic counters
-.
-Basic counters provide access to the raw counter data from the kernel,
-allowing further processing to be carried out by another program.
-.P
-The kernel provides thirteen separate counters for each statistics
-area. The first eleven of these match the counters provided in
-/proc/diskstats or /sys/block/*/*/stat. The final pair provide separate
-counters for read and write time.
-.TP
-.B read_count
-Count of reads completed this interval.
-.TP
-.B reads_merged_count
-Count of reads merged this interval.
-.TP
-.B read_sector_count
-Count of 512 byte sectors read this interval.
-.TP
-.B read_time
-Accumulated duration of all read requests (ns).
-.TP
-.B write_count
-Count of writes completed this interval.
-.TP
-.B writes_merged_count
-Count of writes merged this interval.
-.TP
-.B write_sector_count
-Count of 512 byte sectors written this interval.
-.TP
-.B write_time
-Accumulated duration of all write requests (ns).
-.TP
-.B in_progress_count
-Count of requests currently in progress.
-.TP
-.B io_ticks
-Nanoseconds spent servicing requests.
-.TP
-.B queue_ticks
-This field is incremented at each I/O start, I/O completion, I/O merge,
-or read of these stats by the number of I/Os in progress multiplied by
-the number of milliseconds spent doing I/O since the last update of this
-field.  This can provide an easy measure of both I/O completion time and
-the backlog that may be accumulating.
-.TP
-.B read_ticks
-Nanoseconds spent servicing reads.
-.TP
-.B write_ticks
-Nanoseconds spent servicing writes.
-.
-.SS Histogram fields
-.
-Histograms measure the frequency distribution of user specified I/O
-latency intervals. Histogram bin boundaries are specified when a region
-is created.
-.P
-A brief representation of the histogram values and latency intervals can
-be included in the report using these fields.
-.TP
-.B hist_count
-A list of the histogram counts for the current statistics area in order
-of ascending latency value. Each value represents the number of I/Os
-with latency times falling into that bin's time range during the sample
-period.
-.TP
-.B hist_count_bounds
-A list of the histogram counts for the current statistics area in order
-of ascending latency value including bin boundaries: each count is
-prefixed by the lower bound of the corresponding histogram bin.
-.TP
-.B hist_count_ranges
-A list of the histogram counts for the current statistics area in order
-of ascending latency value including bin boundaries: each count is
-prefixed by both the lower and upper bounds of the corresponding
-histogram bin.
-.TP
-.B hist_percent
-A list of the relative histogram values for the current statistics area
-in order of ascending latency value, expressed as a percentage. Each
-value represents the proportion of I/Os with latency times falling into
-that bin's time range during the sample period.
-.TP
-.B hist_percent_bounds
-A list of the relative histogram values for the current statistics area
-in order of ascending latency value, expressed as a percentage and
-including bin boundaries. Each value represents the proportion of I/Os
-with latency times falling into that bin's time range during the sample
-period and is prefixed with the corresponding bin's lower bound.
-.TP
-.B hist_percent_ranges
-A list of the relative histogram values for the current statistics area
-in order of ascending latency value, expressed as a percentage and
-including bin boundaries. Each value represents the proportion of I/Os
-with latency times falling into that bin's time range during the sample
-period and is prefixed with the corresponding bin's lower and upper
-bounds.
-.TP
-.B hist_bounds
-A list of the histogram boundary values for the current statistics area
-in order of ascending latency value.  The values are expressed in whole
-units of seconds, miliseconds, microseconds or nanoseconds with a suffix
-indicating the unit.
-.TP
-.B hist_ranges
-A list of the histogram bin ranges for the current statistics area in
-order of ascending latency value.  The values are expressed as
-"LOWER-UPPER" in whole units of seconds, miliseconds, microseconds or
-nanoseconds with a suffix indicating the unit.
-.TP
-.B hist_bins
-The number of latency histogram bins configured for the area.
-.
-.SH EXAMPLES
-.
-Create a whole-device region with one area on vg00/lvol1
-.br
-#
-.B dmstats create vg00/lvol1
-.br
-vg00/lvol1: Created new region with 1 area(s) as region ID 0
-.P
-Create a 32M region 1G into device d0
-.br
-#
-.B dmstats create \-\-start 1G \-\-length 32M d0
-.br
-d0: Created new region with 1 area(s) as region ID 0
-.P
-Create a whole-device region with 8 areas on every device
-.br
-.br
-#
-.B dmstats create \-\-areas 8
-.br
-vg00-lvol1: Created new region with 8 area(s) as region ID 0
-.br
-vg00-lvol2: Created new region with 8 area(s) as region ID 0
-.br
-vg00-lvol3: Created new region with 8 area(s) as region ID 0
-.br
-vg01-lvol0: Created new region with 8 area(s) as region ID 2
-.br
-vg01-lvol1: Created new region with 8 area(s) as region ID 0
-.br
-vg00-lvol2: Created new region with 8 area(s) as region ID 1
-.P
-Delete all regions on all devices
-.br
-.br
-#
-.B dmstats delete \-\-alldevices \-\-allregions
-.P
-Create a whole-device region with areas 10GiB in size on vg00/lvol1
-using dmsetup
-.br
-.br
-#
-.B dmsetup stats create \-\-areasize 10G vg00/lvol1
-.br
-vg00-lvol1: Created new region with 5 area(s) as region ID 1
-.P
-Create a 1GiB region with 16 areas at the start of vg00/lvol1
-.br
-#
-.B dmstats create \-\-start 0 \-\-len 1G \-\-areas=16 vg00/lvol1
-.br
-vg00-lvol1: Created new region with 16 area(s) as region ID 0
-.P
-List the statistics regions registered on vg00/lvol1
-.br
-#
-.B dmstats list vg00/lvol1
-.br
-Name             RgID  RStart RSize  #Areas ASize  ProgID
-.br
-vg00-lvol1           0      0 61.00g      1 61.00g dmstats
-.br
-vg00-lvol1           1 61.00g 19.20g      1 19.20g dmstats
-.br
-vg00-lvol1           2 80.20g  2.14g      1  2.14g dmstats
-.P
-Display five statistics reports for vg00/lvol1 at an interval of one second
-.br
-.br
-#
-.B dmstats report \-\-interval 1 \-\-count 5 vg00/lvol1
-.br
-#
-.B dmstats report
-.br
-Name             RgID  ArID  AStart ASize  RRqM/s   WRqM/s   R/s   W/s    RSz/s WSz/s   AvRqSz  QSize Util%      AWait RdAWa WrAWa
-.br
-vg_hex-lv_home       0     0      0 61.00g     0.00     0.00  0.00 218.00     0   1.04m   4.50k  2.97      81.70 13.62  0.00 13.62
-.br
-vg_hex-lv_home       1     0 61.00g 19.20g     0.00     0.00  0.00   5.00     0 548.00k 109.50k  0.14      11.00 27.40  0.00 27.40
-.br
-vg_hex-lv_home       2     0 80.20g  2.14g     0.00     0.00  0.00  14.00     0   1.15m  84.00k  0.39      18.70 27.71  0.00 27.71
-.P
-Create one region for reach target contained in device vg00/lvol1
-.br
-.br
-#
-.B dmstats create \-\-segments vg00/lvol1
-.br
-vg00-lvol1: Created new region with 1 area(s) as region ID 0
-.br
-vg00-lvol1: Created new region with 1 area(s) as region ID 1
-.br
-vg00-lvol1: Created new region with 1 area(s) as region ID 2
-.P
-Create regions mapping each file in the directory images/ and place
-them into separate groups, each named after the corresponding file
-.br
-#
-.B dmstats create --filemap images/*
-.br
-images/vm1.qcow2: Created new group with 87 region(s) as group ID 0.
-.br
-images/vm1-1.qcow2: Created new group with 8 region(s) as group ID 87.
-.br
-images/vm2.qcow2: Created new group with 11 region(s) as group ID 95.
-.br
-images/vm2-1.qcow2: Created new group with 1454 region(s) as group ID 106.
-.br
-images/vm3.img: Created new group with 2 region(s) as group ID 1560.
-.P
-Print raw counters for region 4 on device d0
-.br
-#
-.B dmstats print \-\-regionid 4 d0
-.br
-2097152+65536 0 0 0 0 29 0 264 701 0 41 701 0 41
-.
-.SH AUTHORS
-.
-Bryn M. Reeves <bmr at redhat.com>
-.
-.SH SEE ALSO
-.
-.BR dmsetup (8)
-
-LVM2 resource page: https://www.sourceware.org/lvm2/
-.br
-Device-mapper resource page: http://sources.redhat.com/dm/
-.br
-
-Device-mapper statistics kernel documentation
-.br
-.I Documentation/device-mapper/statistics.txt
diff --git a/man/dmstats.8_main b/man/dmstats.8_main
new file mode 100644
index 0000000..682f01d
--- /dev/null
+++ b/man/dmstats.8_main
@@ -0,0 +1,1284 @@
+.TH DMSTATS 8 "Jun 23 2016" "Linux" "MAINTENANCE COMMANDS"
+
+.de OPT_PROGRAMS
+.  RB \%[ \-\-allprograms | \-\-programid
+.  IR id ]
+..
+.
+.de OPT_REGIONS
+.  RB \%[ \-\-allregions | \-\-regionid
+.  IR id ]
+..
+.de OPT_OBJECTS
+.  RB [ \-\-area ]
+.  RB [ \-\-region ]
+.  RB [ \-\-group ]
+..
+.de OPT_FOREGROUND
+.  RB [ \-\-foreground ]
+..
+.
+.\" Print units suffix, use with arg to print human
+.\" man2html can't handle too many changes per command
+.de UNITS
+.  BR b | B | s | S | k | K | m | M | \c
+.  BR g | G | t | T | p | P | e | E ]
+..
+.
+.\" Print help text for units, use with arg to print human
+.de HELP_UNITS
+.  RB ( b )ytes,
+.  RB ( s )ectors,
+.  RB ( k )ilobytes,
+.  RB ( m )egabytes,
+.  RB ( g )igabytes,
+.  RB ( t )erabytes,
+.  RB ( p )etabytes,
+.  RB ( e )xabytes.
+.  nop Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+..
+.
+.SH NAME
+.
+dmstats \(em device-mapper statistics management
+.
+.SH SYNOPSIS
+.
+.B dmsetup
+.B stats
+.I command
+[OPTIONS]
+.sp
+.
+.PD 0
+.HP
+.B dmstats
+.de CMD_COMMAND
+.  ad l
+.  IR command
+.  IR device_name " |"
+.  BR \-\-major
+.  IR major
+.  BR \-\-minor
+.  IR minor " |"
+.  BR \-u | \-\-uuid
+.  IR uuid
+.  RB \%[ \-v | \-\-verbose]
+.  ad b
+..
+.CMD_COMMAND
+.
+.HP
+.B dmstats
+.de CMD_CLEAR
+.  ad l
+.  BR clear
+.  IR device_name
+.  OPT_PROGRAMS
+.  OPT_REGIONS
+.  ad b
+..
+.CMD_CLEAR
+.
+.HP
+.B dmstats
+.de CMD_CREATE
+.  ad l
+.  BR create
+.  IR device_name... | file_path... | \fB\-\-alldevices
+.  RB [ \-\-areas
+.  IR nr_areas | \fB\-\-areasize
+.  IR area_size ]
+.  RB [ \-\-bounds
+.  IR \%histogram_boundaries ]
+.  RB [ \-\-filemap ]
+.  RB [ \-\-follow
+.  IR follow_mode ]
+.  OPT_FOREGROUND
+.  RB [ \-\-nomonitor ]
+.  RB [ \-\-nogroup ]
+.  RB [ \-\-precise ]
+.  RB [ \-\-start
+.  IR start_sector
+.  BR \-\-length
+.  IR length | \fB\-\-segments ]
+.  RB \%[ \-\-userdata
+.  IR user_data ]
+.  RB [ \-\-programid
+.  IR id ]
+.  ad b
+..
+.CMD_CREATE
+.
+.HP
+.B dmstats
+.de CMD_DELETE
+.  ad l
+.  BR delete
+.  IR device_name | \fB\-\-alldevices
+.  OPT_PROGRAMS
+.  OPT_REGIONS
+.  ad b
+..
+.CMD_DELETE
+.
+.HP
+.B dmstats
+.de CMD_GROUP
+.  ad l
+.  BR group
+.  RI [ device_name | \fB\-\-alldevices ]
+.  RB [ \-\-alias
+.  IR name ]
+.  RB [ \-\-regions
+.  IR regions ]
+.  ad b
+..
+.CMD_GROUP
+.HP
+.B dmstats
+.de CMD_HELP
+.  ad l
+.  BR help
+.  RB [ \-c | \-C | \-\-columns ]
+.  ad b
+..
+.CMD_HELP
+.
+.HP
+.B dmstats
+.de CMD_LIST
+.  ad l
+.  BR list
+.  RI [ device_name ]
+.  RB [ \-\-histogram ]
+.  OPT_PROGRAMS
+.  RB [ \-\-units
+.  IR units ]
+.  OPT_OBJECTS
+.  RB \%[ \-\-nosuffix ]
+.  RB [ \-\-notimesuffix ]
+.  RB \%[ \-v | \-\-verbose]
+.  ad b
+..
+.CMD_LIST
+.
+.HP
+.B dmstats
+.de CMD_PRINT
+.  ad l
+.  BR print
+.  RI [ device_name ]
+.  RB [ \-\-clear ]
+.  OPT_PROGRAMS
+.  OPT_REGIONS
+.  ad b
+..
+.CMD_PRINT
+.
+.HP
+.B dmstats
+.de CMD_REPORT
+.  ad l
+.  BR report
+.  RI [ device_name ]
+.  RB [ \-\-interval
+.  IR seconds ]
+.  RB [ \-\-count
+.  IR count ]
+.  RB [ \-\-units
+.  IR units ]
+.  RB [ \-\-histogram ]
+.  OPT_PROGRAMS
+.  OPT_REGIONS
+.  OPT_OBJECTS
+.  RB [ \-O | \-\-sort
+.  IR sort_fields ]
+.  RB [ \-S | \-\-select
+.  IR selection ]
+.  RB [ \-\-units
+.  IR units ]
+.  RB [ \-\-nosuffix ]
+.  RB \%[ \-\-notimesuffix ]
+.  ad b
+..
+.CMD_REPORT
+.HP
+.B dmstats
+.de CMD_UNGROUP
+.  ad l
+.  BR ungroup
+.  RI [ device_name | \fB\-\-alldevices ]
+.  RB [ \-\-groupid
+.  IR id ]
+.  ad b
+..
+.CMD_UNGROUP
+.HP
+.B dmstats
+.de CMD_UPDATE_FILEMAP
+.  ad l
+.  BR update_filemap
+.  IR file_path
+.  RB [ \-\-groupid
+.  IR id ]
+.  RB [ \-\-follow
+.  IR follow_mode ]
+.  OPT_FOREGROUND
+.  ad b
+..
+.CMD_UPDATE_FILEMAP
+.
+.PD
+.ad b
+.
+.SH DESCRIPTION
+.
+The dmstats program manages IO statistics regions for devices that use
+the device-mapper driver. Statistics regions may be created, deleted,
+listed and reported on using the tool.
+
+The first argument to dmstats is a \fIcommand\fP.
+
+The second argument is the \fIdevice name\fP,
+\fIuuid\fP or \fImajor\fP and \fIminor\fP numbers.
+
+Further options permit the selection of regions, output format
+control, and reporting behaviour.
+
+When no device argument is given dmstats will by default operate on all
+device-mapper devices present. The \fBcreate\fP and \fBdelete\fP
+commands require the use of \fB\-\-alldevices\fP when used in this way.
+.
+.SH OPTIONS
+.
+.HP
+.BR \-\-alias
+.IR name
+.br
+Specify an alias name for a group.
+.
+.HP
+.BR \-\-alldevices
+.br
+If no device arguments are given allow operation on all devices when
+creating or deleting regions.
+.
+.HP
+.BR \-\-allprograms
+.br
+Include regions from all program IDs for list and report operations.
+.br
+.HP
+.BR \-\-allregions
+.br
+Include all present regions for commands that normally accept a single
+region identifier.
+.
+.HP
+.BR \-\-area
+.br
+When peforming a list or report, include objects of type area in the
+results.
+.
+.HP
+.BR \-\-areas
+.IR nr_areas
+.br
+Specify the number of statistics areas to create within a new region.
+.
+.HP
+.BR \-\-areasize
+.IR area_size \c
+.RB [ \c
+.UNITS
+.br
+Specify the size of areas into which a new region should be divided. An
+optional suffix selects units of:
+.HELP_UNITS
+.
+.HP
+.BR \-\-clear
+.br
+When printing statistics counters, also atomically reset them to zero.
+.
+.HP
+.BR \-\-count
+.IR count
+.br
+Specify the iteration count for repeating reports. If the count
+argument is zero reports will continue to repeat until interrupted.
+.
+.HP
+.BR \-\-group
+.br
+When peforming a list or report, include objects of type group in the
+results.
+.
+.HP
+.BR \-\-filemap
+.br
+Instead of creating regions on a device as specified by command line
+options, open the file found at each \fBfile_path\fP argument, and
+create regions corresponding to the locations of the on-disk extents
+allocated to the file(s).
+.
+.HP
+.BR \-\-nomonitor
+.br
+Disable the \fBdmfilemapd\fP daemon when creating new file mapped
+groups. Normally the device-mapper filemap monitoring daemon,
+\fBdmfilemapd\fP, is started for each file mapped group to update the
+set of regions as the file changes on-disk: use of this option
+disables this behaviour.
+
+Regions in the group may still be updated with the
+\fBupdate_filemap\fP command, or by starting the daemon manually.
+.
+.HP
+.BR \-\-follow
+.IR follow_mode
+.br
+Specify the \fBdmfilemapd\fP file following mode. The file map
+monitoring daemon can monitor files in two distinct ways: the mode
+affects the behaviour of the daemon when a file under monitoring is
+renamed or unlinked, and the conditions which cause the daemon to
+terminate.
+
+The \fBfollow_mode\fP argument is either "inode", for follow-inode
+mode, or "path", for follow-path.
+
+If follow-inode mode is used, the daemon will hold the file open, and
+continue to update regions from the same file descriptor. This means
+that the mapping will follow rename, move (within the same file
+system), and unlink operations. This mode is useful if the file is
+expected to be moved, renamed, or unlinked while it is being
+monitored.
+
+In follow-inode mode, the daemon will exit once it detects that the
+file has been unlinked and it is the last holder of a reference to it.
+
+If follow-path is used, the daemon will re-open the provided path on
+each monitoring iteration. This means that the group will be updated
+to reflect a new file being moved to the same path as the original
+file. This mode is useful for files that are expected to be updated
+via unlink and rename.
+
+In follow-path mode, the daemon will exit if the file is removed and
+not replaced within a brief tolerance interval.
+
+In either mode, the daemon exits automatically if the monitored group
+is removed.
+.
+.HP
+.BR \-\-foreground
+.br
+Specify that the \fBdmfilemapd\fP daemon should run in the foreground.
+The daemon will not fork into the background, and will replace the
+\fBdmstats\fP command that started it.
+.
+.HP
+.BR \-\-groupid
+.IR id
+.br
+Specify the group to operate on.
+.
+.HP
+.BR \-\-bounds
+.IR histogram_boundaries \c
+.RB [ ns | us | ms | s ]
+.br
+Specify the boundaries of a latency histogram to be tracked for the
+region as a comma separated list of latency values. Latency values are
+given in nanoseconds. An optional unit suffix of
+.BR ns ,
+.BR us ,
+.BR ms ,
+or \fBs\fP may be given after each value to specify units of
+nanoseconds, microseconds, miliseconds or seconds respectively.
+.
+.HP
+.BR \-\-histogram
+.br
+When used with the \fBreport\fP and \fBlist\fP commands select default
+fields that emphasize latency histogram data.
+.
+.HP
+.BR \-\-interval
+.IR seconds
+.br
+Specify the interval in seconds between successive iterations for
+repeating reports. If \fB\-\-interval\fP is specified but
+\fB\-\-count\fP is not,
+reports will continue to repeat until interrupted.
+.
+.HP
+.BR \-\-length
+.IR length \c
+.RB [ \c
+.UNITS
+.br
+Specify the length of a new statistics region in sectors. An optional
+suffix selects units of:
+.HELP_UNITS
+.
+.HP
+.BR \-j | \-\-major
+.IR major
+.br
+Specify the major number.
+.
+.HP
+.BR \-m | \-\-minor
+.IR minor
+.br
+Specify the minor number.
+.
+.HP
+.BR \-\-nogroup
+.br
+When creating regions mapping the extents of a file in the file
+system, do not create a group or set an alias.
+.
+.HP
+.BR \-\-nosuffix
+.br
+Suppress the suffix on output sizes.  Use with \fB\-\-units\fP
+(except h and H) if processing the output.
+.
+.HP
+.BR \-\-notimesuffix
+.br
+Suppress the suffix on output time values. Histogram boundary values
+will be reported in units of nanoseconds.
+.
+.HP
+.BR \-o | \-\-options
+.br
+Specify which report fields to display.
+.
+.HP
+.BR \-O | \-\-sort
+.IR sort_fields
+.br
+Sort output according to the list of fields given. Precede any
+sort field with '\fB-\fP' for a reverse sort on that column.
+.
+.HP
+.BR \-\-precise
+.br
+Attempt to use nanosecond precision counters when creating new
+statistics regions.
+.
+.HP
+.BR \-\-programid
+.IR id
+.br
+Specify a program ID string. When creating new statistics regions this
+string is stored with the region. Subsequent operations may supply a
+program ID in order to select only regions with a matching value. The
+default program ID for dmstats-managed regions is "dmstats".
+.
+.HP
+.BR \-\-region
+.br
+When peforming a list or report, include objects of type region in the
+results.
+.
+.HP
+.BR \-\-regionid
+.IR id
+.br
+Specify the region to operate on.
+.
+.HP
+.BR \-\-regions
+.IR region_list
+.br
+Specify a list of regions to group. The group list is a comma-separated
+list of region identifiers. Continuous sequences of identifiers may be
+expressed as a hyphen separated range, for example: '1-10'.
+.
+.HP
+.BR \-\-relative
+.br
+If displaying the histogram report show relative (percentage) values
+instead of absolute counts.
+.
+.HP
+.BR \-S | \-\-select
+.IR selection
+.br
+Display only rows that match \fIselection\fP criteria. All rows with the
+additional "selected" column (\fB\-o selected\fP) showing 1 if the row matches
+the \fIselection\fP and 0 otherwise. The selection criteria are defined by
+specifying column names and their valid values while making use of
+supported comparison operators.
+.
+.HP
+.BR \-\-start
+.IR start \c
+.RB [ \c
+.UNITS
+.br
+Specify the start offset of a new statistics region in sectors. An
+optional suffix selects units of:
+.HELP_UNITS
+.
+.HP
+.BR \-\-segments
+.br
+When used with \fBcreate\fP, create a new statistics region for each
+target contained in the given device(s). This causes a separate region
+to be allocated for each segment of the device.
+
+The newly created regions are automatically placed into a group unless
+the \fB\-\-nogroup\fP option is given. When grouping is enabled a group
+alias may be specified using the \fB\-\-alias\fP option.
+.
+.HP
+.BR \-\-units
+.RI [ units ] \c
+.RB [ h | H | \c
+.UNITS
+.br
+Set the display units for report output.
+All sizes are output in these units:
+.RB ( h )uman-readable,
+.HELP_UNITS
+Can also specify custom units e.g. \fB\-\-units\ 3M\fP.
+.
+.HP
+.BR \-\-userdata
+.IR user_data
+.br
+Specify user data (a word) to be stored with a new region. The value
+is added to any internal auxilliary data (for example, group
+information), and stored with the region in the aux_data field provided
+by the kernel. Whitespace is not permitted.
+.
+.HP
+.BR \-u | \-\-uuid
+.br
+Specify the uuid.
+.
+.HP
+.BR \-v | \-\-verbose " [" \-v | \-\-verbose ]
+.br
+Produce additional output.
+.
+.SH COMMANDS
+.
+.HP
+.CMD_CLEAR
+.br
+Instructs the kernel to clear statistics counters for the speficied
+regions (with the exception of in-flight IO counters).
+.
+.HP
+.CMD_CREATE
+.br
+Creates one or more new statistics regions on the specified device(s).
+
+The region will span the entire device unless \fB\-\-start\fP and
+\fB\-\-length\fP or \fB\-\-segments\fP are given. The \fB\-\-start\fP an
+\fB\-\-length\fP options allow a region of arbitrary length to be placed
+at an arbitrary offset into the device. The \fB\-\-segments\fP option
+causes a new region to be created for each target in the corresponding
+device-mapper device's table.
+
+If the \fB\-\-precise\fP option is used the command will attempt to
+create a region using nanosecond precision counters.
+
+If \fB\-\-bounds\fP is given a latency histogram will be tracked for
+the new region. The boundaries of the histogram bins are given as a
+comma separated list of latency values. There is an implicit lower bound
+of zero on the first bin and an implicit upper bound of infinity (or the
+configured interval duration) on the final bin.
+
+Latencies are given in nanoseconds. An optional unit suffix of ns, us,
+ms, or s may be given after each value to specify units of nanoseconds,
+microseconds, miliseconds or seconds respectively, so for example, 10ms
+is equivalent to 10000000. Latency values with a precision of less than
+one milisecond can only be used when precise timestamps are enabled: if
+\fB\-\-precise\fP is not given and values less than one milisecond are
+used it will be enabled automatically.
+
+An optional \fBprogram_id\fP or \fBuser_data\fP string may be associated
+with the region. A \fBprogram_id\fP may then be used to select regions
+for subsequent list, print, and report operations. The \fBuser_data\fP
+stores an arbitrary string and is not used by dmstats or the
+device-mapper kernel statistics subsystem.
+
+By default dmstats creates regions with a \fBprogram_id\fP of
+"dmstats".
+
+On success the \fBregion_id\fP of the newly created region is printed
+to stdout.
+
+If the \fB\-\-filemap\fP option is given with a regular file, or list
+of files, as the \fBfile_path\fP argument, instead of creating regions
+with parameters specified on the command line, \fBdmstats\fP will open
+the files located at \fBfile_path\fP and create regions corresponding to
+the physical extents allocated to the file. This can be used to monitor
+statistics for individual files in the file system, for example, virtual
+machine images, swap areas, or large database files.
+
+To work with the \fB\-\-filemap\fP option, files must be located on a
+local file system, backed by a device-mapper device, that supports
+physical extent data using the FIEMAP ioctl (Ext4 and XFS for e.g.).
+
+By default regions that map a file are placed into a group and the
+group alias is set to the basename of the file. This behaviour can be
+overridden with the \fB\-\-alias\fP and \fB\-\-nogroup\fP options.
+
+Creating a group that maps a file automatically starts a daemon,
+\fBdmfilemapd\fP to monitor the file and update the mapping as the
+extents allocated to the file change. This behaviour can be disabled
+using the \fB\-\-nomonitor\fP option.
+
+Use the \fB\-\-group\fP option to only display information for groups
+when listing and reporting.
+.
+.HP
+.CMD_DELETE
+.br
+Delete the specified statistics region. All counters and resources used
+by the region are released and the region will not appear in the output
+of subsequent list, print, or report operations.
+
+All regions registered on a device may be removed using
+\fB\-\-allregions\fP.
+
+To remove all regions on all devices both \fB\-\-allregions\fP and
+\fB\-\-alldevices\fP must be used.
+
+If a \fB\-\-groupid\fP is given instead of a \fB\-\-regionid\fP the
+command will attempt to delete the group and all regions that it
+contains.
+
+If a deleted region is the first member of a group of regions the group
+will also be removed.
+.
+.HP
+.CMD_GROUP
+.br
+Combine one or more statistics regions on the specified device into a
+group.
+
+The list of regions to be grouped is specified with \fB\-\-regions\fP
+and an optional alias may be assigned with \fB\-\-alias\fP. The set of
+regions is given as a comma-separated list of region identifiers. A
+continuous range of identifers spanning from \fBR1\fP to \fBR2\fP may
+be expressed as '\fBR1\fP-\fBR2\fP'.
+
+Regions that have a histogram configured can be grouped: in this case
+the number of histogram bins and their bounds must match exactly.
+
+On success the group list and newly created \fBgroup_id\fP are
+printed to stdout.
+
+The group metadata is stored with the first (lowest numbered)
+\fBregion_id\fP in the group: deleting this region will also delete
+the group and other group members will be returned to their prior
+state.
+.
+.HP
+.CMD_HELP
+.br
+Outputs a summary of the commands available, optionally including
+the list of report fields.
+.
+.HP
+.CMD_LIST
+.br
+List the statistics regions, areas, or groups registered on the device.
+If the \fB\-\-allprograms\fP switch is given all regions will be listed
+regardless of region program ID values.
+
+By default only regions and groups are included in list output. If
+\fB\-v\fP or \fB\-\-verbose\fP is given the report will also include a
+row of information for each configured group and for each area contained
+in each region displayed.
+
+Regions that contain a single area are by default omitted from the
+verbose list since their properties are identical to the area that they
+contain - to view all regions regardless of the number of areas present
+use \fB\-\-region\fP). To also view the areas contained within regions
+use \fB\-\-area\fP.
+
+If \fB\-\-histogram\fP is given the report will include the bin count
+and latency boundary values for any configured histograms.
+.HP
+.CMD_PRINT
+.br
+Print raw statistics counters for the specified region or for all
+present regions.
+.
+.HP
+.CMD_REPORT
+.br
+Start a report for the specified object or for all present objects. If
+the count argument is specified, the report will repeat at a fixed
+interval set by the \fB\-\-interval\fP option. The default interval is
+one second.
+
+If the \fB\-\-allprograms\fP switch is given, all regions will be
+listed, regardless of region program ID values.
+
+If the \fB\-\-histogram\fP is given the report will include the histogram
+values and latency boundaries.
+
+If the \fB\-\-relative\fP is used the default histogram field displays
+bin values as a percentage of the total number of I/Os.
+
+Object types (areas, regions and groups) to include in the report are
+selected using the \fB\-\-area\fP, \fB\-\-region\fP, and \fB\-\-group\fP
+options.
+.
+.HP
+.CMD_UNGROUP
+.br
+Remove an existing group and return all the group's regions to their
+original state.
+
+The group to be removed is specified using \fB\-\-groupid\fP.
+.HP
+.CMD_UPDATE_FILEMAP
+.br
+Update a group of \fBdmstats\fP regions specified by \fBgroup_id\fP,
+that were previously created with \fB\-\-filemap\fP, either directly,
+or by starting the monitoring daemon, \fBdmfilemapd\fP.
+
+This will add and remove regions to reflect changes in the allocated
+extents of the file on-disk, since the time that it was crated or last
+updated.
+
+Use of this command is not normally needed since the \fBdmfilemapd\fP
+daemon will automatically monitor filemap groups and perform these
+updates when required.
+
+If a filemapped group was created with \fB\-\-nomonitor\fP, or the
+daemon has been killed, the \fBupdate_filemap\fP can be used to
+manually force an update or start a new daemon.
+
+Use \fB\-\-nomonitor\fP to force a direct update and disable starting
+the monitoring daemon.
+.
+.SH REGIONS, AREAS, AND GROUPS
+.
+The device-mapper statistics facility allows separate performance
+counters to be maintained for arbitrary regions of devices. A region may
+span any range: from a single sector to the whole device. A region may
+be further sub-divided into a number of distinct areas (one or more),
+each with its own counter set. In this case a summary value for the
+entire region is also available for use in reports.
+
+In addition, one or more regions on one device can be combined into
+a statistics group. Groups allow several regions to be aggregated and
+reported as a single entity; counters for all regions and areas are
+summed and used to report totals for all group members. Groups also
+permit the assignment of an optional alias, allowing meaningful names
+to be associated with sets of regions.
+
+The group metadata is stored with the first (lowest numbered)
+\fBregion_id\fP in the group: deleting this region will also delete
+the group and other group members will be returned to their prior
+state.
+
+By default new regions span the entire device. The \fB\-\-start\fP and
+\fB\-\-length\fP options allows a region of any size to be placed at any
+location on the device.
+
+Using offsets it is possible to create regions that map individual
+objects within a block device (for example: partitions, files in a file
+system, or stripes or other structures in a RAID volume). Groups allow
+several non-contiguous regions to be assembled together for reporting
+and data aggregation.
+
+A region may be either divided into the specified number of equal-sized
+areas, or into areas of the given size by specifying one of
+\fB\-\-areas\fP or \fB\-\-areasize\fP when creating a region with the
+\fBcreate\fP command. Depending on the size of the areas and the device
+region the final area within the region may be smaller than requested.
+.P
+.B Region identifiers
+.P
+Each region is assigned an identifier when it is created that is used to
+reference the region in subsequent operations. Region identifiers are
+unique within a given device (including across different \fBprogram_id\fP
+values).
+
+Depending on the sequence of create and delete operations, gaps may
+exist in the sequence of \fBregion_id\fP values for a particular device.
+
+The \fBregion_id\fP should be treated as an opaque identifier used to
+reference the region.
+.
+.P
+.B Group identifiers
+.P
+Groups are also assigned an integer identifier at creation time;
+like region identifiers, group identifiers are unique within the
+containing device.
+
+The \fBgroup_id\fP should be treated as an opaque identifier used to
+reference the group.
+.
+.SH FILE MAPPING
+.
+Using \fB\-\-filemap\fP, it is possible to create regions that
+correspond to the extents of a file in the file system. This allows
+IO statistics to be monitored on a per-file basis, for example to
+observe large database files, virtual machine images, or other files
+of interest.
+
+To be able to use file mapping, the file must be backed by a
+device-mapper device, and in a file system that supports the FIEMAP
+ioctl (and which returns data describing the physical location of
+extents). This currently includes \fBxfs(5)\fP and \fBext4(5)\fP.
+
+By default the regions making up a file are placed together in a
+group, and the group alias is set to the \fBbasename(3)\fP of the
+file. This allows statistics to be reported for the file as a whole,
+aggregating values for the regions making up the group. To see only
+the whole file (group) when using the \fBlist\fP and \fBreport\fP
+commands, use \fB\-\-group\fP.
+
+Since it is possible for the file to change after the initial
+group of regions is created, the \fBupdate_filemap\fP command, and
+\fBdmfilemapd\fP daemon are provided to update file mapped groups
+either manually or automatically.
+.
+.P
+.B File follow modes
+.P
+The file map monitoring daemon can monitor files in two distinct ways:
+follow-inode mode, and follow-path mode.
+
+The mode affects the behaviour of the daemon when a file under
+monitoring is renamed or unlinked, and the conditions which cause the
+daemon to terminate.
+
+If follow-inode mode is used, the daemon will hold the file open, and
+continue to update regions from the same file descriptor. This means
+that the mapping will follow rename, move (within the same file
+system), and unlink operations. This mode is useful if the file is
+expected to be moved, renamed, or unlinked while it is being
+monitored.
+
+In follow-inode mode, the daemon will exit once it detects that the
+file has been unlinked and it is the last holder of a reference to it.
+
+If follow-path is used, the daemon will re-open the provided path on
+each monitoring iteration. This means that the group will be updated
+to reflect a new file being moved to the same path as the original
+file. This mode is useful for files that are expected to be updated
+via unlink and rename.
+
+In follow-path mode, the daemon will exit if the file is removed and
+not replaced within a brief tolerance interval (one second).
+
+To stop the daemon, delete the group containing the mapped regions:
+the daemon will automatically shut down.
+
+The daemon can also be safely killed at any time and the group kept:
+if the file is still being allocated the mapping will become
+progressively out-of-date as extents are added and removed (in this
+case the daemon can be re-started or the group updated manually with
+the \fBupdate_filemap\fP command).
+
+See the \fBcreate\fP command and \fB\-\-filemap\fP, \fB\-\-follow\fP,
+and \fB\-\-nomonitor\fP options for further information.
+.
+.P
+.B Limitations
+.P
+The daemon attempts to maintain good synchronisation between the file
+extents and the regions contained in the group, however, since it can
+only react to new allocations once they have been written, there are
+inevitably some IO events that cannot be counted when a file is
+growing, particularly if the file is being extended by a single thread
+writing beyond end-of-file (for example, the \fBdd\fP program).
+
+There is a further loss of events in that there is currently no way
+to atomically resize a \fBdmstats\fP region and preserve its current
+counter values. This affects files when they grow by extending the
+final extent, rather than allocating a new extent: any events that
+had accumulated in the region between any prior operation and the
+resize are lost.
+
+File mapping is currently most effective in cases where the majority
+of IO does not trigger extent allocation. Future updates may address
+these limitations when kernel support is available.
+.
+.SH REPORT FIELDS
+.
+The dmstats report provides several types of field that may be added to
+the default field set, or used to create custom reports.
+
+All performance counters and metrics are calculated per-area.
+.
+.SS Derived metrics
+.
+A number of metrics fields are included that provide high level
+performance indicators. These are based on the fields provided by the
+conventional Linux iostat program and are derived from the basic counter
+values provided by the kernel for each area.
+.TP
+.B reads_merged_per_sec
+Reads merged per second.
+.TP
+.B writes_merged_per_sec
+Writes merged per second.
+.TP
+.B reads_per_sec
+Reads completed per second.
+.TP
+.B writes_per_sec
+Writes completed per second.
+.TP
+.B read_size_per_sec
+Size of data read per second.
+.TP
+.B write_size_per_sec
+Size of data written per second.
+.TP
+.B avg_request_size
+Average request size.
+.TP
+.B queue_size
+Average queue size.
+.TP
+.B await
+The average wait time for read and write operations.
+.TP
+.B r_await
+The average wait time for read operations.
+.TP
+.B w_await
+The average wait time for write operations.
+.TP
+.B throughput
+The device throughput in operations per second.
+.TP
+.B service_time
+The average service time (in milliseconds) for operations issued
+to the device.
+.TP
+.B util
+Percentage of CPU time during which I/O requests were issued to the
+device (bandwidth utilization for the device). Device saturation occurs
+when this value is close to 100%.
+.
+.SS Group, region and area meta fields
+.
+Meta fields provide information about the groups, regions, or areas that
+the statistics values relate to. This includes the region and area
+identifier, start, length, and counts, as well as the program ID and
+user data values.
+.TP
+.B region_id
+Region identifier. This is a non-negative integer returned by the kernel
+when a statistics region is created.
+.TP
+.B region_start
+The region start location. Display units are selected by the
+\fB\-\-units\fP option.
+.TP
+.B region_len
+The length of the region. Display units are selected by the
+\fB\-\-units\fP option.
+.TP
+.B area_id
+Area identifier. Area identifiers are assigned by the device-mapper
+statistics library and uniquely identify each area within a region. Each
+ID corresponds to a distinct set of performance counters for that area
+of the statistics region. Area identifiers are always monotonically
+increasing within a region so that higher ID values correspond to
+greater sector addresses within the area and no gaps in the sequence of
+identifiers exist.
+.TP
+.B area_start
+The area start location. Display units are selected by the
+\fB\-\-units\fP option.
+.TP
+.B area_len
+The length of the area. Display units are selected by the
+\fB\-\-units\fP option.
+.TP
+.B area_count
+The number of areas in this region.
+.TP
+.B program_id
+The program ID value associated with this region.
+.TP
+.B user_data
+The user data value associated with this region.
+.TP
+.B group_id
+Group identifier. This is a non-negative integer returned by the dmstats
+\fBgroup\fP command when a statistics group is created.
+.TP
+.B interval_ns
+The estimated interval over which the current counter values have
+accumulated. The value is reported as an interger expressed in units
+of nanoseconds.
+.TP
+.B interval
+The estimated interval over which the current counter values have
+accumulated. The value is reported as a real number in units of
+seconds.
+.
+.SS Basic counters
+.
+Basic counters provide access to the raw counter data from the kernel,
+allowing further processing to be carried out by another program.
+.P
+The kernel provides thirteen separate counters for each statistics
+area. The first eleven of these match the counters provided in
+/proc/diskstats or /sys/block/*/*/stat. The final pair provide separate
+counters for read and write time.
+.TP
+.B read_count
+Count of reads completed this interval.
+.TP
+.B reads_merged_count
+Count of reads merged this interval.
+.TP
+.B read_sector_count
+Count of 512 byte sectors read this interval.
+.TP
+.B read_time
+Accumulated duration of all read requests (ns).
+.TP
+.B write_count
+Count of writes completed this interval.
+.TP
+.B writes_merged_count
+Count of writes merged this interval.
+.TP
+.B write_sector_count
+Count of 512 byte sectors written this interval.
+.TP
+.B write_time
+Accumulated duration of all write requests (ns).
+.TP
+.B in_progress_count
+Count of requests currently in progress.
+.TP
+.B io_ticks
+Nanoseconds spent servicing requests.
+.TP
+.B queue_ticks
+This field is incremented at each I/O start, I/O completion, I/O merge,
+or read of these stats by the number of I/Os in progress multiplied by
+the number of milliseconds spent doing I/O since the last update of this
+field.  This can provide an easy measure of both I/O completion time and
+the backlog that may be accumulating.
+.TP
+.B read_ticks
+Nanoseconds spent servicing reads.
+.TP
+.B write_ticks
+Nanoseconds spent servicing writes.
+.
+.SS Histogram fields
+.
+Histograms measure the frequency distribution of user specified I/O
+latency intervals. Histogram bin boundaries are specified when a region
+is created.
+.P
+A brief representation of the histogram values and latency intervals can
+be included in the report using these fields.
+.TP
+.B hist_count
+A list of the histogram counts for the current statistics area in order
+of ascending latency value. Each value represents the number of I/Os
+with latency times falling into that bin's time range during the sample
+period.
+.TP
+.B hist_count_bounds
+A list of the histogram counts for the current statistics area in order
+of ascending latency value including bin boundaries: each count is
+prefixed by the lower bound of the corresponding histogram bin.
+.TP
+.B hist_count_ranges
+A list of the histogram counts for the current statistics area in order
+of ascending latency value including bin boundaries: each count is
+prefixed by both the lower and upper bounds of the corresponding
+histogram bin.
+.TP
+.B hist_percent
+A list of the relative histogram values for the current statistics area
+in order of ascending latency value, expressed as a percentage. Each
+value represents the proportion of I/Os with latency times falling into
+that bin's time range during the sample period.
+.TP
+.B hist_percent_bounds
+A list of the relative histogram values for the current statistics area
+in order of ascending latency value, expressed as a percentage and
+including bin boundaries. Each value represents the proportion of I/Os
+with latency times falling into that bin's time range during the sample
+period and is prefixed with the corresponding bin's lower bound.
+.TP
+.B hist_percent_ranges
+A list of the relative histogram values for the current statistics area
+in order of ascending latency value, expressed as a percentage and
+including bin boundaries. Each value represents the proportion of I/Os
+with latency times falling into that bin's time range during the sample
+period and is prefixed with the corresponding bin's lower and upper
+bounds.
+.TP
+.B hist_bounds
+A list of the histogram boundary values for the current statistics area
+in order of ascending latency value.  The values are expressed in whole
+units of seconds, miliseconds, microseconds or nanoseconds with a suffix
+indicating the unit.
+.TP
+.B hist_ranges
+A list of the histogram bin ranges for the current statistics area in
+order of ascending latency value.  The values are expressed as
+"LOWER-UPPER" in whole units of seconds, miliseconds, microseconds or
+nanoseconds with a suffix indicating the unit.
+.TP
+.B hist_bins
+The number of latency histogram bins configured for the area.
+.
+.SH EXAMPLES
+.
+Create a whole-device region with one area on vg00/lvol1
+.br
+#
+.B dmstats create vg00/lvol1
+.br
+vg00/lvol1: Created new region with 1 area(s) as region ID 0
+.P
+Create a 32M region 1G into device d0
+.br
+#
+.B dmstats create \-\-start 1G \-\-length 32M d0
+.br
+d0: Created new region with 1 area(s) as region ID 0
+.P
+Create a whole-device region with 8 areas on every device
+.br
+.br
+#
+.B dmstats create \-\-areas 8
+.br
+vg00-lvol1: Created new region with 8 area(s) as region ID 0
+.br
+vg00-lvol2: Created new region with 8 area(s) as region ID 0
+.br
+vg00-lvol3: Created new region with 8 area(s) as region ID 0
+.br
+vg01-lvol0: Created new region with 8 area(s) as region ID 2
+.br
+vg01-lvol1: Created new region with 8 area(s) as region ID 0
+.br
+vg00-lvol2: Created new region with 8 area(s) as region ID 1
+.P
+Delete all regions on all devices
+.br
+.br
+#
+.B dmstats delete \-\-alldevices \-\-allregions
+.P
+Create a whole-device region with areas 10GiB in size on vg00/lvol1
+using dmsetup
+.br
+.br
+#
+.B dmsetup stats create \-\-areasize 10G vg00/lvol1
+.br
+vg00-lvol1: Created new region with 5 area(s) as region ID 1
+.P
+Create a 1GiB region with 16 areas at the start of vg00/lvol1
+.br
+#
+.B dmstats create \-\-start 0 \-\-len 1G \-\-areas=16 vg00/lvol1
+.br
+vg00-lvol1: Created new region with 16 area(s) as region ID 0
+.P
+List the statistics regions registered on vg00/lvol1
+.br
+#
+.B dmstats list vg00/lvol1
+.br
+Name             RgID  RStart RSize  #Areas ASize  ProgID
+.br
+vg00-lvol1           0      0 61.00g      1 61.00g dmstats
+.br
+vg00-lvol1           1 61.00g 19.20g      1 19.20g dmstats
+.br
+vg00-lvol1           2 80.20g  2.14g      1  2.14g dmstats
+.P
+Display five statistics reports for vg00/lvol1 at an interval of one second
+.br
+.br
+#
+.B dmstats report \-\-interval 1 \-\-count 5 vg00/lvol1
+.br
+#
+.B dmstats report
+.br
+Name             RgID  ArID  AStart ASize  RRqM/s   WRqM/s   R/s   W/s    RSz/s WSz/s   AvRqSz  QSize Util%      AWait RdAWa WrAWa
+.br
+vg_hex-lv_home       0     0      0 61.00g     0.00     0.00  0.00 218.00     0   1.04m   4.50k  2.97      81.70 13.62  0.00 13.62
+.br
+vg_hex-lv_home       1     0 61.00g 19.20g     0.00     0.00  0.00   5.00     0 548.00k 109.50k  0.14      11.00 27.40  0.00 27.40
+.br
+vg_hex-lv_home       2     0 80.20g  2.14g     0.00     0.00  0.00  14.00     0   1.15m  84.00k  0.39      18.70 27.71  0.00 27.71
+.P
+Create one region for reach target contained in device vg00/lvol1
+.br
+.br
+#
+.B dmstats create \-\-segments vg00/lvol1
+.br
+vg00-lvol1: Created new region with 1 area(s) as region ID 0
+.br
+vg00-lvol1: Created new region with 1 area(s) as region ID 1
+.br
+vg00-lvol1: Created new region with 1 area(s) as region ID 2
+.P
+Create regions mapping each file in the directory images/ and place
+them into separate groups, each named after the corresponding file
+.br
+#
+.B dmstats create --filemap images/*
+.br
+images/vm1.qcow2: Created new group with 87 region(s) as group ID 0.
+.br
+images/vm1-1.qcow2: Created new group with 8 region(s) as group ID 87.
+.br
+images/vm2.qcow2: Created new group with 11 region(s) as group ID 95.
+.br
+images/vm2-1.qcow2: Created new group with 1454 region(s) as group ID 106.
+.br
+images/vm3.img: Created new group with 2 region(s) as group ID 1560.
+.P
+Print raw counters for region 4 on device d0
+.br
+#
+.B dmstats print \-\-regionid 4 d0
+.br
+2097152+65536 0 0 0 0 29 0 264 701 0 41 701 0 41
+.
+.SH AUTHORS
+.
+Bryn M. Reeves <bmr at redhat.com>
+.
+.SH SEE ALSO
+.
+.BR dmsetup (8)
+
+LVM2 resource page: https://www.sourceware.org/lvm2/
+.br
+Device-mapper resource page: http://sources.redhat.com/dm/
+.br
+
+Device-mapper statistics kernel documentation
+.br
+.I Documentation/device-mapper/statistics.txt
diff --git a/man/fsadm.8.in b/man/fsadm.8.in
deleted file mode 100644
index 02431c5..0000000
--- a/man/fsadm.8.in
+++ /dev/null
@@ -1,114 +0,0 @@
-.TH "FSADM" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-.SH "NAME"
-fsadm \(em utility to resize or check filesystem on a device
-.SH SYNOPSIS
-.
-.PD 0
-.ad l
-.HP 5
-.B fsadm
-.RI [ options ]
-.BR check
-.IR device
-.
-.HP
-.B fsadm
-.RI [ options ]
-.BR resize
-.IR device
-.RI [ new_size ]
-.PD
-.ad b
-.
-.SH DESCRIPTION
-.
-fsadm utility checks or resizes the filesystem on a device.
-It tries to use the same API for
-.BR ext2 ,
-.BR ext3 ,
-.BR ext4 ,
-.BR ReiserFS
-.RB and
-.BR XFS
-filesystem.
-.
-.SH OPTIONS
-.
-.HP
-.BR \-e | \-\-ext\-offline
-.br
-Unmount ext2/ext3/ext4 filesystem before doing resize.
-.
-.HP
-.BR \-f | \-\-force
-.br
-Bypass some sanity checks.
-.
-.HP
-.BR \-h | \-\-help
-.br
-Display the help text.
-.
-.HP
-.BR \-n | \-\-dry\-run
-.br
-Print commands without running them.
-.
-.HP
-.BR \-v | \-\-verbose
-.br
-Be more verbose.
-.
-.HP
-.BR \-y | \-\-yes
-.br
-Answer "yes" at any prompts.
-.
-.HP
-.BR \fInew_size [ B | K | M | G | T | P | E ]
-.br
-Absolute number of filesystem blocks to be in the filesystem,
-or an absolute size using a suffix (in powers of 1024).
-If new_size is not supplied, the whole device is used.
-.
-.SH DIAGNOSTICS
-.
-On successful completion, the status code is 0.
-A status code of 2 indicates the operation was interrupted by the user.
-A status code of 3 indicates the requested check operation could not be performed
-because the filesystem is mounted and does not support an online
-.BR fsck (8).
-A status code of 1 is used for other failures.
-.
-.SH EXAMPLES
-.
-Resize the filesystem on logical volume \fI/dev/vg/test\fP to 1000 megabytes.
-If \fI/dev/vg/test\fP contains ext2/ext3/ext4
-filesystem it will be unmounted prior the resize.
-All [y/n] questions will be answered 'y'.
-.sp
-.B fsadm \-e \-y resize /dev/vg/test 1000M
-.
-.SH ENVIRONMENT VARIABLES
-.
-.TP
-.B "TMPDIR   "
-The temporary directory name for mount points. Defaults to "\fI/tmp\fP".
-.TP
-.B DM_DEV_DIR
-The device directory name.
-Defaults to "\fI/dev\fP" and must be an absolute path.
-
-.SH SEE ALSO
-.nh
-.BR lvm (8),
-.BR lvresize (8),
-.BR lvm.conf (5),
-.BR fsck (8),
-.BR tune2fs (8),
-.BR resize2fs (8),
-.BR reiserfstune (8),
-.BR resize_reiserfs (8),
-.BR xfs_info (8),
-.BR xfs_growfs (8),
-.BR xfs_check (8)
diff --git a/man/fsadm.8_main b/man/fsadm.8_main
new file mode 100644
index 0000000..02431c5
--- /dev/null
+++ b/man/fsadm.8_main
@@ -0,0 +1,114 @@
+.TH "FSADM" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+.SH "NAME"
+fsadm \(em utility to resize or check filesystem on a device
+.SH SYNOPSIS
+.
+.PD 0
+.ad l
+.HP 5
+.B fsadm
+.RI [ options ]
+.BR check
+.IR device
+.
+.HP
+.B fsadm
+.RI [ options ]
+.BR resize
+.IR device
+.RI [ new_size ]
+.PD
+.ad b
+.
+.SH DESCRIPTION
+.
+fsadm utility checks or resizes the filesystem on a device.
+It tries to use the same API for
+.BR ext2 ,
+.BR ext3 ,
+.BR ext4 ,
+.BR ReiserFS
+.RB and
+.BR XFS
+filesystem.
+.
+.SH OPTIONS
+.
+.HP
+.BR \-e | \-\-ext\-offline
+.br
+Unmount ext2/ext3/ext4 filesystem before doing resize.
+.
+.HP
+.BR \-f | \-\-force
+.br
+Bypass some sanity checks.
+.
+.HP
+.BR \-h | \-\-help
+.br
+Display the help text.
+.
+.HP
+.BR \-n | \-\-dry\-run
+.br
+Print commands without running them.
+.
+.HP
+.BR \-v | \-\-verbose
+.br
+Be more verbose.
+.
+.HP
+.BR \-y | \-\-yes
+.br
+Answer "yes" at any prompts.
+.
+.HP
+.BR \fInew_size [ B | K | M | G | T | P | E ]
+.br
+Absolute number of filesystem blocks to be in the filesystem,
+or an absolute size using a suffix (in powers of 1024).
+If new_size is not supplied, the whole device is used.
+.
+.SH DIAGNOSTICS
+.
+On successful completion, the status code is 0.
+A status code of 2 indicates the operation was interrupted by the user.
+A status code of 3 indicates the requested check operation could not be performed
+because the filesystem is mounted and does not support an online
+.BR fsck (8).
+A status code of 1 is used for other failures.
+.
+.SH EXAMPLES
+.
+Resize the filesystem on logical volume \fI/dev/vg/test\fP to 1000 megabytes.
+If \fI/dev/vg/test\fP contains ext2/ext3/ext4
+filesystem it will be unmounted prior the resize.
+All [y/n] questions will be answered 'y'.
+.sp
+.B fsadm \-e \-y resize /dev/vg/test 1000M
+.
+.SH ENVIRONMENT VARIABLES
+.
+.TP
+.B "TMPDIR   "
+The temporary directory name for mount points. Defaults to "\fI/tmp\fP".
+.TP
+.B DM_DEV_DIR
+The device directory name.
+Defaults to "\fI/dev\fP" and must be an absolute path.
+
+.SH SEE ALSO
+.nh
+.BR lvm (8),
+.BR lvresize (8),
+.BR lvm.conf (5),
+.BR fsck (8),
+.BR tune2fs (8),
+.BR resize2fs (8),
+.BR reiserfstune (8),
+.BR resize_reiserfs (8),
+.BR xfs_info (8),
+.BR xfs_growfs (8),
+.BR xfs_check (8)
diff --git a/man/lvchange.8.des b/man/lvchange.8.des
deleted file mode 100644
index 7aa8ce7..0000000
--- a/man/lvchange.8.des
+++ /dev/null
@@ -1,2 +0,0 @@
-lvchange changes LV attributes in the VG, changes LV activation in the
-kernel, and includes other utilities for LV maintenance.
diff --git a/man/lvchange.8.end b/man/lvchange.8.end
deleted file mode 100644
index 7134e46..0000000
--- a/man/lvchange.8.end
+++ /dev/null
@@ -1,6 +0,0 @@
-.SH EXAMPLES
-
-Change LV permission to read-only:
-.sp
-.B lvchange \-pr vg00/lvol1
-
diff --git a/man/lvchange.8_des b/man/lvchange.8_des
new file mode 100644
index 0000000..7aa8ce7
--- /dev/null
+++ b/man/lvchange.8_des
@@ -0,0 +1,2 @@
+lvchange changes LV attributes in the VG, changes LV activation in the
+kernel, and includes other utilities for LV maintenance.
diff --git a/man/lvchange.8_end b/man/lvchange.8_end
new file mode 100644
index 0000000..7134e46
--- /dev/null
+++ b/man/lvchange.8_end
@@ -0,0 +1,6 @@
+.SH EXAMPLES
+
+Change LV permission to read-only:
+.sp
+.B lvchange \-pr vg00/lvol1
+
diff --git a/man/lvchange.8_pregen b/man/lvchange.8_pregen
new file mode 100644
index 0000000..cba3830
--- /dev/null
+++ b/man/lvchange.8_pregen
@@ -0,0 +1,1272 @@
+.TH LVCHANGE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvchange \- Change the attributes of logical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvchange\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.P
+.ad l
+ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.ad b
+.br
+.ad l
+    \fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP
+.ad b
+.br
+.ad l
+    \fB--addtag\fP \fITag\fP
+.ad b
+.br
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.ad b
+.br
+.ad l
+    \fB--cachepolicy\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--cachesettings\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--deltag\fP \fITag\fP
+.ad b
+.br
+.ad l
+    \fB--detachprofile\fP
+.ad b
+.br
+.ad l
+    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+ \fB-K\fP|\fB--ignoreactivationskip\fP
+.ad b
+.br
+.ad l
+    \fB--ignorelockingfailure\fP
+.ad b
+.br
+.ad l
+    \fB--ignoremonitoring\fP
+.ad b
+.br
+.ad l
+    \fB--ignoreskippedcluster\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-j\fP|\fB--major\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--metadataprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--minor\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--monitor\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+ \fB-P\fP|\fB--partial\fP
+.ad b
+.br
+.ad l
+ \fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP
+.ad b
+.br
+.ad l
+ \fB-M\fP|\fB--persistent\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--poll\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--rebuild\fP \fIPV\fP
+.ad b
+.br
+.ad l
+    \fB--refresh\fP
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+    \fB--resync\fP
+.ad b
+.br
+.ad l
+ \fB-S\fP|\fB--select\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]syncaction\fP \fBcheck\fP|\fBrepair\fP
+.ad b
+.br
+.ad l
+    \fB--sysinit\fP
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]writebehind\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]writemostly\fP \fIPV\fP[\fB:t\fP|\fBn\fP|\fBy\fP]
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+.br
+.ad l
+ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+lvchange changes LV attributes in the VG, changes LV activation in the
+kernel, and includes other utilities for LV maintenance.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Change a general LV attribute. 
+.br
+For options listed in parentheses, any one is 
+.br
+required, after which the others are optional.
+.br
+.P
+\fBlvchange\fP
+.RS 4
+( \fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP,
+.ad b
+.br
+.ad l
+  \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP,
+.ad b
+.br
+.ad l
+  \fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-M\fP|\fB--persistent\fP \fBn\fP,
+.ad b
+.br
+.ad l
+     \fB--addtag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--deltag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP,
+.ad b
+.br
+.ad l
+     \fB--detachprofile\fP,
+.ad b
+.br
+.ad l
+     \fB--metadataprofile\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--profile\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--errorwhenfull\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+     \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP,
+.ad b
+.br
+.ad l
+     \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP,
+.ad b
+.br
+.ad l
+     \fB--cachepolicy\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--cachesettings\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT],
+.ad b
+.br
+.ad l
+     \fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT],
+.ad b
+.br
+.ad l
+     \fB--[raid]writebehind\fP \fINumber\fP,
+.ad b
+.br
+.ad l
+     \fB--[raid]writemostly\fP \fIPV\fP[\fB:t\fP|\fBn\fP|\fBy\fP] )
+.RE
+.RS 4
+ \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Resyncronize a mirror or raid LV.
+.br
+.P
+\fBlvchange\fP \fB--resync\fP \fIVG\fP|\fILV\fP\fI_mirror_raid\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Resynchronize or check a raid LV.
+.br
+.P
+\fBlvchange\fP \fB--syncaction\fP \fBcheck\fP|\fBrepair\fP \fIVG\fP|\fILV\fP\fI_raid\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Reconstruct data on specific PVs of a raid LV.
+.br
+.P
+\fBlvchange\fP \fB--rebuild\fP \fIPV\fP \fIVG\fP|\fILV\fP\fI_raid\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Activate or deactivate an LV.
+.br
+.P
+\fBlvchange\fP \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-K\fP|\fB--ignoreactivationskip\fP ]
+.ad b
+.br
+.ad l
+[    \fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--sysinit\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Reactivate an LV using the latest metadata.
+.br
+.P
+\fBlvchange\fP \fB--refresh\fP \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poll\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Start or stop monitoring an LV from dmeventd.
+.br
+.P
+\fBlvchange\fP \fB--monitor\fP \fBy\fP|\fBn\fP \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[    \fB--poll\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Start or stop processing an LV conversion.
+.br
+.P
+\fBlvchange\fP \fB--poll\fP \fBy\fP|\fBn\fP \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[    \fB--monitor\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Make the minor device number persistent for an LV.
+.br
+.P
+\fBlvchange\fP \fB-M\fP|\fB--persistent\fP \fBy\fP \fB--minor\fP \fINumber\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-j\fP|\fB--major\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoremonitoring\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.br
+Change the active state of LVs.
+An active LV can be used through a block device,
+allowing data on the LV to be accessed.
+\fBy\fP makes LVs active, or available.
+\fBn\fP makes LVs inactive, or unavailable.
+The block device for the LV is added or removed from the system
+using device-mapper in the kernel.
+A symbolic link /dev/VGName/LVName pointing to the device node is also added/removed.
+All software and scripts should access the device through the symbolic
+link and present this as the name of the device.
+The location and name of the underlying device node may depend on
+the distribution, configuration (e.g. udev), or release version.
+\fBay\fP specifies autoactivation, in which case an LV is activated
+only if it matches an item in lvm.conf activation/auto_activation_volume_list.
+If the list is not set, all LVs are considered to match, and if
+if the list is set but empty, no LVs match.
+Autoactivation should be used during system boot to make it possible
+to select which LVs should be automatically activated by the system.
+See lvmlockd(8) for more information about activation options \fBey\fP and \fBsy\fP for shared VGs.
+See clvmd(8) for more information about activation options \fBey\fP, \fBsy\fP, \fBly\fP and \fBln\fP for clustered VGs.
+.ad b
+
+.HP
+.ad l
+\fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP
+.br
+Determines if LV activation is allowed when PVs are missing,
+e.g. because of a device failure.
+\fBcomplete\fP only allows LVs with no missing PVs to be activated,
+and is the most restrictive mode.
+\fBdegraded\fP allows RAID LVs with missing PVs to be activated.
+(This does not include the "mirror" type, see "raid1" instead.)
+\fBpartial\fP allows any LV with missing PVs to be activated, and
+should only be used for recovery or repair.
+For default, see lvm.conf/activation_mode.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--addtag\fP \fITag\fP
+.br
+Adds a tag to a PV, VG or LV. This option can be repeated to add
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.br
+Specifies when writes to a cache LV should be considered complete.
+\fBwriteback\fP considers a write complete as soon as it is
+stored in the cache pool.
+\fBwritethough\fP considers a write complete only when it has
+been stored in both the cache pool and on the origin LV.
+While writethrough may be slower for writes, it is more
+resilient if something should happen to a device associated with the
+cache pool LV. With \fBpassthrough\fP, all reads are served
+from the origin LV (all reads miss the cache) and all writes are
+forwarded to the origin LV; additionally, write hits cause cache
+block invalidates. See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachepolicy\fP \fIString\fP
+.br
+Specifies the cache policy for a cache LV.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachesettings\fP \fIString\fP
+.br
+Specifies tunable values for a cache LV in "Key = Value" form.
+Repeat this option to specify multiple values.
+(The default values should usually be adequate.)
+The special string value \fBdefault\fP switches
+settings back to their default kernel values and removes
+them from the list of settings stored in LVM metadata.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP
+.br
+Sets or resets the contiguous allocation policy for LVs.
+Default is no contiguous allocation based on a next free principle.
+It is only possible to change a non-contiguous allocation policy
+to contiguous if all of the allocated physical extents in the LV
+are already contiguous.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--deltag\fP \fITag\fP
+.br
+Deletes a tag from a PV, VG or LV. This option can be repeated to delete
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--detachprofile\fP
+.br
+Detaches a metadata profile from a VG or LV.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.br
+Specifies how the device-mapper thin pool layer in the kernel should
+handle discards.
+\fBignore\fP causes the thin pool to ignore discards.
+\fBnopassdown\fP causes the thin pool to process discards itself to
+allow reuse of unneeded extents in the thin pool.
+\fBpassdown\fP causes the thin pool to process discards itself
+(like nopassdown) and pass the discards to the underlying device.
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--errorwhenfull\fP \fBy\fP|\fBn\fP
+.br
+Specifies thin pool behavior when data space is exhausted.
+When yes, device-mapper will immediately return an error
+when a thin pool is full and an I/O request requires space.
+When no, device-mapper will queue these I/O requests for a
+period of time to allow the thin pool to be extended.
+Errors are returned if no space is available after the timeout.
+(Also see dm-thin-pool kernel module option no_space_timeout.)
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-K\fP|\fB--ignoreactivationskip\fP
+.br
+Ignore the "activation skip" LV flag during activation
+to allow LVs with the flag set to be activated.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoremonitoring\fP
+.br
+Do not interact with dmeventd unless --monitor is specified.
+Do not use this if dmeventd is already monitoring a device.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-j\fP|\fB--major\fP \fINumber\fP
+.br
+Sets the major number of an LV block device.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT]
+.br
+Sets the maximum recovery rate for a RAID LV.  The rate value
+is an amount of data per second for each device in the array.
+Setting the rate to 0 means it will be unbounded.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--minor\fP \fINumber\fP
+.br
+Sets the minor number of an LV block device.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT]
+.br
+Sets the minimum recovery rate for a RAID LV.  The rate value
+is an amount of data per second for each device in the array.
+Setting the rate to 0 means it will be unbounded.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--monitor\fP \fBy\fP|\fBn\fP
+.br
+Start (yes) or stop (no) monitoring an LV with dmeventd.
+dmeventd monitors kernel events for an LV, and performs
+automated maintenance for the LV in reponse to specific events.
+See dmeventd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP
+.br
+Set access permission to read only \fBr\fP or read and write \fBrw\fP.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--persistent\fP \fBy\fP|\fBn\fP
+.br
+When yes, makes the specified minor number persistent.
+.ad b
+
+.HP
+.ad l
+\fB--poll\fP \fBy\fP|\fBn\fP
+.br
+When yes, start the background transformation of an LV.
+An incomplete transformation, e.g. pvmove or lvconvert interrupted
+by reboot or crash, can be restarted from the last checkpoint with --poll y.
+When no, background transformation of an LV will not occur, and the
+transformation will not complete. It may not be appropriate to immediately
+poll an LV after activation, in which case --poll n can be used to defer
+polling until a later --poll y command.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.br
+Sets read ahead sector count of an LV.
+\fBauto\fP is the default which allows the kernel to choose
+a suitable value automatically.
+\fBnone\fP is equivalent to zero.
+.ad b
+
+.HP
+.ad l
+\fB--rebuild\fP \fIPV\fP
+.br
+Selects a PV to rebuild in a raid LV. Multiple PVs can be rebuilt by
+repeating this option.
+Use this option in place of --resync or --syncaction repair when the
+PVs with corrupted data are known, and their data should be reconstructed
+rather than reconstructing default (rotating) data.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--refresh\fP
+.br
+If the LV is active, reload its metadata.
+This is not necessary in normal operation, but may be useful
+if something has gone wrong, or if some form of manual LV
+sharing is being used.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--resync\fP
+.br
+Initiates mirror synchronization. Synchronization generally happens
+automatically, but this option forces it to run.
+Also see --rebuild to synchronize a specific PV.
+During synchronization, data is read from the primary mirror device
+and copied to the others. This can take considerable time, during
+which the LV is without a complete redundant copy of the data.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP
+.br
+Persistently sets (yes) or clears (no) the "activation skip" flag on an LV.
+An LV with this flag set is not activated unless the
+--ignoreactivationskip option is used by the activation command.
+This flag is set by default on new thin snapshot LVs.
+The flag is not applied to deactivation.
+The current value of the flag is indicated in the lvs lv_attr bits.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]syncaction\fP \fBcheck\fP|\fBrepair\fP
+.br
+Initiate different types of RAID synchronization.
+This causes the RAID LV to read all data and parity
+blocks in the array and check for discrepancies
+(mismatches between mirrors or incorrect parity values).
+\fBcheck\fP will count but not correct discrepancies.
+\fBrepair\fP will correct discrepancies.
+See lvs for reporting discrepancies found or repaired.
+.ad b
+
+.HP
+.ad l
+\fB--sysinit\fP
+.br
+Indicates that vgchange/lvchange is being invoked from early system initialisation
+scripts (e.g. rc.sysinit or an initrd), before writable filesystems are
+available. As such, some functionality needs to be disabled and this option
+acts as a shortcut which selects an appropriate set of options. Currently,
+this is equivalent to using --ignorelockingfailure, --ignoremonitoring,
+--poll n, and setting env var LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES.
+When used in conjunction with lvmetad enabled and running,
+vgchange/lvchange skip autoactivation, and defer to pvscan autoactivation.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]writebehind\fP \fINumber\fP
+.br
+The maximum number of outstanding writes that are allowed to
+devices in a RAID1 LV that is marked write-mostly.
+Once this value is exceeded, writes become synchronous (i.e. all writes
+to the constituent devices must complete before the array signals the
+write has completed). Setting the value to zero clears the preference
+and allows the system to choose the value arbitrarily.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]writemostly\fP \fIPV\fP[\fB:t\fP|\fBn\fP|\fBy\fP]
+.br
+Mark a device in a RAID1 LV as write-mostly.  All reads
+to these drives will be avoided unless absolutely necessary. This keeps
+the number of I/Os to the drive to a minimum. The default behavior is to
+set the write-mostly attribute for the specified PV.
+It is also possible to remove the write-mostly flag by adding the
+suffix \fB:n\fP at the end of the PV name, or to toggle the value with
+the suffix \fB:t\fP. Repeat this option to change the attribute on
+multiple PVs.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+Set zeroing mode for thin pool. Note: already provisioned blocks from pool
+in non-zero mode are not cleared in unwritten parts when setting --zero y.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+LV followed by _<type> indicates that an LV of the
+given type is required. (raid represents raid<N> type)
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Change LV permission to read-only:
+.sp
+.B lvchange \-pr vg00/lvol1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvconvert.8.des b/man/lvconvert.8.des
deleted file mode 100644
index 0548c2c..0000000
--- a/man/lvconvert.8.des
+++ /dev/null
@@ -1,65 +0,0 @@
-lvconvert changes the LV type and includes utilities for LV data
-maintenance. The LV type controls data layout and redundancy.
-The LV type is also called the segment type or segtype.
-
-To display the current LV type, run the command:
-
-.B lvs \-o name,segtype
-.I LV
-
-The
-.B linear
-type is equivalent to the
-.B striped
-type when one stripe exists.
-In that case, the types can sometimes be used interchangably.
-
-In most cases, the
-.B mirror
-type is deprecated and the
-.B raid1
-type should be used.  They are both implementations of mirroring.
-
-In some cases, an LV is a single device mapper (dm) layer above physical
-devices.  In other cases, hidden LVs (dm devices) are layered between the
-visible LV and physical devices.  LVs in the middle layers are called sub LVs.
-A command run on a visible LV sometimes operates on a sub LV rather than
-the specified LV.  In other cases, a sub LV must be specified directly on
-the command line.
-
-Striped raid types are
-.B raid0/raid0_meta
-,
-.B raid5
-(an alias for raid5_ls),
-.B raid6
-(an alias for raid6_zr) and
-.B raid10
-(an alias for raid10_near).
-
-As opposed to mirroring, raid5 and raid6 stripe data and calculate parity
-blocks. The parity blocks can be used for data block recovery in case devices
-fail. A maximum number of one device in a raid5 LV may fail  and two in case
-of raid6. Striped raid types typically rotate the parity blocks for performance
-reasons thus avoiding contention on a single device.  Layouts of raid5 rotating
-parity blocks can be one of left-asymmetric (raid5_la), left-symmetric (raid5_ls
-with alias raid5), right-asymmetric (raid5_ra), right-symmetric (raid5_rs) and raid5_n,
-which doesn't rotate parity blocks.  Any \"_n\" layouts allow for conversion between
-raid levels (raid5_n -> raid6 or raid5_n -> striped/raid0/raid0_meta).
-raid6 layouts are zero-restart (raid6_zr with alias raid6), next-restart (raid6_nr),
-next-continue (raid6_nc). Additionally, special raid6 layouts for raid level conversions
-between raid5 and raid6 are raid6_ls_6, raid6_rs_6, raid6_la_6 and raid6_ra_6. Those
-correspond to their raid5 counterparts (e.g. raid5_rs can be directly converted to raid6_rs_6
-and vice-versa).
-raid10 (an alias for raid10_near) is currently limited to one data copy and even number of
-sub LVs. This is a mirror group layout thus a single sub LV may fail per mirror group
-without data loss.
-Striped raid types support converting the layout, their stripesize
-and their number of stripes.
-
-The striped raid types combined with raid1 allow for conversion from linear -> striped/raid0/raid0_meta
-and vice-versa by e.g. linear <-> raid1 <-> raid5_n (then adding stripes) <-> striped/raid0/raid0_meta.
-
-Sub LVs can be displayed with the command
-.B lvs -a
-
diff --git a/man/lvconvert.8.end b/man/lvconvert.8.end
deleted file mode 100644
index 5a3d475..0000000
--- a/man/lvconvert.8.end
+++ /dev/null
@@ -1,116 +0,0 @@
-.SH NOTES
-
-This previous command syntax would perform two different operations:
-.br
-\fBlvconvert --thinpool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
-.br
-If LV1 was not a thin pool, the command would convert LV1 to
-a thin pool, optionally using a specified LV for metadata.
-But, if LV1 was already a thin pool, the command would swap
-the current metadata LV with LV2 (for repair purposes.)
-
-In the same way, this previous command syntax would perform two different
-operations:
-.br
-\fBlvconvert --cachepool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
-.br
-If LV1 was not a cache pool, the command would convert LV1 to
-a cache pool, optionally using a specified LV for metadata.
-But, if LV1 was already a cache pool, the command would swap
-the current metadata LV with LV2 (for repair purposes.)
-
-.SH EXAMPLES
-
-Convert a linear LV to a two-way mirror LV.
-.br
-.B lvconvert \-\-type mirror \-\-mirrors 1 vg/lvol1
-
-Convert a linear LV to a two-way RAID1 LV.
-.br
-.B lvconvert \-\-type raid1 \-\-mirrors 1 vg/lvol1
-
-Convert a mirror LV to use an in\-memory log.
-.br
-.B lvconvert \-\-mirrorlog core vg/lvol1
-
-Convert a mirror LV to use a disk log.
-.br
-.B lvconvert \-\-mirrorlog disk vg/lvol1
-
-Convert a mirror or raid1 LV to a linear LV.
-.br
-.B lvconvert --type linear vg/lvol1
-
-Convert a mirror LV to a raid1 LV with the same number of images.
-.br
-.B lvconvert \-\-type raid1 vg/lvol1
-
-Convert a linear LV to a two-way mirror LV, allocating new extents from specific
-PV ranges.
-.br
-.B lvconvert \-\-mirrors 1 vg/lvol1 /dev/sda:0\-15 /dev/sdb:0\-15
-
-Convert a mirror LV to a linear LV, freeing physical extents from a specific PV.
-.br
-.B lvconvert \-\-type linear vg/lvol1 /dev/sda
-
-Split one image from a mirror or raid1 LV, making it a new LV.
-.br
-.B lvconvert \-\-splitmirrors 1 \-\-name lv_split vg/lvol1
-
-Split one image from a raid1 LV, and track changes made to the raid1 LV
-while the split image remains detached.
-.br
-.B lvconvert \-\-splitmirrors 1 \-\-trackchanges vg/lvol1
-
-Merge an image (that was previously created with \-\-splitmirrors and
-\-\-trackchanges) back into the original raid1 LV.
-.br
-.B lvconvert \-\-mergemirrors vg/lvol1_rimage_1
-
-Replace PV /dev/sdb1 with PV /dev/sdf1 in a raid1/4/5/6/10 LV.
-.br
-.B lvconvert \-\-replace /dev/sdb1 vg/lvol1 /dev/sdf1
-
-Replace 3 PVs /dev/sd[b-d]1 with PVs /dev/sd[f-h]1 in a raid1 LV.
-.br
-.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 \-\-replace /dev/sdd1
-.RS
-.B vg/lvol1 /dev/sd[fgh]1
-.RE
-
-Replace the maximum of 2 PVs /dev/sd[bc]1 with PVs /dev/sd[gh]1 in a raid6 LV.
-.br
-.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 vg/lvol1 /dev/sd[gh]1
-
-Convert an LV into a thin LV in the specified thin pool.  The existing LV
-is used as an external read\-only origin for the new thin LV.
-.br
-.B lvconvert \-\-type thin \-\-thinpool vg/tpool1 vg/lvol1
-
-Convert an LV into a thin LV in the specified thin pool.  The existing LV
-is used as an external read\-only origin for the new thin LV, and is
-renamed "external".
-.br
-.B lvconvert \-\-type thin \-\-thinpool vg/tpool1
-.RS
-.B \-\-originname external vg/lvol1
-.RE
-
-Convert an LV to a cache pool LV using another specified LV for cache pool
-metadata.
-.br
-.B lvconvert \-\-type cache-pool \-\-poolmetadata vg/poolmeta1 vg/lvol1
-
-Convert an LV to a cache LV using the specified cache pool and chunk size.
-.br
-.B lvconvert \-\-type cache \-\-cachepool vg/cpool1 \-c 128 vg/lvol1
-
-Detach and keep the cache pool from a cache LV.
-.br
-.B lvconvert \-\-splitcache vg/lvol1
-
-Detach and remove the cache pool from a cache LV.
-.br
-.B lvconvert \-\-uncache vg/lvol1
-
diff --git a/man/lvconvert.8_des b/man/lvconvert.8_des
new file mode 100644
index 0000000..0548c2c
--- /dev/null
+++ b/man/lvconvert.8_des
@@ -0,0 +1,65 @@
+lvconvert changes the LV type and includes utilities for LV data
+maintenance. The LV type controls data layout and redundancy.
+The LV type is also called the segment type or segtype.
+
+To display the current LV type, run the command:
+
+.B lvs \-o name,segtype
+.I LV
+
+The
+.B linear
+type is equivalent to the
+.B striped
+type when one stripe exists.
+In that case, the types can sometimes be used interchangably.
+
+In most cases, the
+.B mirror
+type is deprecated and the
+.B raid1
+type should be used.  They are both implementations of mirroring.
+
+In some cases, an LV is a single device mapper (dm) layer above physical
+devices.  In other cases, hidden LVs (dm devices) are layered between the
+visible LV and physical devices.  LVs in the middle layers are called sub LVs.
+A command run on a visible LV sometimes operates on a sub LV rather than
+the specified LV.  In other cases, a sub LV must be specified directly on
+the command line.
+
+Striped raid types are
+.B raid0/raid0_meta
+,
+.B raid5
+(an alias for raid5_ls),
+.B raid6
+(an alias for raid6_zr) and
+.B raid10
+(an alias for raid10_near).
+
+As opposed to mirroring, raid5 and raid6 stripe data and calculate parity
+blocks. The parity blocks can be used for data block recovery in case devices
+fail. A maximum number of one device in a raid5 LV may fail  and two in case
+of raid6. Striped raid types typically rotate the parity blocks for performance
+reasons thus avoiding contention on a single device.  Layouts of raid5 rotating
+parity blocks can be one of left-asymmetric (raid5_la), left-symmetric (raid5_ls
+with alias raid5), right-asymmetric (raid5_ra), right-symmetric (raid5_rs) and raid5_n,
+which doesn't rotate parity blocks.  Any \"_n\" layouts allow for conversion between
+raid levels (raid5_n -> raid6 or raid5_n -> striped/raid0/raid0_meta).
+raid6 layouts are zero-restart (raid6_zr with alias raid6), next-restart (raid6_nr),
+next-continue (raid6_nc). Additionally, special raid6 layouts for raid level conversions
+between raid5 and raid6 are raid6_ls_6, raid6_rs_6, raid6_la_6 and raid6_ra_6. Those
+correspond to their raid5 counterparts (e.g. raid5_rs can be directly converted to raid6_rs_6
+and vice-versa).
+raid10 (an alias for raid10_near) is currently limited to one data copy and even number of
+sub LVs. This is a mirror group layout thus a single sub LV may fail per mirror group
+without data loss.
+Striped raid types support converting the layout, their stripesize
+and their number of stripes.
+
+The striped raid types combined with raid1 allow for conversion from linear -> striped/raid0/raid0_meta
+and vice-versa by e.g. linear <-> raid1 <-> raid5_n (then adding stripes) <-> striped/raid0/raid0_meta.
+
+Sub LVs can be displayed with the command
+.B lvs -a
+
diff --git a/man/lvconvert.8_end b/man/lvconvert.8_end
new file mode 100644
index 0000000..5a3d475
--- /dev/null
+++ b/man/lvconvert.8_end
@@ -0,0 +1,116 @@
+.SH NOTES
+
+This previous command syntax would perform two different operations:
+.br
+\fBlvconvert --thinpool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
+.br
+If LV1 was not a thin pool, the command would convert LV1 to
+a thin pool, optionally using a specified LV for metadata.
+But, if LV1 was already a thin pool, the command would swap
+the current metadata LV with LV2 (for repair purposes.)
+
+In the same way, this previous command syntax would perform two different
+operations:
+.br
+\fBlvconvert --cachepool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
+.br
+If LV1 was not a cache pool, the command would convert LV1 to
+a cache pool, optionally using a specified LV for metadata.
+But, if LV1 was already a cache pool, the command would swap
+the current metadata LV with LV2 (for repair purposes.)
+
+.SH EXAMPLES
+
+Convert a linear LV to a two-way mirror LV.
+.br
+.B lvconvert \-\-type mirror \-\-mirrors 1 vg/lvol1
+
+Convert a linear LV to a two-way RAID1 LV.
+.br
+.B lvconvert \-\-type raid1 \-\-mirrors 1 vg/lvol1
+
+Convert a mirror LV to use an in\-memory log.
+.br
+.B lvconvert \-\-mirrorlog core vg/lvol1
+
+Convert a mirror LV to use a disk log.
+.br
+.B lvconvert \-\-mirrorlog disk vg/lvol1
+
+Convert a mirror or raid1 LV to a linear LV.
+.br
+.B lvconvert --type linear vg/lvol1
+
+Convert a mirror LV to a raid1 LV with the same number of images.
+.br
+.B lvconvert \-\-type raid1 vg/lvol1
+
+Convert a linear LV to a two-way mirror LV, allocating new extents from specific
+PV ranges.
+.br
+.B lvconvert \-\-mirrors 1 vg/lvol1 /dev/sda:0\-15 /dev/sdb:0\-15
+
+Convert a mirror LV to a linear LV, freeing physical extents from a specific PV.
+.br
+.B lvconvert \-\-type linear vg/lvol1 /dev/sda
+
+Split one image from a mirror or raid1 LV, making it a new LV.
+.br
+.B lvconvert \-\-splitmirrors 1 \-\-name lv_split vg/lvol1
+
+Split one image from a raid1 LV, and track changes made to the raid1 LV
+while the split image remains detached.
+.br
+.B lvconvert \-\-splitmirrors 1 \-\-trackchanges vg/lvol1
+
+Merge an image (that was previously created with \-\-splitmirrors and
+\-\-trackchanges) back into the original raid1 LV.
+.br
+.B lvconvert \-\-mergemirrors vg/lvol1_rimage_1
+
+Replace PV /dev/sdb1 with PV /dev/sdf1 in a raid1/4/5/6/10 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 vg/lvol1 /dev/sdf1
+
+Replace 3 PVs /dev/sd[b-d]1 with PVs /dev/sd[f-h]1 in a raid1 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 \-\-replace /dev/sdd1
+.RS
+.B vg/lvol1 /dev/sd[fgh]1
+.RE
+
+Replace the maximum of 2 PVs /dev/sd[bc]1 with PVs /dev/sd[gh]1 in a raid6 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 vg/lvol1 /dev/sd[gh]1
+
+Convert an LV into a thin LV in the specified thin pool.  The existing LV
+is used as an external read\-only origin for the new thin LV.
+.br
+.B lvconvert \-\-type thin \-\-thinpool vg/tpool1 vg/lvol1
+
+Convert an LV into a thin LV in the specified thin pool.  The existing LV
+is used as an external read\-only origin for the new thin LV, and is
+renamed "external".
+.br
+.B lvconvert \-\-type thin \-\-thinpool vg/tpool1
+.RS
+.B \-\-originname external vg/lvol1
+.RE
+
+Convert an LV to a cache pool LV using another specified LV for cache pool
+metadata.
+.br
+.B lvconvert \-\-type cache-pool \-\-poolmetadata vg/poolmeta1 vg/lvol1
+
+Convert an LV to a cache LV using the specified cache pool and chunk size.
+.br
+.B lvconvert \-\-type cache \-\-cachepool vg/cpool1 \-c 128 vg/lvol1
+
+Detach and keep the cache pool from a cache LV.
+.br
+.B lvconvert \-\-splitcache vg/lvol1
+
+Detach and remove the cache pool from a cache LV.
+.br
+.B lvconvert \-\-uncache vg/lvol1
+
diff --git a/man/lvconvert.8_pregen b/man/lvconvert.8_pregen
new file mode 100644
index 0000000..bc8d53f
--- /dev/null
+++ b/man/lvconvert.8_pregen
@@ -0,0 +1,2059 @@
+.TH LVCONVERT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvconvert \- Change logical volume layout
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvconvert\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-b\fP|\fB--background\fP
+.ad b
+.br
+.ad l
+ \fB-H\fP|\fB--cache\fP
+.ad b
+.br
+.ad l
+    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP
+.ad b
+.br
+.ad l
+    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.ad b
+.br
+.ad l
+    \fB--cachepolicy\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--cachepool\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--cachesettings\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+ \fB-i\fP|\fB--interval\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+    \fB--merge\fP
+.ad b
+.br
+.ad l
+    \fB--mergemirrors\fP
+.ad b
+.br
+.ad l
+    \fB--mergesnapshot\fP
+.ad b
+.br
+.ad l
+    \fB--mergethin\fP
+.ad b
+.br
+.ad l
+    \fB--metadataprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP
+.ad b
+.br
+.ad l
+ \fB-m\fP|\fB--mirrors\fP [\fB+\fP|\fB-\fP]\fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-n\fP|\fB--name\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+    \fB--originname\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--poolmetadata\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--repair\fP
+.ad b
+.br
+.ad l
+    \fB--replace\fP \fIPV\fP
+.ad b
+.br
+.ad l
+ \fB-s\fP|\fB--snapshot\fP
+.ad b
+.br
+.ad l
+    \fB--splitcache\fP
+.ad b
+.br
+.ad l
+    \fB--splitmirrors\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--splitsnapshot\fP
+.ad b
+.br
+.ad l
+    \fB--startpoll\fP
+.ad b
+.br
+.ad l
+    \fB--stripes\fP \fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--swapmetadata\fP
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-T\fP|\fB--thin\fP
+.ad b
+.br
+.ad l
+    \fB--thinpool\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--trackchanges\fP
+.ad b
+.br
+.ad l
+    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.ad b
+.br
+.ad l
+    \fB--uncache\fP
+.ad b
+.br
+.ad l
+    \fB--usepolicies\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+.br
+.ad l
+ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+lvconvert changes the LV type and includes utilities for LV data
+maintenance. The LV type controls data layout and redundancy.
+The LV type is also called the segment type or segtype.
+
+To display the current LV type, run the command:
+
+.B lvs \-o name,segtype
+.I LV
+
+The
+.B linear
+type is equivalent to the
+.B striped
+type when one stripe exists.
+In that case, the types can sometimes be used interchangably.
+
+In most cases, the
+.B mirror
+type is deprecated and the
+.B raid1
+type should be used.  They are both implementations of mirroring.
+
+In some cases, an LV is a single device mapper (dm) layer above physical
+devices.  In other cases, hidden LVs (dm devices) are layered between the
+visible LV and physical devices.  LVs in the middle layers are called sub LVs.
+A command run on a visible LV sometimes operates on a sub LV rather than
+the specified LV.  In other cases, a sub LV must be specified directly on
+the command line.
+
+Striped raid types are
+.B raid0/raid0_meta
+,
+.B raid5
+(an alias for raid5_ls),
+.B raid6
+(an alias for raid6_zr) and
+.B raid10
+(an alias for raid10_near).
+
+As opposed to mirroring, raid5 and raid6 stripe data and calculate parity
+blocks. The parity blocks can be used for data block recovery in case devices
+fail. A maximum number of one device in a raid5 LV may fail  and two in case
+of raid6. Striped raid types typically rotate the parity blocks for performance
+reasons thus avoiding contention on a single device.  Layouts of raid5 rotating
+parity blocks can be one of left-asymmetric (raid5_la), left-symmetric (raid5_ls
+with alias raid5), right-asymmetric (raid5_ra), right-symmetric (raid5_rs) and raid5_n,
+which doesn't rotate parity blocks.  Any \"_n\" layouts allow for conversion between
+raid levels (raid5_n -> raid6 or raid5_n -> striped/raid0/raid0_meta).
+raid6 layouts are zero-restart (raid6_zr with alias raid6), next-restart (raid6_nr),
+next-continue (raid6_nc). Additionally, special raid6 layouts for raid level conversions
+between raid5 and raid6 are raid6_ls_6, raid6_rs_6, raid6_la_6 and raid6_ra_6. Those
+correspond to their raid5 counterparts (e.g. raid5_rs can be directly converted to raid6_rs_6
+and vice-versa).
+raid10 (an alias for raid10_near) is currently limited to one data copy and even number of
+sub LVs. This is a mirror group layout thus a single sub LV may fail per mirror group
+without data loss.
+Striped raid types support converting the layout, their stripesize
+and their number of stripes.
+
+The striped raid types combined with raid1 allow for conversion from linear -> striped/raid0/raid0_meta
+and vice-versa by e.g. linear <-> raid1 <-> raid5_n (then adding stripes) <-> striped/raid0/raid0_meta.
+
+Sub LVs can be displayed with the command
+.B lvs -a
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+Convert LV to linear.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBlinear\fP \fILV\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert LV to striped.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBstriped\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert LV to raid or change raid layout 
+.br
+(a specific raid level must be used, e.g. raid1).
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBraid\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP [\fB+\fP|\fB-\fP]\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert LV to raid1 or mirror, or change number of mirror images.
+.br
+.P
+\fBlvconvert\fP \fB-m\fP|\fB--mirrors\fP [\fB+\fP|\fB-\fP]\fINumber\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert raid LV to change number of stripe images.
+.br
+.P
+\fBlvconvert\fP \fB--stripes\fP \fINumber\fP \fILV\fP\fI_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert raid LV to change the stripe size.
+.br
+.P
+\fBlvconvert\fP \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] \fILV\fP\fI_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Split images from a raid1 or mirror LV and use them to create a new LV.
+.br
+.P
+\fBlvconvert\fP \fB--splitmirrors\fP \fINumber\fP \fB-n\fP|\fB--name\fP \fILV\fP\fI_new\fP \fILV\fP\fI_cache_mirror_raid1\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Split images from a raid1 LV and track changes to origin.
+.br
+.P
+\fBlvconvert\fP \fB--splitmirrors\fP \fINumber\fP \fB--trackchanges\fP \fILV\fP\fI_cache_raid1\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Merge LV images that were split from a raid1 LV.
+.br
+.P
+\fBlvconvert\fP \fB--mergemirrors\fP \fIVG\fP|\fILV\fP\fI_linear_raid\fP|\fITag\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Convert LV to a thin LV, using the original LV as an external origin.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBthin\fP \fB--thinpool\fP \fILV\fP \fILV\fP\fI_linear_striped_cache_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--originname\fP \fILV\fP\fI_new\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Convert LV to type cache.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBcache\fP \fB--cachepool\fP \fILV\fP \fILV\fP\fI_linear_striped_thinpool_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Convert LV to type thin-pool.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBthin-pool\fP \fILV\fP\fI_linear_striped_cache_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert LV to type cache-pool.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBcache-pool\fP \fILV\fP\fI_linear_striped_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Separate and keep the cache pool from a cache LV.
+.br
+.P
+\fBlvconvert\fP \fB--splitcache\fP \fILV\fP\fI_thinpool_cache_cachepool\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Merge thin LV into its origin LV.
+.br
+.P
+\fBlvconvert\fP \fB--mergethin\fP \fILV\fP\fI_thin\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Merge COW snapshot LV into its origin.
+.br
+.P
+\fBlvconvert\fP \fB--mergesnapshot\fP \fILV\fP\fI_snapshot\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Replace failed PVs in a raid or mirror LV. 
+.br
+Repair a thin pool.
+.br
+.P
+\fBlvconvert\fP \fB--repair\fP \fILV\fP\fI_thinpool_mirror_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--usepolicies\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Replace specific PV(s) in a raid LV with another PV.
+.br
+.P
+\fBlvconvert\fP \fB--replace\fP \fIPV\fP \fILV\fP\fI_raid\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Poll LV to continue conversion.
+.br
+.P
+\fBlvconvert\fP \fB--startpoll\fP \fILV\fP\fI_mirror_raid\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-b\fP|\fB--background\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-b\fP|\fB--background\fP
+.br
+If the operation requires polling, this option causes the command to
+return before the operation is complete, and polling is done in the
+background.
+.ad b
+
+.HP
+.ad l
+\fB-H\fP|\fB--cache\fP
+.br
+Specifies the command is handling a cache LV or cache pool.
+See --type cache and --type cache-pool.
+See \fBlvmcache\fP(7) for more information about LVM caching.
+.ad b
+
+.HP
+.ad l
+\fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP
+.br
+Specifies the cache metadata format used by cache target.
+.ad b
+
+.HP
+.ad l
+\fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.br
+Specifies when writes to a cache LV should be considered complete.
+\fBwriteback\fP considers a write complete as soon as it is
+stored in the cache pool.
+\fBwritethough\fP considers a write complete only when it has
+been stored in both the cache pool and on the origin LV.
+While writethrough may be slower for writes, it is more
+resilient if something should happen to a device associated with the
+cache pool LV. With \fBpassthrough\fP, all reads are served
+from the origin LV (all reads miss the cache) and all writes are
+forwarded to the origin LV; additionally, write hits cause cache
+block invalidates. See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachepolicy\fP \fIString\fP
+.br
+Specifies the cache policy for a cache LV.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachepool\fP \fILV\fP
+.br
+The name of a cache pool LV.
+.ad b
+
+.HP
+.ad l
+\fB--cachesettings\fP \fIString\fP
+.br
+Specifies tunable values for a cache LV in "Key = Value" form.
+Repeat this option to specify multiple values.
+(The default values should usually be adequate.)
+The special string value \fBdefault\fP switches
+settings back to their default kernel values and removes
+them from the list of settings stored in LVM metadata.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT]
+.br
+The size of chunks in a snapshot, cache pool or thin pool.
+For snapshots, the value must be a power of 2 between 4KiB and 512KiB
+and the default value is 4.
+For a cache pool the value must be between 32KiB and 1GiB
+and the default value is 64.
+For a thin pool the value must be between 64KiB and 1GiB
+and the default value starts with 64 and scales up to fit the
+pool metadata size within 128MiB, if the pool metadata size is not specified.
+The value must be a multiple of 64KiB.
+See \fBlvmthin\fP(7) and \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.br
+Specifies how the device-mapper thin pool layer in the kernel should
+handle discards.
+\fBignore\fP causes the thin pool to ignore discards.
+\fBnopassdown\fP causes the thin pool to process discards itself to
+allow reuse of unneeded extents in the thin pool.
+\fBpassdown\fP causes the thin pool to process discards itself
+(like nopassdown) and pass the discards to the underlying device.
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--interval\fP \fINumber\fP
+.br
+Report progress at regular intervals.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--merge\fP
+.br
+An alias for --mergethin, --mergemirrors, or --mergesnapshot,
+depending on the type of LV.
+.ad b
+
+.HP
+.ad l
+\fB--mergemirrors\fP
+.br
+Merge LV images that were split from a raid1 LV.
+See --splitmirrors with --trackchanges.
+.ad b
+
+.HP
+.ad l
+\fB--mergesnapshot\fP
+.br
+Merge COW snapshot LV into its origin.
+When merging a snapshot, if both the origin and snapshot LVs are not open,
+the merge will start immediately. Otherwise, the merge will start the
+first time either the origin or snapshot LV are activated and both are
+closed. Merging a snapshot into an origin that cannot be closed, for
+example a root filesystem, is deferred until the next time the origin
+volume is activated. When merging starts, the resulting LV will have the
+origin's name, minor number and UUID. While the merge is in progress,
+reads or writes to the origin appear as being directed to the snapshot
+being merged. When the merge finishes, the merged snapshot is removed.
+Multiple snapshots may be specified on the command line or a @tag may be
+used to specify multiple snapshots be merged to their respective origin.
+.ad b
+
+.HP
+.ad l
+\fB--mergethin\fP
+.br
+Merge thin LV into its origin LV.
+The origin thin LV takes the content of the thin snapshot,
+and the thin snapshot LV is removed.
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP
+.br
+Specifies the type of mirror log for LVs with the "mirror" type
+(does not apply to the "raid1" type.)
+\fBdisk\fP is a persistent log and requires a small amount of
+storage space, usually on a separate device from the data being mirrored.
+\fBcore\fP is not persistent; the log is kept only in memory.
+In this case, the mirror must be synchronized (by copying LV data from
+the first device to others) each time the LV is activated, e.g. after reboot.
+\fBmirrored\fP is a persistent log that is itself mirrored.
+.ad b
+
+.HP
+.ad l
+\fB-m\fP|\fB--mirrors\fP [\fB+\fP|\fB-\fP]\fINumber\fP
+.br
+Specifies the number of mirror images in addition to the original LV
+image, e.g. --mirrors 1 means there are two images of the data, the
+original and one mirror image.
+Optional positional PV args on the command line can specify the devices
+the images should be placed on.
+There are two mirroring implementations: "raid1" and "mirror".
+These are the names of the corresponding LV types, or "segment types".
+Use the --type option to specify which to use (raid1 is default,
+and mirror is legacy)
+Use lvm.conf global/mirror_segtype_default and
+global/raid10_segtype_default to configure the default types.
+The plus prefix \fB+\fP can be used, in which case
+the number is added to the current number of images,
+or the minus prefix \fB-\fP can be used, in which case
+the number is subtracted from the current number of images.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--name\fP \fIString\fP
+.br
+Specifies the name of a new LV.
+When unspecified, a default name of "lvol#" is
+generated, where # is a number generated by LVM.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--originname\fP \fILV\fP
+.br
+Specifies the name to use for the external origin LV when converting an LV
+to a thin LV. The LV being converted becomes a read-only external origin
+with this name.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadata\fP \fILV\fP
+.br
+The name of a an LV to use for storing pool metadata.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadatasize\fP \fISize\fP[m|UNIT]
+.br
+Specifies the size of the new pool metadata LV.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadataspare\fP \fBy\fP|\fBn\fP
+.br
+Enable or disable the automatic creation and management of a
+spare pool metadata LV in the VG. A spare metadata LV is reserved
+space that can be used when repairing a pool.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.br
+Sets read ahead sector count of an LV.
+\fBauto\fP is the default which allows the kernel to choose
+a suitable value automatically.
+\fBnone\fP is equivalent to zero.
+.ad b
+
+.HP
+.ad l
+\fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT]
+.br
+Size of each raid or mirror synchronization region.
+lvm.conf activation/raid_region_size can be used to
+configure a default.
+.ad b
+
+.HP
+.ad l
+\fB--repair\fP
+.br
+Replace failed PVs in a raid or mirror LV, or run a repair
+utility on a thin pool. See \fBlvmraid\fP(7) and \fBlvmthin\fP(7)
+for more information.
+.ad b
+
+.HP
+.ad l
+\fB--replace\fP \fIPV\fP
+.br
+Replace a specific PV in a raid LV with another PV.
+The new PV to use can be optionally specified after the LV.
+Multiple PVs can be replaced by repeating this option.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--snapshot\fP
+.br
+Combine a former COW snapshot LV with a former origin LV to reverse
+a previous --splitsnapshot command.
+.ad b
+
+.HP
+.ad l
+\fB--splitcache\fP
+.br
+Separates a cache pool from a cache LV, and keeps the unused cache pool LV.
+Before the separation, the cache is flushed. Also see --uncache.
+.ad b
+
+.HP
+.ad l
+\fB--splitmirrors\fP \fINumber\fP
+.br
+Splits the specified number of images from a raid1 or mirror LV
+and uses them to create a new LV. If --trackchanges is also specified,
+changes to the raid1 LV are tracked while the split LV remains detached.
+.ad b
+
+.HP
+.ad l
+\fB--splitsnapshot\fP
+.br
+Separates a COW snapshot from its origin LV. The LV that is split off
+contains the chunks that differ from the origin LV along with metadata
+describing them. This LV can be wiped and then destroyed with lvremove.
+.ad b
+
+.HP
+.ad l
+\fB--startpoll\fP
+.br
+Start polling an LV to continue processing a conversion.
+.ad b
+
+.HP
+.ad l
+\fB--stripes\fP \fINumber\fP
+.br
+Specifies the number of stripes in a striped LV. This is the number of
+PVs (devices) that a striped LV is spread across. Data that
+appears sequential in the LV is spread across multiple devices in units of
+the stripe size (see --stripesize). This does not apply to
+existing allocated space, only newly allocated space can be striped.
+.ad b
+
+.HP
+.ad l
+\fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.br
+The amount of data that is written to one device before
+moving to the next in a striped LV.
+.ad b
+
+.HP
+.ad l
+\fB--swapmetadata\fP
+.br
+Extracts the metadata LV from a pool and replaces it with another specified LV.
+The extracted LV is preserved and given the name of the LV that replaced it.
+Use for repair only. When the metadata LV is swapped out of the pool, it can
+be activated directly and used with thin provisioning tools:
+\fBcache_dump\fP(8), \fBcache_repair\fP(8), \fBcache_restore\fP(8),
+\fBthin_dump\fP(8), \fBthin_repair\fP(8), \fBthin_restore\fP(8).
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-T\fP|\fB--thin\fP
+.br
+Specifies the command is handling a thin LV or thin pool.
+See --type thin, --type thin-pool, and --virtualsize.
+See \fBlvmthin\fP(7) for more information about LVM thin provisioning.
+.ad b
+
+.HP
+.ad l
+\fB--thinpool\fP \fILV\fP
+.br
+The name of a thin pool LV.
+.ad b
+
+.HP
+.ad l
+\fB--trackchanges\fP
+.br
+Can be used with --splitmirrors on a raid1 LV. This causes
+changes to the original raid1 LV to be tracked while the split images
+remain detached. This allows the read-only detached image(s) to be
+merged efficiently back into the raid1 LV later. Only the regions with
+changed data are resynchronized during merge. (This option only applies
+when using the raid1 LV type.)
+.ad b
+
+.HP
+.ad l
+\fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.br
+The LV type, also known as "segment type" or "segtype".
+See usage descriptions for the specific ways to use these types.
+For more information about redundancy and performance (\fBraid\fP<N>, \fBmirror\fP, \fBstriped\fP, \fBlinear\fP) see \fBlvmraid\fP(7).
+For thin provisioning (\fBthin\fP, \fBthin-pool\fP) see \fBlvmthin\fP(7).
+For performance caching (\fBcache\fP, \fBcache-pool\fP) see \fBlvmcache\fP(7).
+For copy-on-write snapshots (\fBsnapshot\fP) see usage definitions.
+Several commands omit an explicit type option because the type
+is inferred from other options or shortcuts
+(e.g. --stripes, --mirrors, --snapshot, --virtualsize, --thin, --cache).
+Use inferred types with care because it can lead to unexpected results.
+.ad b
+
+.HP
+.ad l
+\fB--uncache\fP
+.br
+Separates a cache pool from a cache LV, and deletes the unused cache pool LV.
+Before the separation, the cache is flushed. Also see --splitcache.
+.ad b
+
+.HP
+.ad l
+\fB--usepolicies\fP
+.br
+Perform an operation according to the policy configured in lvm.conf
+or a profile.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+For snapshots, this controls zeroing of the first 4KiB of data in the
+snapshot. If the LV is read-only, the snapshot will not be zeroed.
+For thin pools, this controls zeroing of provisioned blocks.
+Provisioning of large zeroed chunks negatively impacts performance.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+LV followed by _<type> indicates that an LV of the
+given type is required. (raid represents raid<N> type)
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH ADVANCED USAGE
+Alternate command forms, advanced command usage, and listing of all valid syntax for completeness.
+.P
+Convert LV to type mirror (also see type raid1), 
+.br
+(also see lvconvert --mirrors).
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBmirror\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP [\fB+\fP|\fB-\fP]\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Change the region size of an LV.
+.br
+.P
+\fBlvconvert\fP \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] \fILV\fP\fI_raid\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Change the type of mirror log used by a mirror LV.
+.br
+.P
+\fBlvconvert\fP \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP \fILV\fP\fI_mirror\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Convert LV to a thin LV, using the original LV as an external origin 
+.br
+(infers --type thin).
+.br
+.P
+\fBlvconvert\fP \fB-T\fP|\fB--thin\fP \fB--thinpool\fP \fILV\fP \fILV\fP\fI_linear_striped_cache_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--originname\fP \fILV\fP\fI_new\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Convert LV to type cache (infers --type cache).
+.br
+.P
+\fBlvconvert\fP \fB-H\fP|\fB--cache\fP \fB--cachepool\fP \fILV\fP \fILV\fP\fI_linear_striped_thinpool_raid\fP
+.br
+.RS 4
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadata\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Separate and delete the cache pool from a cache LV.
+.br
+.P
+\fBlvconvert\fP \fB--uncache\fP \fILV\fP\fI_thinpool_cache\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Swap metadata LV in a thin pool or cache pool (for repair only).
+.br
+.P
+\fBlvconvert\fP \fB--swapmetadata\fP \fB--poolmetadata\fP \fILV\fP \fILV\fP\fI_thinpool_cachepool\fP
+.br
+.RS 4
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Merge LV that was split from a mirror (variant, use --mergemirrors). 
+.br
+Merge thin LV into its origin LV (variant, use --mergethin). 
+.br
+Merge COW snapshot LV into its origin (variant, use --mergesnapshot).
+.br
+.P
+\fBlvconvert\fP \fB--merge\fP \fIVG\fP|\fILV\fP\fI_linear_striped_snapshot_thin_raid\fP|\fITag\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Separate a COW snapshot from its origin LV.
+.br
+.P
+\fBlvconvert\fP \fB--splitsnapshot\fP \fILV\fP\fI_snapshot\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Combine a former COW snapshot (second arg) with a former 
+.br
+origin LV (first arg) to reverse a splitsnapshot command.
+.br
+.P
+\fBlvconvert\fP \fB--type\fP \fBsnapshot\fP \fILV\fP \fILV\fP\fI_linear\fP
+.br
+.RS 4
+.ad l
+[ \fB-s\fP|\fB--snapshot\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Combine a former COW snapshot (second arg) with a former 
+.br
+origin LV (first arg) to reverse a splitsnapshot command.
+.br
+.P
+\fBlvconvert\fP \fB-s\fP|\fB--snapshot\fP \fILV\fP \fILV\fP\fI_linear\fP
+.br
+.RS 4
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBsnapshot\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Poll LV to continue conversion (also see --startpoll).
+.br
+.P
+\fBlvconvert\fP \fILV\fP\fI_mirror_raid\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+.SH NOTES
+
+This previous command syntax would perform two different operations:
+.br
+\fBlvconvert --thinpool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
+.br
+If LV1 was not a thin pool, the command would convert LV1 to
+a thin pool, optionally using a specified LV for metadata.
+But, if LV1 was already a thin pool, the command would swap
+the current metadata LV with LV2 (for repair purposes.)
+
+In the same way, this previous command syntax would perform two different
+operations:
+.br
+\fBlvconvert --cachepool\fP \fILV1\fP \fB--poolmetadata\fP \fILV2\fP
+.br
+If LV1 was not a cache pool, the command would convert LV1 to
+a cache pool, optionally using a specified LV for metadata.
+But, if LV1 was already a cache pool, the command would swap
+the current metadata LV with LV2 (for repair purposes.)
+
+.SH EXAMPLES
+
+Convert a linear LV to a two-way mirror LV.
+.br
+.B lvconvert \-\-type mirror \-\-mirrors 1 vg/lvol1
+
+Convert a linear LV to a two-way RAID1 LV.
+.br
+.B lvconvert \-\-type raid1 \-\-mirrors 1 vg/lvol1
+
+Convert a mirror LV to use an in\-memory log.
+.br
+.B lvconvert \-\-mirrorlog core vg/lvol1
+
+Convert a mirror LV to use a disk log.
+.br
+.B lvconvert \-\-mirrorlog disk vg/lvol1
+
+Convert a mirror or raid1 LV to a linear LV.
+.br
+.B lvconvert --type linear vg/lvol1
+
+Convert a mirror LV to a raid1 LV with the same number of images.
+.br
+.B lvconvert \-\-type raid1 vg/lvol1
+
+Convert a linear LV to a two-way mirror LV, allocating new extents from specific
+PV ranges.
+.br
+.B lvconvert \-\-mirrors 1 vg/lvol1 /dev/sda:0\-15 /dev/sdb:0\-15
+
+Convert a mirror LV to a linear LV, freeing physical extents from a specific PV.
+.br
+.B lvconvert \-\-type linear vg/lvol1 /dev/sda
+
+Split one image from a mirror or raid1 LV, making it a new LV.
+.br
+.B lvconvert \-\-splitmirrors 1 \-\-name lv_split vg/lvol1
+
+Split one image from a raid1 LV, and track changes made to the raid1 LV
+while the split image remains detached.
+.br
+.B lvconvert \-\-splitmirrors 1 \-\-trackchanges vg/lvol1
+
+Merge an image (that was previously created with \-\-splitmirrors and
+\-\-trackchanges) back into the original raid1 LV.
+.br
+.B lvconvert \-\-mergemirrors vg/lvol1_rimage_1
+
+Replace PV /dev/sdb1 with PV /dev/sdf1 in a raid1/4/5/6/10 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 vg/lvol1 /dev/sdf1
+
+Replace 3 PVs /dev/sd[b-d]1 with PVs /dev/sd[f-h]1 in a raid1 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 \-\-replace /dev/sdd1
+.RS
+.B vg/lvol1 /dev/sd[fgh]1
+.RE
+
+Replace the maximum of 2 PVs /dev/sd[bc]1 with PVs /dev/sd[gh]1 in a raid6 LV.
+.br
+.B lvconvert \-\-replace /dev/sdb1 \-\-replace /dev/sdc1 vg/lvol1 /dev/sd[gh]1
+
+Convert an LV into a thin LV in the specified thin pool.  The existing LV
+is used as an external read\-only origin for the new thin LV.
+.br
+.B lvconvert \-\-type thin \-\-thinpool vg/tpool1 vg/lvol1
+
+Convert an LV into a thin LV in the specified thin pool.  The existing LV
+is used as an external read\-only origin for the new thin LV, and is
+renamed "external".
+.br
+.B lvconvert \-\-type thin \-\-thinpool vg/tpool1
+.RS
+.B \-\-originname external vg/lvol1
+.RE
+
+Convert an LV to a cache pool LV using another specified LV for cache pool
+metadata.
+.br
+.B lvconvert \-\-type cache-pool \-\-poolmetadata vg/poolmeta1 vg/lvol1
+
+Convert an LV to a cache LV using the specified cache pool and chunk size.
+.br
+.B lvconvert \-\-type cache \-\-cachepool vg/cpool1 \-c 128 vg/lvol1
+
+Detach and keep the cache pool from a cache LV.
+.br
+.B lvconvert \-\-splitcache vg/lvol1
+
+Detach and remove the cache pool from a cache LV.
+.br
+.B lvconvert \-\-uncache vg/lvol1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvcreate.8.des b/man/lvcreate.8.des
deleted file mode 100644
index acc07b3..0000000
--- a/man/lvcreate.8.des
+++ /dev/null
@@ -1,39 +0,0 @@
-lvcreate creates a new LV in a VG. For standard LVs, this requires
-allocating logical extents from the VG's free physical extents. If there
-is not enough free space, then the VG can be extended (see
-\fBvgextend\fP(8)) with other PVs, or existing LVs can be reduced or
-removed (see \fBlvremove\fP, \fBlvreduce\fP.)
-
-To control which PVs a new LV will use, specify one or more PVs as
-position args at the end of the command line. lvcreate will allocate
-physical extents only from the specified PVs.
-
-lvcreate can also create snapshots of existing LVs, e.g. for backup
-purposes. The data in a new snapshot LV represents the content of the
-original LV from the time the snapshot was created.
-
-RAID LVs can be created by specifying an LV type when creating the LV (see
-\fBlvmraid\fP(7)). Different RAID levels require different numbers of
-unique PVs be available in the VG for allocation.
-
-Thin pools (for thin provisioning) and cache pools (for caching) are
-represented by special LVs with types thin-pool and cache-pool (see
-\fBlvmthin\fP(7) and \fBlvmcache\fP(7)). The pool LVs are not usable as
-standard block devices, but the LV names act references to the pools.
-
-Thin LVs are thinly provisioned from a thin pool, and are created with a
-virtual size rather than a physical size. A cache LV is the combination of
-a standard LV with a cache pool, used to cache active portions of the LV
-to improve performance.
-
-.SS Usage notes
-
-In the usage section below, \fB--size\fP \fISize\fP can be replaced
-with \fB--extents\fP \fINumber\fP.  See both descriptions
-the options section.
-
-In the usage section below, \fB--name\fP is omitted from the required
-options, even though it is typically used.  When the name is not
-specified, a new LV name is generated with the "lvol" prefix and a unique
-numeric suffix.  Also see the description in the options section.
-
diff --git a/man/lvcreate.8.end b/man/lvcreate.8.end
deleted file mode 100644
index 74ae599..0000000
--- a/man/lvcreate.8.end
+++ /dev/null
@@ -1,98 +0,0 @@
-.SH EXAMPLES
-
-Create a striped LV with 3 stripes, a stripe size of 8KiB and a size of 100MiB.
-The LV name is chosen by lvcreate.
-.br
-.B lvcreate \-i 3 \-I 8 \-L 100m vg00
-
-Create a raid1 LV with two images, and a useable size of 500 MiB. This
-operation requires two devices, one for each mirror image. RAID metadata
-(superblock and bitmap) is also included on the two devices.
-.br
-.B lvcreate \-\-type raid1 \-m1 \-L 500m \-n mylv vg00
-
-Create a mirror LV with two images, and a useable size of 500 MiB.
-This operation requires three devices: two for mirror images and
-one for a disk log.
-.br
-.B lvcreate \-\-type mirror \-m1 \-L 500m \-n mylv vg00
-
-Create a mirror LV with 2 images, and a useable size of 500 MiB.
-This operation requires 2 devices because the log is in memory.
-.br
-.B lvcreate \-\-type mirror \-m1 \-\-mirrorlog core \-L 500m \-n mylv vg00
-
-Create a copy\-on\-write snapshot of an LV:
-.br
-.B lvcreate \-\-snapshot \-\-size 100m \-\-name mysnap vg00/mylv
-
-Create a copy\-on\-write snapshot with a size sufficient
-for overwriting 20% of the size of the original LV.
-.br
-.B lvcreate \-s \-l 20%ORIGIN \-n mysnap vg00/mylv
-
-Create a sparse LV with 1TiB of virtual space, and actual space just under
-100MiB.
-.br
-.B lvcreate \-\-snapshot \-\-virtualsize 1t \-\-size 100m \-\-name mylv vg00
-
-Create a linear LV with a usable size of 64MiB on specific physical extents.
-.br
-.B lvcreate \-L 64m \-n mylv vg00 /dev/sda:0\-7 /dev/sdb:0\-7
-
-Create a RAID5 LV with a usable size of 5GiB, 3 stripes, a stripe size of
-64KiB, using a total of 4 devices (including one for parity).
-.br
-.B lvcreate \-\-type raid5 \-L 5G \-i 3 \-I 64 \-n mylv vg00
-
-Create a RAID5 LV using all of the free space in the VG and spanning all the
-PVs in the VG (note that the command will fail if there are more than 8 PVs in
-the VG, in which case \fB\-i 7\fP must be used to get to the current maximum of
-8 devices including parity for RaidLVs).
-.br
-.B lvcreate \-\-config allocation/raid_stripe_all_devices=1
-.RS
-.B \-\-type raid5 \-l 100%FREE \-n mylv vg00
-.RE
-
-Create RAID10 LV with a usable size of 5GiB, using 2 stripes, each on
-a two-image mirror. (Note that the \fB-i\fP and \fB-m\fP arguments behave
-differently:
-\fB-i\fP specifies the total number of stripes,
-but \fB-m\fP specifies the number of images in addition
-to the first image).
-.br
-.B lvcreate \-\-type raid10 \-L 5G \-i 2 \-m 1 \-n mylv vg00
-
-Create a 1TiB thin LV, first creating a new thin pool for it, where
-the thin pool has 100MiB of space, uses 2 stripes, has a 64KiB stripe
-size, and 256KiB chunk size.
-.br
-.B lvcreate \-\-type thin \-\-name mylv \-\-thinpool mypool
-.RS
-.B \-V 1t \-L 100m \-i 2 \-I 64 \-c 256 vg00
-.RE
-
-Create a thin snapshot of a thin LV (the size option must not be
-used, otherwise a copy-on-write snapshot would be created).
-.br
-.B lvcreate \-\-snapshot \-\-name mysnap vg00/thinvol
-
-Create a thin snapshot of the read-only inactive LV named "origin"
-which becomes an external origin for the thin snapshot LV.
-.br
-.B lvcreate \-\-snapshot \-\-name mysnap \-\-thinpool mypool vg00/origin
-
-Create a cache pool from a fast physical device. The cache pool can
-then be used to cache an LV.
-.br
-.B lvcreate \-\-type cache-pool \-L 1G \-n my_cpool vg00 /dev/fast1
-
-Create a cache LV, first creating a new origin LV on a slow physical device,
-then combining the new origin LV with an existing cache pool.
-.br
-.B lvcreate \-\-type cache \-\-cachepool my_cpool
-.RS
-.B \-L 100G \-n mylv vg00 /dev/slow1
-.RE
-
diff --git a/man/lvcreate.8_des b/man/lvcreate.8_des
new file mode 100644
index 0000000..acc07b3
--- /dev/null
+++ b/man/lvcreate.8_des
@@ -0,0 +1,39 @@
+lvcreate creates a new LV in a VG. For standard LVs, this requires
+allocating logical extents from the VG's free physical extents. If there
+is not enough free space, then the VG can be extended (see
+\fBvgextend\fP(8)) with other PVs, or existing LVs can be reduced or
+removed (see \fBlvremove\fP, \fBlvreduce\fP.)
+
+To control which PVs a new LV will use, specify one or more PVs as
+position args at the end of the command line. lvcreate will allocate
+physical extents only from the specified PVs.
+
+lvcreate can also create snapshots of existing LVs, e.g. for backup
+purposes. The data in a new snapshot LV represents the content of the
+original LV from the time the snapshot was created.
+
+RAID LVs can be created by specifying an LV type when creating the LV (see
+\fBlvmraid\fP(7)). Different RAID levels require different numbers of
+unique PVs be available in the VG for allocation.
+
+Thin pools (for thin provisioning) and cache pools (for caching) are
+represented by special LVs with types thin-pool and cache-pool (see
+\fBlvmthin\fP(7) and \fBlvmcache\fP(7)). The pool LVs are not usable as
+standard block devices, but the LV names act references to the pools.
+
+Thin LVs are thinly provisioned from a thin pool, and are created with a
+virtual size rather than a physical size. A cache LV is the combination of
+a standard LV with a cache pool, used to cache active portions of the LV
+to improve performance.
+
+.SS Usage notes
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
+In the usage section below, \fB--name\fP is omitted from the required
+options, even though it is typically used.  When the name is not
+specified, a new LV name is generated with the "lvol" prefix and a unique
+numeric suffix.  Also see the description in the options section.
+
diff --git a/man/lvcreate.8_end b/man/lvcreate.8_end
new file mode 100644
index 0000000..74ae599
--- /dev/null
+++ b/man/lvcreate.8_end
@@ -0,0 +1,98 @@
+.SH EXAMPLES
+
+Create a striped LV with 3 stripes, a stripe size of 8KiB and a size of 100MiB.
+The LV name is chosen by lvcreate.
+.br
+.B lvcreate \-i 3 \-I 8 \-L 100m vg00
+
+Create a raid1 LV with two images, and a useable size of 500 MiB. This
+operation requires two devices, one for each mirror image. RAID metadata
+(superblock and bitmap) is also included on the two devices.
+.br
+.B lvcreate \-\-type raid1 \-m1 \-L 500m \-n mylv vg00
+
+Create a mirror LV with two images, and a useable size of 500 MiB.
+This operation requires three devices: two for mirror images and
+one for a disk log.
+.br
+.B lvcreate \-\-type mirror \-m1 \-L 500m \-n mylv vg00
+
+Create a mirror LV with 2 images, and a useable size of 500 MiB.
+This operation requires 2 devices because the log is in memory.
+.br
+.B lvcreate \-\-type mirror \-m1 \-\-mirrorlog core \-L 500m \-n mylv vg00
+
+Create a copy\-on\-write snapshot of an LV:
+.br
+.B lvcreate \-\-snapshot \-\-size 100m \-\-name mysnap vg00/mylv
+
+Create a copy\-on\-write snapshot with a size sufficient
+for overwriting 20% of the size of the original LV.
+.br
+.B lvcreate \-s \-l 20%ORIGIN \-n mysnap vg00/mylv
+
+Create a sparse LV with 1TiB of virtual space, and actual space just under
+100MiB.
+.br
+.B lvcreate \-\-snapshot \-\-virtualsize 1t \-\-size 100m \-\-name mylv vg00
+
+Create a linear LV with a usable size of 64MiB on specific physical extents.
+.br
+.B lvcreate \-L 64m \-n mylv vg00 /dev/sda:0\-7 /dev/sdb:0\-7
+
+Create a RAID5 LV with a usable size of 5GiB, 3 stripes, a stripe size of
+64KiB, using a total of 4 devices (including one for parity).
+.br
+.B lvcreate \-\-type raid5 \-L 5G \-i 3 \-I 64 \-n mylv vg00
+
+Create a RAID5 LV using all of the free space in the VG and spanning all the
+PVs in the VG (note that the command will fail if there are more than 8 PVs in
+the VG, in which case \fB\-i 7\fP must be used to get to the current maximum of
+8 devices including parity for RaidLVs).
+.br
+.B lvcreate \-\-config allocation/raid_stripe_all_devices=1
+.RS
+.B \-\-type raid5 \-l 100%FREE \-n mylv vg00
+.RE
+
+Create RAID10 LV with a usable size of 5GiB, using 2 stripes, each on
+a two-image mirror. (Note that the \fB-i\fP and \fB-m\fP arguments behave
+differently:
+\fB-i\fP specifies the total number of stripes,
+but \fB-m\fP specifies the number of images in addition
+to the first image).
+.br
+.B lvcreate \-\-type raid10 \-L 5G \-i 2 \-m 1 \-n mylv vg00
+
+Create a 1TiB thin LV, first creating a new thin pool for it, where
+the thin pool has 100MiB of space, uses 2 stripes, has a 64KiB stripe
+size, and 256KiB chunk size.
+.br
+.B lvcreate \-\-type thin \-\-name mylv \-\-thinpool mypool
+.RS
+.B \-V 1t \-L 100m \-i 2 \-I 64 \-c 256 vg00
+.RE
+
+Create a thin snapshot of a thin LV (the size option must not be
+used, otherwise a copy-on-write snapshot would be created).
+.br
+.B lvcreate \-\-snapshot \-\-name mysnap vg00/thinvol
+
+Create a thin snapshot of the read-only inactive LV named "origin"
+which becomes an external origin for the thin snapshot LV.
+.br
+.B lvcreate \-\-snapshot \-\-name mysnap \-\-thinpool mypool vg00/origin
+
+Create a cache pool from a fast physical device. The cache pool can
+then be used to cache an LV.
+.br
+.B lvcreate \-\-type cache-pool \-L 1G \-n my_cpool vg00 /dev/fast1
+
+Create a cache LV, first creating a new origin LV on a slow physical device,
+then combining the new origin LV with an existing cache pool.
+.br
+.B lvcreate \-\-type cache \-\-cachepool my_cpool
+.RS
+.B \-L 100G \-n mylv vg00 /dev/slow1
+.RE
+
diff --git a/man/lvcreate.8_pregen b/man/lvcreate.8_pregen
new file mode 100644
index 0000000..49d9072
--- /dev/null
+++ b/man/lvcreate.8_pregen
@@ -0,0 +1,2865 @@
+.TH LVCREATE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvcreate \- Create a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvcreate\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.ad b
+.br
+.ad l
+    \fB--addtag\fP \fITag\fP
+.ad b
+.br
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-H\fP|\fB--cache\fP
+.ad b
+.br
+.ad l
+    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP
+.ad b
+.br
+.ad l
+    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.ad b
+.br
+.ad l
+    \fB--cachepolicy\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--cachepool\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--cachesettings\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT]
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+ \fB-K\fP|\fB--ignoreactivationskip\fP
+.ad b
+.br
+.ad l
+    \fB--ignoremonitoring\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-j\fP|\fB--major\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--metadataprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--minor\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP
+.ad b
+.br
+.ad l
+ \fB-m\fP|\fB--mirrors\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--monitor\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-n\fP|\fB--name\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--nosync\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+ \fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP
+.ad b
+.br
+.ad l
+ \fB-M\fP|\fB--persistent\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+ \fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+ \fB-s\fP|\fB--snapshot\fP
+.ad b
+.br
+.ad l
+ \fB-i\fP|\fB--stripes\fP \fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-T\fP|\fB--thin\fP
+.ad b
+.br
+.ad l
+    \fB--thinpool\fP \fILV\fP
+.ad b
+.br
+.ad l
+    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+ \fB-W\fP|\fB--wipesignatures\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+.br
+.ad l
+ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+lvcreate creates a new LV in a VG. For standard LVs, this requires
+allocating logical extents from the VG's free physical extents. If there
+is not enough free space, then the VG can be extended (see
+\fBvgextend\fP(8)) with other PVs, or existing LVs can be reduced or
+removed (see \fBlvremove\fP, \fBlvreduce\fP.)
+
+To control which PVs a new LV will use, specify one or more PVs as
+position args at the end of the command line. lvcreate will allocate
+physical extents only from the specified PVs.
+
+lvcreate can also create snapshots of existing LVs, e.g. for backup
+purposes. The data in a new snapshot LV represents the content of the
+original LV from the time the snapshot was created.
+
+RAID LVs can be created by specifying an LV type when creating the LV (see
+\fBlvmraid\fP(7)). Different RAID levels require different numbers of
+unique PVs be available in the VG for allocation.
+
+Thin pools (for thin provisioning) and cache pools (for caching) are
+represented by special LVs with types thin-pool and cache-pool (see
+\fBlvmthin\fP(7) and \fBlvmcache\fP(7)). The pool LVs are not usable as
+standard block devices, but the LV names act references to the pools.
+
+Thin LVs are thinly provisioned from a thin pool, and are created with a
+virtual size rather than a physical size. A cache LV is the combination of
+a standard LV with a cache pool, used to cache active portions of the LV
+to improve performance.
+
+.SS Usage notes
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
+In the usage section below, \fB--name\fP is omitted from the required
+options, even though it is typically used.  When the name is not
+specified, a new LV name is generated with the "lvol" prefix and a unique
+numeric suffix.  Also see the description in the options section.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+Create a linear LV.
+.br
+.P
+\fBlvcreate\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBlinear\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a striped LV (infers --type striped).
+.br
+.P
+\fBlvcreate\fP \fB-i\fP|\fB--stripes\fP \fINumber\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBstriped\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a raid1 or mirror LV (infers --type raid1|mirror).
+.br
+.P
+\fBlvcreate\fP \fB-m\fP|\fB--mirrors\fP \fINumber\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBraid1\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP ]
+.ad b
+.br
+.ad l
+[    \fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a raid LV (a specific raid level must be used, e.g. raid1).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBraid\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a COW snapshot LV of an origin LV.
+.br
+.P
+\fBlvcreate\fP \fB-s\fP|\fB--snapshot\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBsnapshot\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin pool.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin-pool\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--thinpool\fP \fILV\fP\fI_new\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a cache pool.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBcache-pool\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin LV in a thin pool (infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fB--thinpool\fP \fILV\fP\fI_thinpool\fP \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV that is a snapshot of an existing thin LV 
+.br
+(infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-s\fP|\fB--snapshot\fP \fILV\fP\fI_thin\fP
+.br
+.RS 4
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV that is a snapshot of an external origin LV.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fB--thinpool\fP \fILV\fP\fI_thinpool\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV, first creating a thin pool for it, 
+.br
+where the new thin pool is named by the --thinpool arg.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fB--thinpool\fP \fILV\fP\fI_new\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a cache LV, first creating a new origin LV, 
+.br
+then combining it with the existing cache pool named 
+.br
+by the --cachepool arg.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBcache\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB--cachepool\fP \fILV\fP\fI_cachepool\fP \fIVG\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP ]
+.ad b
+.br
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-K\fP|\fB--ignoreactivationskip\fP ]
+.ad b
+.br
+.ad l
+[ \fB-j\fP|\fB--major\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--name\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--persistent\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-W\fP|\fB--wipesignatures\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--addtag\fP \fITag\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoremonitoring\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--minor\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--monitor\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.br
+Controls the active state of the new LV.
+\fBy\fP makes the LV active, or available.
+New LVs are made active by default.
+\fBn\fP makes the LV inactive, or unavailable, only when possible.
+In some cases, creating an LV requires it to be active.
+For example, COW snapshots of an active origin LV can only
+be created in the active state (this does not apply to thin snapshots.)
+The --zero option normally requires the LV to be active.
+If autoactivation \fBay\fP is used, the LV is only activated
+if it matches an item in lvm.conf activation/auto_activation_volume_list.
+\fBay\fP implies --zero n and --wipesignatures n.
+See lvmlockd(8) for more information about activation options for shared VGs.
+See clvmd(8) for more information about activation options for clustered VGs.
+.ad b
+
+.HP
+.ad l
+\fB--addtag\fP \fITag\fP
+.br
+Adds a tag to a PV, VG or LV. This option can be repeated to add
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-H\fP|\fB--cache\fP
+.br
+Specifies the command is handling a cache LV or cache pool.
+See --type cache and --type cache-pool.
+See \fBlvmcache\fP(7) for more information about LVM caching.
+.ad b
+
+.HP
+.ad l
+\fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP
+.br
+Specifies the cache metadata format used by cache target.
+.ad b
+
+.HP
+.ad l
+\fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP
+.br
+Specifies when writes to a cache LV should be considered complete.
+\fBwriteback\fP considers a write complete as soon as it is
+stored in the cache pool.
+\fBwritethough\fP considers a write complete only when it has
+been stored in both the cache pool and on the origin LV.
+While writethrough may be slower for writes, it is more
+resilient if something should happen to a device associated with the
+cache pool LV. With \fBpassthrough\fP, all reads are served
+from the origin LV (all reads miss the cache) and all writes are
+forwarded to the origin LV; additionally, write hits cause cache
+block invalidates. See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachepolicy\fP \fIString\fP
+.br
+Specifies the cache policy for a cache LV.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--cachepool\fP \fILV\fP
+.br
+The name of a cache pool LV.
+.ad b
+
+.HP
+.ad l
+\fB--cachesettings\fP \fIString\fP
+.br
+Specifies tunable values for a cache LV in "Key = Value" form.
+Repeat this option to specify multiple values.
+(The default values should usually be adequate.)
+The special string value \fBdefault\fP switches
+settings back to their default kernel values and removes
+them from the list of settings stored in LVM metadata.
+See \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT]
+.br
+The size of chunks in a snapshot, cache pool or thin pool.
+For snapshots, the value must be a power of 2 between 4KiB and 512KiB
+and the default value is 4.
+For a cache pool the value must be between 32KiB and 1GiB
+and the default value is 64.
+For a thin pool the value must be between 64KiB and 1GiB
+and the default value starts with 64 and scales up to fit the
+pool metadata size within 128MiB, if the pool metadata size is not specified.
+The value must be a multiple of 64KiB.
+See \fBlvmthin\fP(7) and \fBlvmcache\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-C\fP|\fB--contiguous\fP \fBy\fP|\fBn\fP
+.br
+Sets or resets the contiguous allocation policy for LVs.
+Default is no contiguous allocation based on a next free principle.
+It is only possible to change a non-contiguous allocation policy
+to contiguous if all of the allocated physical extents in the LV
+are already contiguous.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP
+.br
+Specifies how the device-mapper thin pool layer in the kernel should
+handle discards.
+\fBignore\fP causes the thin pool to ignore discards.
+\fBnopassdown\fP causes the thin pool to process discards itself to
+allow reuse of unneeded extents in the thin pool.
+\fBpassdown\fP causes the thin pool to process discards itself
+(like nopassdown) and pass the discards to the underlying device.
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--errorwhenfull\fP \fBy\fP|\fBn\fP
+.br
+Specifies thin pool behavior when data space is exhausted.
+When yes, device-mapper will immediately return an error
+when a thin pool is full and an I/O request requires space.
+When no, device-mapper will queue these I/O requests for a
+period of time to allow the thin pool to be extended.
+Errors are returned if no space is available after the timeout.
+(Also see dm-thin-pool kernel module option no_space_timeout.)
+See \fBlvmthin\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT]
+.br
+Specifies the size of the new LV in logical extents.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+An alternate syntax allows the size to be determined indirectly
+as a percentage of the size of a related VG, LV, or set of PVs. The
+suffix \fB%VG\fP denotes the total size of the VG, the suffix \fB%FREE\fP
+the remaining free space in the VG, and the suffix \fB%PVS\fP the free
+space in the specified PVs.  For a snapshot, the size
+can be expressed as a percentage of the total size of the origin LV
+with the suffix \fB%ORIGIN\fP (\fB100%ORIGIN\fP provides space for
+the whole origin).
+When expressed as a percentage, the size defines an upper limit for the
+number of logical extents in the new LV. The precise number of logical
+extents in the new LV is not determined until the command has completed.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-K\fP|\fB--ignoreactivationskip\fP
+.br
+Ignore the "activation skip" LV flag during activation
+to allow LVs with the flag set to be activated.
+.ad b
+
+.HP
+.ad l
+\fB--ignoremonitoring\fP
+.br
+Do not interact with dmeventd unless --monitor is specified.
+Do not use this if dmeventd is already monitoring a device.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-j\fP|\fB--major\fP \fINumber\fP
+.br
+Sets the major number of an LV block device.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]maxrecoveryrate\fP \fISize\fP[k|UNIT]
+.br
+Sets the maximum recovery rate for a RAID LV.  The rate value
+is an amount of data per second for each device in the array.
+Setting the rate to 0 means it will be unbounded.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--minor\fP \fINumber\fP
+.br
+Sets the minor number of an LV block device.
+.ad b
+
+.HP
+.ad l
+\fB--[raid]minrecoveryrate\fP \fISize\fP[k|UNIT]
+.br
+Sets the minimum recovery rate for a RAID LV.  The rate value
+is an amount of data per second for each device in the array.
+Setting the rate to 0 means it will be unbounded.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP
+.br
+Specifies the type of mirror log for LVs with the "mirror" type
+(does not apply to the "raid1" type.)
+\fBdisk\fP is a persistent log and requires a small amount of
+storage space, usually on a separate device from the data being mirrored.
+\fBcore\fP is not persistent; the log is kept only in memory.
+In this case, the mirror must be synchronized (by copying LV data from
+the first device to others) each time the LV is activated, e.g. after reboot.
+\fBmirrored\fP is a persistent log that is itself mirrored.
+.ad b
+
+.HP
+.ad l
+\fB-m\fP|\fB--mirrors\fP \fINumber\fP
+.br
+Specifies the number of mirror images in addition to the original LV
+image, e.g. --mirrors 1 means there are two images of the data, the
+original and one mirror image.
+Optional positional PV args on the command line can specify the devices
+the images should be placed on.
+There are two mirroring implementations: "raid1" and "mirror".
+These are the names of the corresponding LV types, or "segment types".
+Use the --type option to specify which to use (raid1 is default,
+and mirror is legacy)
+Use lvm.conf global/mirror_segtype_default and
+global/raid10_segtype_default to configure the default types.
+See the --nosync option for avoiding initial image synchronization.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--monitor\fP \fBy\fP|\fBn\fP
+.br
+Start (yes) or stop (no) monitoring an LV with dmeventd.
+dmeventd monitors kernel events for an LV, and performs
+automated maintenance for the LV in reponse to specific events.
+See dmeventd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--name\fP \fIString\fP
+.br
+Specifies the name of a new LV.
+When unspecified, a default name of "lvol#" is
+generated, where # is a number generated by LVM.
+.ad b
+
+.HP
+.ad l
+\fB--nosync\fP
+.br
+Causes the creation of mirror, raid1, raid4, raid5 and raid10 to skip the
+initial synchronization. In case of mirror, raid1 and raid10, any data
+written afterwards will be mirrored, but the original contents will not be
+copied. In case of raid4 and raid5, no parity blocks will be written,
+though any data written afterwards will cause parity blocks to be stored.
+This is useful for skipping a potentially long and resource intensive initial
+sync of an empty mirror/raid1/raid4/raid5 and raid10 LV.
+This option is not valid for raid6, because raid6 relies on proper parity
+(P and Q Syndromes) being created during initial synchronization in order
+to reconstruct proper user date in case of device failures.
+raid0 and raid0_meta do not provide any data copies or parity support
+and thus do not support initial synchronization.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB-p\fP|\fB--permission\fP \fBrw\fP|\fBr\fP
+.br
+Set access permission to read only \fBr\fP or read and write \fBrw\fP.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--persistent\fP \fBy\fP|\fBn\fP
+.br
+When yes, makes the specified minor number persistent.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadatasize\fP \fISize\fP[m|UNIT]
+.br
+Specifies the size of the new pool metadata LV.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadataspare\fP \fBy\fP|\fBn\fP
+.br
+Enable or disable the automatic creation and management of a
+spare pool metadata LV in the VG. A spare metadata LV is reserved
+space that can be used when repairing a pool.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--readahead\fP \fBauto\fP|\fBnone\fP|\fINumber\fP
+.br
+Sets read ahead sector count of an LV.
+\fBauto\fP is the default which allows the kernel to choose
+a suitable value automatically.
+\fBnone\fP is equivalent to zero.
+.ad b
+
+.HP
+.ad l
+\fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT]
+.br
+Size of each raid or mirror synchronization region.
+lvm.conf activation/raid_region_size can be used to
+configure a default.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-k\fP|\fB--setactivationskip\fP \fBy\fP|\fBn\fP
+.br
+Persistently sets (yes) or clears (no) the "activation skip" flag on an LV.
+An LV with this flag set is not activated unless the
+--ignoreactivationskip option is used by the activation command.
+This flag is set by default on new thin snapshot LVs.
+The flag is not applied to deactivation.
+The current value of the flag is indicated in the lvs lv_attr bits.
+.ad b
+
+.HP
+.ad l
+\fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.br
+Specifies the size of the new LV.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--snapshot\fP
+.br
+Create a snapshot. Snapshots provide a "frozen image" of an origin LV.
+The snapshot LV can be used, e.g. for backups, while the origin LV
+continues to be used.
+This option can create a COW (copy on write) snapshot,
+or a thin snapshot (in a thin pool.)
+Thin snapshots are created when the origin is a thin LV and
+the size option is NOT specified. Thin snapshots share the same blocks
+in the thin pool, and do not allocate new space from the VG.
+Thin snapshots are created with the "activation skip" flag,
+see --setactivationskip.
+A thin snapshot of a non-thin "external origin" LV is created
+when a thin pool is specified. Unprovisioned blocks in the thin snapshot
+LV are read from the external origin LV. The external origin LV must
+be read-only.
+See \fBlvmthin\fP(7) for more information about LVM thin provisioning.
+COW snapshots are created when a size is specified. The size is allocated
+from space in the VG, and is the amount of space that can be used
+for saving COW blocks as writes occur to the origin or snapshot.
+The size chosen should depend upon the amount of writes that are expected;
+often 20% of the origin LV is enough. If COW space runs low, it can
+be extended with lvextend (shrinking is also allowed with lvreduce.)
+A small amount of the COW snapshot LV size is used to track COW block
+locations, so the full size is not available for COW data blocks.
+Use lvs to check how much space is used, and see --monitor to
+to automatically extend the size to avoid running out of space.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--stripes\fP \fINumber\fP
+.br
+Specifies the number of stripes in a striped LV. This is the number of
+PVs (devices) that a striped LV is spread across. Data that
+appears sequential in the LV is spread across multiple devices in units of
+the stripe size (see --stripesize). This does not change existing
+allocated space, but only applies to space being allocated by the command.
+When creating a RAID 4/5/6 LV, this number does not include the extra
+devices that are required for parity. The largest number depends on
+the RAID type (raid0: 64, raid10: 32, raid4/5: 63, raid6: 62), and
+when unspecified, the default depends on the RAID type
+(raid0: 2, raid10: 4, raid4/5: 3, raid6: 5.)
+To stripe a new raid LV across all PVs by default,
+see lvm.conf allocation/raid_stripe_all_devices.
+.ad b
+
+.HP
+.ad l
+\fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.br
+The amount of data that is written to one device before
+moving to the next in a striped LV.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-T\fP|\fB--thin\fP
+.br
+Specifies the command is handling a thin LV or thin pool.
+See --type thin, --type thin-pool, and --virtualsize.
+See \fBlvmthin\fP(7) for more information about LVM thin provisioning.
+.ad b
+
+.HP
+.ad l
+\fB--thinpool\fP \fILV\fP
+.br
+The name of a thin pool LV.
+.ad b
+
+.HP
+.ad l
+\fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.br
+The LV type, also known as "segment type" or "segtype".
+See usage descriptions for the specific ways to use these types.
+For more information about redundancy and performance (\fBraid\fP<N>, \fBmirror\fP, \fBstriped\fP, \fBlinear\fP) see \fBlvmraid\fP(7).
+For thin provisioning (\fBthin\fP, \fBthin-pool\fP) see \fBlvmthin\fP(7).
+For performance caching (\fBcache\fP, \fBcache-pool\fP) see \fBlvmcache\fP(7).
+For copy-on-write snapshots (\fBsnapshot\fP) see usage definitions.
+Several commands omit an explicit type option because the type
+is inferred from other options or shortcuts
+(e.g. --stripes, --mirrors, --snapshot, --virtualsize, --thin, --cache).
+Use inferred types with care because it can lead to unexpected results.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.br
+The virtual size of a new thin LV.
+See \fBlvmthin\fP(7) for more information about LVM thin provisioning.
+Using virtual size (-V) and actual size (-L) together creates
+a sparse LV.
+lvm.conf global/sparse_segtype_default determines the
+default segment type used to create a sparse LV.
+Anything written to a sparse LV will be returned when reading from it.
+Reading from other areas of the LV will return blocks of zeros.
+When using a snapshot to create a sparse LV, a hidden virtual device
+is created using the zero target, and the LV has the suffix _vorigin.
+Snapshots are less efficient than thin provisioning when creating
+large sparse LVs (GiB).
+.ad b
+
+.HP
+.ad l
+\fB-W\fP|\fB--wipesignatures\fP \fBy\fP|\fBn\fP
+.br
+Controls detection and subsequent wiping of signatures on new LVs.
+There is a prompt for each signature detected to confirm its wiping
+(unless --yes is used to override confirmations.)
+When not specified, signatures are wiped whenever zeroing is done
+(see --zero). This behaviour can be configured with
+lvm.conf allocation/wipe_signatures_when_zeroing_new_lvs.
+If blkid wiping is used (lvm.conf allocation/use_blkid_wiping)
+and LVM is compiled with blkid wiping support, then the blkid(8)
+library is used to detect the signatures (use blkid -k to list the
+signatures that are recognized).
+Otherwise, native LVM code is used to detect signatures
+(only MD RAID, swap and LUKS signatures are detected in this case.)
+The LV is not wiped if the read only flag is set.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+Controls zeroing of the first 4KiB of data in the new LV.
+Default is \fBy\fP.
+Snapshot COW volumes are always zeroed.
+LV is not zeroed if the read only flag is set.
+Warning: trying to mount an unzeroed LV can cause the system to hang.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+For lvcreate, the required VG positional arg may be
+omitted when the VG name is included in another option,
+e.g. --name VG/LV.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+LV followed by _<type> indicates that an LV of the
+given type is required. (raid represents raid<N> type)
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH ADVANCED USAGE
+Alternate command forms, advanced command usage, and listing of all valid syntax for completeness.
+.P
+Create an LV that returns errors when used.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBerror\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create an LV that returns zeros when read.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBzero\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a linear LV.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBlinear\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a striped LV (also see lvcreate --stripes).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBstriped\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a mirror LV (also see --type raid1).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBmirror\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-R\fP|\fB--regionsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mirrorlog\fP \fBcore\fP|\fBdisk\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a COW snapshot LV of an origin LV 
+.br
+(also see --snapshot).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBsnapshot\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--snapshot\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a sparse COW snapshot LV of a virtual origin LV 
+.br
+(also see --snapshot).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBsnapshot\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fIVG\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--snapshot\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a sparse COW snapshot LV of a virtual origin LV.
+.br
+.P
+\fBlvcreate\fP \fB-s\fP|\fB--snapshot\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fIVG\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBsnapshot\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin pool (infers --type thin-pool).
+.br
+.P
+\fBlvcreate\fP \fB-T\fP|\fB--thin\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin-pool\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin pool named by the --thinpool arg 
+.br
+(infers --type thin-pool).
+.br
+.P
+\fBlvcreate\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fB--thinpool\fP \fILV\fP\fI_new\fP \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin-pool\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a cache pool named by the --cachepool arg 
+.br
+(variant, uses --cachepool in place of --name).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBcache-pool\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB--cachepool\fP \fILV\fP\fI_new\fP \fIVG\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin LV in a thin pool.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB--thinpool\fP \fILV\fP\fI_thinpool\fP \fIVG\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV in a thin pool named in the first arg 
+.br
+(variant, also see --thinpool for naming pool).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fILV\fP\fI_thinpool\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV in the thin pool named in the first arg 
+.br
+(variant, infers --type thin, also see --thinpool for 
+.br
+naming pool.)
+.br
+.P
+\fBlvcreate\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fILV\fP\fI_thinpool\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV that is a snapshot of an existing thin LV.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fILV\fP\fI_thin\fP
+.br
+.RS 4
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV that is a snapshot of an existing thin LV 
+.br
+(infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-T\fP|\fB--thin\fP \fILV\fP\fI_thin\fP
+.br
+.RS 4
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV that is a snapshot of an external origin LV 
+.br
+(infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-s\fP|\fB--snapshot\fP \fB--thinpool\fP \fILV\fP\fI_thinpool\fP \fILV\fP
+.br
+.RS 4
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Create a thin LV, first creating a thin pool for it, 
+.br
+where the new thin pool is named by the --thinpool arg 
+.br
+(variant, infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-T\fP|\fB--thin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fB--thinpool\fP \fILV\fP\fI_new\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin LV, first creating a thin pool for it, 
+.br
+where the new thin pool is named in the first arg, 
+.br
+or the new thin pool name is generated when the first 
+.br
+arg is a VG name.
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBthin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP|\fILV\fP\fI_new\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin LV, first creating a thin pool for it, 
+.br
+where the new thin pool is named in the first arg, 
+.br
+or the new thin pool name is generated when the first 
+.br
+arg is a VG name (variant, infers --type thin).
+.br
+.P
+\fBlvcreate\fP \fB-T\fP|\fB--thin\fP \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT]
+.RS 5
+ \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fIVG\fP|\fILV\fP\fI_new\fP
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a thin LV, first creating a thin pool for it 
+.br
+(infers --type thin). 
+.br
+Create a sparse snapshot of a virtual origin LV 
+.br
+(infers --type snapshot). 
+.br
+Chooses --type thin or --type snapshot according to 
+.br
+config setting sparse_segtype_default.
+.br
+.P
+\fBlvcreate\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fB-V\fP|\fB--virtualsize\fP \fISize\fP[m|UNIT] \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-T\fP|\fB--thin\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--snapshot\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBthin\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--discards\fP \fBpassdown\fP|\fBnopassdown\fP|\fBignore\fP ]
+.ad b
+.br
+.ad l
+[    \fB--errorwhenfull\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a cache LV, first creating a new origin LV, 
+.br
+then combining it with the existing cache pool named 
+.br
+by the --cachepool arg (variant, infers --type cache).
+.br
+.P
+\fBlvcreate\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fB--cachepool\fP \fILV\fP\fI_cachepool\fP \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Create a cache LV, first creating a new origin LV, 
+.br
+then combining it with the existing cache pool named 
+.br
+in the first arg (variant, also use --cachepool).
+.br
+.P
+\fBlvcreate\fP \fB--type\fP \fBcache\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fILV\fP\fI_cachepool\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--cache\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+When LV is a cache pool, create a cache LV, 
+.br
+first creating a new origin LV, then combining it with 
+.br
+the existing cache pool named in the first arg 
+.br
+(variant, infers --type cache, also use --cachepool). 
+.br
+When LV is not a cache pool, convert the specified LV 
+.br
+to type cache after creating a new cache pool LV to use 
+.br
+(use lvconvert).
+.br
+.P
+\fBlvcreate\fP \fB-H\fP|\fB--cache\fP \fB-L\fP|\fB--size\fP \fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP \fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--chunksize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--cachemode\fP \fBwritethrough\fP|\fBwriteback\fP|\fBpassthrough\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachepolicy\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachesettings\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cachemetadataformat\fP \fBauto\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadataspare\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+.SH EXAMPLES
+
+Create a striped LV with 3 stripes, a stripe size of 8KiB and a size of 100MiB.
+The LV name is chosen by lvcreate.
+.br
+.B lvcreate \-i 3 \-I 8 \-L 100m vg00
+
+Create a raid1 LV with two images, and a useable size of 500 MiB. This
+operation requires two devices, one for each mirror image. RAID metadata
+(superblock and bitmap) is also included on the two devices.
+.br
+.B lvcreate \-\-type raid1 \-m1 \-L 500m \-n mylv vg00
+
+Create a mirror LV with two images, and a useable size of 500 MiB.
+This operation requires three devices: two for mirror images and
+one for a disk log.
+.br
+.B lvcreate \-\-type mirror \-m1 \-L 500m \-n mylv vg00
+
+Create a mirror LV with 2 images, and a useable size of 500 MiB.
+This operation requires 2 devices because the log is in memory.
+.br
+.B lvcreate \-\-type mirror \-m1 \-\-mirrorlog core \-L 500m \-n mylv vg00
+
+Create a copy\-on\-write snapshot of an LV:
+.br
+.B lvcreate \-\-snapshot \-\-size 100m \-\-name mysnap vg00/mylv
+
+Create a copy\-on\-write snapshot with a size sufficient
+for overwriting 20% of the size of the original LV.
+.br
+.B lvcreate \-s \-l 20%ORIGIN \-n mysnap vg00/mylv
+
+Create a sparse LV with 1TiB of virtual space, and actual space just under
+100MiB.
+.br
+.B lvcreate \-\-snapshot \-\-virtualsize 1t \-\-size 100m \-\-name mylv vg00
+
+Create a linear LV with a usable size of 64MiB on specific physical extents.
+.br
+.B lvcreate \-L 64m \-n mylv vg00 /dev/sda:0\-7 /dev/sdb:0\-7
+
+Create a RAID5 LV with a usable size of 5GiB, 3 stripes, a stripe size of
+64KiB, using a total of 4 devices (including one for parity).
+.br
+.B lvcreate \-\-type raid5 \-L 5G \-i 3 \-I 64 \-n mylv vg00
+
+Create a RAID5 LV using all of the free space in the VG and spanning all the
+PVs in the VG (note that the command will fail if there are more than 8 PVs in
+the VG, in which case \fB\-i 7\fP must be used to get to the current maximum of
+8 devices including parity for RaidLVs).
+.br
+.B lvcreate \-\-config allocation/raid_stripe_all_devices=1
+.RS
+.B \-\-type raid5 \-l 100%FREE \-n mylv vg00
+.RE
+
+Create RAID10 LV with a usable size of 5GiB, using 2 stripes, each on
+a two-image mirror. (Note that the \fB-i\fP and \fB-m\fP arguments behave
+differently:
+\fB-i\fP specifies the total number of stripes,
+but \fB-m\fP specifies the number of images in addition
+to the first image).
+.br
+.B lvcreate \-\-type raid10 \-L 5G \-i 2 \-m 1 \-n mylv vg00
+
+Create a 1TiB thin LV, first creating a new thin pool for it, where
+the thin pool has 100MiB of space, uses 2 stripes, has a 64KiB stripe
+size, and 256KiB chunk size.
+.br
+.B lvcreate \-\-type thin \-\-name mylv \-\-thinpool mypool
+.RS
+.B \-V 1t \-L 100m \-i 2 \-I 64 \-c 256 vg00
+.RE
+
+Create a thin snapshot of a thin LV (the size option must not be
+used, otherwise a copy-on-write snapshot would be created).
+.br
+.B lvcreate \-\-snapshot \-\-name mysnap vg00/thinvol
+
+Create a thin snapshot of the read-only inactive LV named "origin"
+which becomes an external origin for the thin snapshot LV.
+.br
+.B lvcreate \-\-snapshot \-\-name mysnap \-\-thinpool mypool vg00/origin
+
+Create a cache pool from a fast physical device. The cache pool can
+then be used to cache an LV.
+.br
+.B lvcreate \-\-type cache-pool \-L 1G \-n my_cpool vg00 /dev/fast1
+
+Create a cache LV, first creating a new origin LV on a slow physical device,
+then combining the new origin LV with an existing cache pool.
+.br
+.B lvcreate \-\-type cache \-\-cachepool my_cpool
+.RS
+.B \-L 100G \-n mylv vg00 /dev/slow1
+.RE
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvdisplay.8.des b/man/lvdisplay.8.des
deleted file mode 100644
index 48552cc..0000000
--- a/man/lvdisplay.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-lvdisplay shows the attributes of LVs, like size, read/write status,
-snapshot information, etc.
-
-\fBlvs\fP(8) is a preferred alternative that shows the same information
-and more, using a more compact and configurable output format.
diff --git a/man/lvdisplay.8_des b/man/lvdisplay.8_des
new file mode 100644
index 0000000..48552cc
--- /dev/null
+++ b/man/lvdisplay.8_des
@@ -0,0 +1,5 @@
+lvdisplay shows the attributes of LVs, like size, read/write status,
+snapshot information, etc.
+
+\fBlvs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
diff --git a/man/lvdisplay.8_end b/man/lvdisplay.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvdisplay.8_pregen b/man/lvdisplay.8_pregen
new file mode 100644
index 0000000..10d45ae
--- /dev/null
+++ b/man/lvdisplay.8_pregen
@@ -0,0 +1,639 @@
+.TH LVDISPLAY 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvdisplay \- Display information about a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvdisplay\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvdisplay shows the attributes of LVs, like size, read/write status,
+snapshot information, etc.
+
+\fBlvs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvdisplay\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--colon\fP ]
+.ad b
+.br
+.ad l
+[ \fB-C\fP|\fB--columns\fP ]
+.ad b
+.br
+.ad l
+[ \fB-H\fP|\fB--history\fP ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--maps\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--segments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fILV\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Show information about internal LVs.
+These are components of normal LVs, such as mirrors,
+which are not independently accessible, e.g. not mountable.
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--colon\fP
+.br
+Generate colon separated output for easier parsing in scripts or programs.
+Also see vgs(8) which provides considerably more control over the output.
+.ad b
+
+.HP
+.ad l
+\fB-C\fP|\fB--columns\fP
+.br
+Display output in columns, the equivalent of vgs(8).
+Options listed are the same as options given in vgs(8).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-H\fP|\fB--history\fP
+.br
+Include historical LVs in the output.
+(This has no effect unless LVs were removed while
+lvm.conf metadata/record_lvs_history was enabled.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-m\fP|\fB--maps\fP
+.br
+Display the mapping of logical extents to PVs and physical extents.
+To map physical extents to logical extents use:
+pvs --segments -o+lv_name,seg_start_pe,segtype
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--segments\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvextend.8.des b/man/lvextend.8.des
deleted file mode 100644
index 4c0575d..0000000
--- a/man/lvextend.8.des
+++ /dev/null
@@ -1,12 +0,0 @@
-lvextend extends the size of an LV. This requires allocating logical
-extents from the VG's free physical extents. If the extension adds a new
-LV segment, the new segment will use the existing segment type of the LV.
-
-Extending a copy\-on\-write snapshot LV adds space for COW blocks.
-
-Use \fBlvconvert\fP(8) to change the number of data images in a RAID or
-mirrored LV.
-
-In the usage section below, \fB--size\fP \fISize\fP can be replaced
-with \fB--extents\fP \fINumber\fP.  See both descriptions
-the options section.
diff --git a/man/lvextend.8.end b/man/lvextend.8.end
deleted file mode 100644
index 6d197de..0000000
--- a/man/lvextend.8.end
+++ /dev/null
@@ -1,16 +0,0 @@
-.SH EXAMPLES
-
-Extend the size of an LV by 54MiB, using a specific PV.
-.br
-.B lvextend \-L +54 vg01/lvol10 /dev/sdk3
-
-Extend the size of an LV by the amount of free
-space on PV /dev/sdk3. This is equivalent to specifying
-"\-l +100%PVS" on the command line.
-.br
-.B lvextend vg01/lvol01 /dev/sdk3
-
-Extend an LV by 16MiB using specific physical extents.
-.br
-.B lvextend \-L+16m vg01/lvol01 /dev/sda:8\-9 /dev/sdb:8\-9
-
diff --git a/man/lvextend.8_des b/man/lvextend.8_des
new file mode 100644
index 0000000..4c0575d
--- /dev/null
+++ b/man/lvextend.8_des
@@ -0,0 +1,12 @@
+lvextend extends the size of an LV. This requires allocating logical
+extents from the VG's free physical extents. If the extension adds a new
+LV segment, the new segment will use the existing segment type of the LV.
+
+Extending a copy\-on\-write snapshot LV adds space for COW blocks.
+
+Use \fBlvconvert\fP(8) to change the number of data images in a RAID or
+mirrored LV.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
diff --git a/man/lvextend.8_end b/man/lvextend.8_end
new file mode 100644
index 0000000..6d197de
--- /dev/null
+++ b/man/lvextend.8_end
@@ -0,0 +1,16 @@
+.SH EXAMPLES
+
+Extend the size of an LV by 54MiB, using a specific PV.
+.br
+.B lvextend \-L +54 vg01/lvol10 /dev/sdk3
+
+Extend the size of an LV by the amount of free
+space on PV /dev/sdk3. This is equivalent to specifying
+"\-l +100%PVS" on the command line.
+.br
+.B lvextend vg01/lvol01 /dev/sdk3
+
+Extend an LV by 16MiB using specific physical extents.
+.br
+.B lvextend \-L+16m vg01/lvol01 /dev/sda:8\-9 /dev/sdb:8\-9
+
diff --git a/man/lvextend.8_pregen b/man/lvextend.8_pregen
new file mode 100644
index 0000000..92e5796
--- /dev/null
+++ b/man/lvextend.8_pregen
@@ -0,0 +1,781 @@
+.TH LVEXTEND 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvextend \- Add space to a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvextend\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-l\fP|\fB--extents\fP [\fB+\fP]\fINumber\fP[PERCENT]
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-m\fP|\fB--mirrors\fP \fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-n\fP|\fB--nofsck\fP
+.ad b
+.br
+.ad l
+    \fB--nosync\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+    \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+ \fB-r\fP|\fB--resizefs\fP
+.ad b
+.br
+.ad l
+ \fB-L\fP|\fB--size\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+ \fB-i\fP|\fB--stripes\fP \fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.ad b
+.br
+.ad l
+    \fB--usepolicies\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+lvextend extends the size of an LV. This requires allocating logical
+extents from the VG's free physical extents. If the extension adds a new
+LV segment, the new segment will use the existing segment type of the LV.
+
+Extending a copy\-on\-write snapshot LV adds space for COW blocks.
+
+Use \fBlvconvert\fP(8) to change the number of data images in a RAID or
+mirrored LV.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Extend an LV by a specified size.
+.br
+.P
+\fBlvextend\fP \fB-L\fP|\fB--size\fP [\fB+\fP]\fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP [\fB+\fP]\fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Extend an LV by specified PV extents.
+.br
+.P
+\fBlvextend\fP \fILV\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Extend a pool metadata SubLV by a specified size.
+.br
+.P
+\fBlvextend\fP \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT] \fILV\fP\fI_thinpool\fP
+.br
+.RS 4
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Extend an LV according to a predefined policy.
+.br
+.P
+\fBlvextend\fP \fB--usepolicies\fP \fILV\fP\fI_snapshot_thinpool\fP
+.br
+.RS 4
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--mirrors\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--nofsck\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--extents\fP [\fB+\fP]\fINumber\fP[PERCENT]
+.br
+Specifies the new size of the LV in logical extents.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+An alternate syntax allows the size to be determined indirectly
+as a percentage of the size of a related VG, LV, or set of PVs. The
+suffix \fB%VG\fP denotes the total size of the VG, the suffix \fB%FREE\fP
+the remaining free space in the VG, and the suffix \fB%PVS\fP the free
+space in the specified PVs.  For a snapshot, the size
+can be expressed as a percentage of the total size of the origin LV
+with the suffix \fB%ORIGIN\fP (\fB100%ORIGIN\fP provides space for
+the whole origin).
+When expressed as a percentage, the size defines an upper limit for the
+number of logical extents in the new LV. The precise number of logical
+extents in the new LV is not determined until the command has completed.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-m\fP|\fB--mirrors\fP \fINumber\fP
+.br
+Not used.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--nofsck\fP
+.br
+Do not perform fsck before resizing filesystem when filesystem
+requires it. You may need to use --force to proceed with
+this option.
+.ad b
+
+.HP
+.ad l
+\fB--nosync\fP
+.br
+Causes the creation of mirror, raid1, raid4, raid5 and raid10 to skip the
+initial synchronization. In case of mirror, raid1 and raid10, any data
+written afterwards will be mirrored, but the original contents will not be
+copied. In case of raid4 and raid5, no parity blocks will be written,
+though any data written afterwards will cause parity blocks to be stored.
+This is useful for skipping a potentially long and resource intensive initial
+sync of an empty mirror/raid1/raid4/raid5 and raid10 LV.
+This option is not valid for raid6, because raid6 relies on proper parity
+(P and Q Syndromes) being created during initial synchronization in order
+to reconstruct proper user date in case of device failures.
+raid0 and raid0_meta do not provide any data copies or parity support
+and thus do not support initial synchronization.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.br
+Specifies the new size of the pool metadata LV.
+The plus prefix \fB+\fP can be used, in which case
+the value is added to the current size.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--resizefs\fP
+.br
+Resize underlying filesystem together with the LV using fsadm(8).
+.ad b
+
+.HP
+.ad l
+\fB-L\fP|\fB--size\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.br
+Specifies the new size of the LV.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--stripes\fP \fINumber\fP
+.br
+Specifies the number of stripes in a striped LV. This is the number of
+PVs (devices) that a striped LV is spread across. Data that
+appears sequential in the LV is spread across multiple devices in units of
+the stripe size (see --stripesize). This does not change existing
+allocated space, but only applies to space being allocated by the command.
+When creating a RAID 4/5/6 LV, this number does not include the extra
+devices that are required for parity. The largest number depends on
+the RAID type (raid0: 64, raid10: 32, raid4/5: 63, raid6: 62), and
+when unspecified, the default depends on the RAID type
+(raid0: 2, raid10: 4, raid4/5: 3, raid6: 5.)
+To stripe a new raid LV across all PVs by default,
+see lvm.conf allocation/raid_stripe_all_devices.
+.ad b
+
+.HP
+.ad l
+\fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.br
+The amount of data that is written to one device before
+moving to the next in a striped LV.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.br
+The LV type, also known as "segment type" or "segtype".
+See usage descriptions for the specific ways to use these types.
+For more information about redundancy and performance (\fBraid\fP<N>, \fBmirror\fP, \fBstriped\fP, \fBlinear\fP) see \fBlvmraid\fP(7).
+For thin provisioning (\fBthin\fP, \fBthin-pool\fP) see \fBlvmthin\fP(7).
+For performance caching (\fBcache\fP, \fBcache-pool\fP) see \fBlvmcache\fP(7).
+For copy-on-write snapshots (\fBsnapshot\fP) see usage definitions.
+Several commands omit an explicit type option because the type
+is inferred from other options or shortcuts
+(e.g. --stripes, --mirrors, --snapshot, --virtualsize, --thin, --cache).
+Use inferred types with care because it can lead to unexpected results.
+.ad b
+
+.HP
+.ad l
+\fB--usepolicies\fP
+.br
+Perform an operation according to the policy configured in lvm.conf
+or a profile.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+LV followed by _<type> indicates that an LV of the
+given type is required. (raid represents raid<N> type)
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Extend the size of an LV by 54MiB, using a specific PV.
+.br
+.B lvextend \-L +54 vg01/lvol10 /dev/sdk3
+
+Extend the size of an LV by the amount of free
+space on PV /dev/sdk3. This is equivalent to specifying
+"\-l +100%PVS" on the command line.
+.br
+.B lvextend vg01/lvol01 /dev/sdk3
+
+Extend an LV by 16MiB using specific physical extents.
+.br
+.B lvextend \-L+16m vg01/lvol01 /dev/sda:8\-9 /dev/sdb:8\-9
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvm-config.8.des b/man/lvm-config.8.des
deleted file mode 100644
index 1d36566..0000000
--- a/man/lvm-config.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-This command is the same as \fBlvmconfig\fP(8).
-
-lvm config produces formatted output from the LVM configuration tree. The
-sources of the configuration data include \fBlvm.conf\fP(5) and command
-line settings from \-\-config.
diff --git a/man/lvm-config.8_des b/man/lvm-config.8_des
new file mode 100644
index 0000000..1d36566
--- /dev/null
+++ b/man/lvm-config.8_des
@@ -0,0 +1,5 @@
+This command is the same as \fBlvmconfig\fP(8).
+
+lvm config produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
diff --git a/man/lvm-config.8_end b/man/lvm-config.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvm-config.8_pregen b/man/lvm-config.8_pregen
new file mode 100644
index 0000000..7223fd2
--- /dev/null
+++ b/man/lvm-config.8_pregen
@@ -0,0 +1,522 @@
+.TH LVM CONFIG 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvm config \- Display and manipulate configuration information
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvm config\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+This command is the same as \fBlvmconfig\fP(8).
+
+lvm config produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvm config\fP
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--file\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--list\fP ]
+.ad b
+.br
+.ad l
+[    \fB--atversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreadvanced\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelocal\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mergedconfig\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--sinceversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showdeprecated\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--validate\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withsummary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withcomments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withspaces\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unconfigured\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withversions\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIString\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--atversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+When configuration is displayed, the configuration settings recognized
+at this LVM version will be considered only. This can be used
+to display a configuration that a certain LVM version understands and
+which does not contain any newer settings for which LVM would
+issue a warning message when checking the configuration.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--file\fP \fIString\fP
+.br
+Write output to the named file.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreadvanced\fP
+.br
+Exclude advanced configuration settings from the output.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelocal\fP
+.br
+Ignore local section.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreunsupported\fP
+.br
+Exclude unsupported configuration settings from the output. These settings are
+either used for debugging and development purposes only or their support is not
+yet complete and they are not meant to be used in production. The \fBcurrent\fP
+and \fBdiff\fP types include unsupported settings in their output by default,
+all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--list\fP
+.br
+List config settings with summarizing comment. This is the same as using
+options --typeconfig list --withsummary.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--mergedconfig\fP
+.br
+When the command is run with --config
+and/or --commandprofile (or using LVM_COMMAND_PROFILE
+environment variable), --profile, or --metadataprofile,
+merge all the contents of the "config cascade" before displaying it.
+Without merging, only the configuration at the front of the
+cascade is displayed.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--showdeprecated\fP
+.br
+Include deprecated configuration settings in the output. These settings
+are deprecated after a certain version. If a concrete version is specified
+with --atversion, deprecated settings are automatically included
+if the specified version is lower than the version in which the settings were
+deprecated. The current and diff types include deprecated settings
+in their output by default, all the other types ignore deprecated settings.
+.ad b
+
+.HP
+.ad l
+\fB--showunsupported\fP
+.br
+Include unsupported configuration settings in the output. These settings
+are either used for debugging or development purposes only, or their support
+is not yet complete and they are not meant to be used in production. The
+current and diff types include unsupported settings in their
+output by default, all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB--sinceversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+This option is currently applicable only with --typeconfig new
+to display all configuration settings introduced since given version.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB--unconfigured\fP
+.br
+Internal option used for generating config file during build.
+.ad b
+
+.HP
+.ad l
+\fB--validate\fP
+.br
+Validate current configuration used and exit with appropriate
+return code. The validation is done only for the configuration
+at the front of the "config cascade". To validate the whole
+merged configuration tree, also use --mergedconfig.
+The validation is done even if lvm.conf config/checks is disabled.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--withcomments\fP
+.br
+Display a full comment for each configuration node. For deprecated
+settings, also display comments about deprecation.
+.ad b
+
+.HP
+.ad l
+\fB--withspaces\fP
+.br
+Where appropriate, add more spaces in output for better readability.
+.ad b
+
+.HP
+.ad l
+\fB--withsummary\fP
+.br
+Display a one line comment for each configuration node.
+.ad b
+
+.HP
+.ad l
+\fB--withversions\fP
+.br
+Also display a comment containing the version of introduction for
+each configuration node. If the setting is deprecated, also display
+the version since which it is deprecated.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvm-dumpconfig.8.des b/man/lvm-dumpconfig.8.des
deleted file mode 100644
index 18593fb..0000000
--- a/man/lvm-dumpconfig.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-This command is the same as \fBlvmconfig\fP(8).
-
-lvm dumpconfig produces formatted output from the LVM configuration tree. The
-sources of the configuration data include \fBlvm.conf\fP(5) and command
-line settings from \-\-config.
diff --git a/man/lvm-dumpconfig.8_des b/man/lvm-dumpconfig.8_des
new file mode 100644
index 0000000..18593fb
--- /dev/null
+++ b/man/lvm-dumpconfig.8_des
@@ -0,0 +1,5 @@
+This command is the same as \fBlvmconfig\fP(8).
+
+lvm dumpconfig produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
diff --git a/man/lvm-dumpconfig.8_end b/man/lvm-dumpconfig.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvm-dumpconfig.8_pregen b/man/lvm-dumpconfig.8_pregen
new file mode 100644
index 0000000..acc54ca
--- /dev/null
+++ b/man/lvm-dumpconfig.8_pregen
@@ -0,0 +1,522 @@
+.TH LVM DUMPCONFIG 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvm dumpconfig \- Display and manipulate configuration information
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvm dumpconfig\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+This command is the same as \fBlvmconfig\fP(8).
+
+lvm dumpconfig produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvm dumpconfig\fP
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--file\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--list\fP ]
+.ad b
+.br
+.ad l
+[    \fB--atversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreadvanced\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelocal\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mergedconfig\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--sinceversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showdeprecated\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--validate\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withsummary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withcomments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withspaces\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unconfigured\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withversions\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIString\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--atversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+When configuration is displayed, the configuration settings recognized
+at this LVM version will be considered only. This can be used
+to display a configuration that a certain LVM version understands and
+which does not contain any newer settings for which LVM would
+issue a warning message when checking the configuration.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--file\fP \fIString\fP
+.br
+Write output to the named file.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreadvanced\fP
+.br
+Exclude advanced configuration settings from the output.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelocal\fP
+.br
+Ignore local section.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreunsupported\fP
+.br
+Exclude unsupported configuration settings from the output. These settings are
+either used for debugging and development purposes only or their support is not
+yet complete and they are not meant to be used in production. The \fBcurrent\fP
+and \fBdiff\fP types include unsupported settings in their output by default,
+all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--list\fP
+.br
+List config settings with summarizing comment. This is the same as using
+options --typeconfig list --withsummary.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--mergedconfig\fP
+.br
+When the command is run with --config
+and/or --commandprofile (or using LVM_COMMAND_PROFILE
+environment variable), --profile, or --metadataprofile,
+merge all the contents of the "config cascade" before displaying it.
+Without merging, only the configuration at the front of the
+cascade is displayed.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--showdeprecated\fP
+.br
+Include deprecated configuration settings in the output. These settings
+are deprecated after a certain version. If a concrete version is specified
+with --atversion, deprecated settings are automatically included
+if the specified version is lower than the version in which the settings were
+deprecated. The current and diff types include deprecated settings
+in their output by default, all the other types ignore deprecated settings.
+.ad b
+
+.HP
+.ad l
+\fB--showunsupported\fP
+.br
+Include unsupported configuration settings in the output. These settings
+are either used for debugging or development purposes only, or their support
+is not yet complete and they are not meant to be used in production. The
+current and diff types include unsupported settings in their
+output by default, all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB--sinceversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+This option is currently applicable only with --typeconfig new
+to display all configuration settings introduced since given version.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB--unconfigured\fP
+.br
+Internal option used for generating config file during build.
+.ad b
+
+.HP
+.ad l
+\fB--validate\fP
+.br
+Validate current configuration used and exit with appropriate
+return code. The validation is done only for the configuration
+at the front of the "config cascade". To validate the whole
+merged configuration tree, also use --mergedconfig.
+The validation is done even if lvm.conf config/checks is disabled.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--withcomments\fP
+.br
+Display a full comment for each configuration node. For deprecated
+settings, also display comments about deprecation.
+.ad b
+
+.HP
+.ad l
+\fB--withspaces\fP
+.br
+Where appropriate, add more spaces in output for better readability.
+.ad b
+
+.HP
+.ad l
+\fB--withsummary\fP
+.br
+Display a one line comment for each configuration node.
+.ad b
+
+.HP
+.ad l
+\fB--withversions\fP
+.br
+Also display a comment containing the version of introduction for
+each configuration node. If the setting is deprecated, also display
+the version since which it is deprecated.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvm-fullreport.8.des b/man/lvm-fullreport.8.des
deleted file mode 100644
index f350a0a..0000000
--- a/man/lvm-fullreport.8.des
+++ /dev/null
@@ -1,6 +0,0 @@
-lvm fullreport produces formatted output about PVs, PV segments, VGs, LVs
-and LV segments. The information is all gathered together for each VG
-(under a per-VG lock) so it is consistent. Information gathered from
-separate calls to \fBvgs\fP, \fBpvs\fP, and \fBlvs\fP can be inconsistent
-if information changes between commands.
-
diff --git a/man/lvm-fullreport.8_des b/man/lvm-fullreport.8_des
new file mode 100644
index 0000000..f350a0a
--- /dev/null
+++ b/man/lvm-fullreport.8_des
@@ -0,0 +1,6 @@
+lvm fullreport produces formatted output about PVs, PV segments, VGs, LVs
+and LV segments. The information is all gathered together for each VG
+(under a per-VG lock) so it is consistent. Information gathered from
+separate calls to \fBvgs\fP, \fBpvs\fP, and \fBlvs\fP can be inconsistent
+if information changes between commands.
+
diff --git a/man/lvm-fullreport.8_end b/man/lvm-fullreport.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvm-fullreport.8_pregen b/man/lvm-fullreport.8_pregen
new file mode 100644
index 0000000..74f8dd3
--- /dev/null
+++ b/man/lvm-fullreport.8_pregen
@@ -0,0 +1,623 @@
+.TH LVM FULLREPORT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvm fullreport \- Display full report
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvm fullreport\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvm fullreport produces formatted output about PVs, PV segments, VGs, LVs
+and LV segments. The information is all gathered together for each VG
+(under a per-VG lock) so it is consistent. Information gathered from
+separate calls to \fBvgs\fP, \fBpvs\fP, and \fBlvs\fP can be inconsistent
+if information changes between commands.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvm fullreport\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nameprefixes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nolocking\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--rows\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--trustcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unquoted\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--nameprefixes\fP
+.br
+Add an "LVM2_" prefix plus the field name to the output. Useful
+with --noheadings to produce a list of field=value pairs that can
+be used to set environment variables (for example, in udev rules).
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nolocking\fP
+.br
+Disable locking.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--rows\fP
+.br
+Output columns as rows.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--trustcache\fP
+.br
+Avoids certain device scanning during command processing. Do not use.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB--unquoted\fP
+.br
+When used with --nameprefixes, output values in the field=value
+pairs are not quoted.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvm-lvpoll.8.des b/man/lvm-lvpoll.8.des
deleted file mode 100644
index 35c2522..0000000
--- a/man/lvm-lvpoll.8.des
+++ /dev/null
@@ -1,4 +0,0 @@
-lvm lvpoll is an internal command used by \fBlvmpolld\fP(8) to monitor and
-complete \fBlvconvert\fP(8) and \fBpvmove\fP(8) operations. lvpoll itself
-does not initiate these operations and should not normally need to be run
-directly.
diff --git a/man/lvm-lvpoll.8.end b/man/lvm-lvpoll.8.end
deleted file mode 100644
index eddb364..0000000
--- a/man/lvm-lvpoll.8.end
+++ /dev/null
@@ -1,33 +0,0 @@
-.SH NOTES
-
-To find the name of the pvmove LV that was created by an original
-\fBpvmove /dev/name\fP command, use the command:
-.br
-\fBlvs -a -S move_pv=/dev/name\fP.
-
-.SH EXAMPLES
-
-Continue polling a pvmove operation.
-.br
-.B lvm lvpoll --polloperation pvmove vg00/pvmove0
-
-Abort a pvmove operation.
-.br
-.B lvm lvpoll --polloperation pvmove --abort vg00/pvmove0
-
-Continue polling a mirror conversion.
-.br
-.B lvm lvpoll --polloperation convert vg00/lvmirror
-
-Continue mirror repair.
-.br
-.B lvm lvpoll --polloperation convert vg/damaged_mirror --handlemissingpvs
-
-Continue snapshot merge.
-.br
-.B lvm lvpoll --polloperation merge vg/snapshot_old
-
-Continue thin snapshot merge.
-.br
-.B lvm lvpoll --polloperation merge_thin vg/thin_snapshot
-
diff --git a/man/lvm-lvpoll.8_des b/man/lvm-lvpoll.8_des
new file mode 100644
index 0000000..35c2522
--- /dev/null
+++ b/man/lvm-lvpoll.8_des
@@ -0,0 +1,4 @@
+lvm lvpoll is an internal command used by \fBlvmpolld\fP(8) to monitor and
+complete \fBlvconvert\fP(8) and \fBpvmove\fP(8) operations. lvpoll itself
+does not initiate these operations and should not normally need to be run
+directly.
diff --git a/man/lvm-lvpoll.8_end b/man/lvm-lvpoll.8_end
new file mode 100644
index 0000000..eddb364
--- /dev/null
+++ b/man/lvm-lvpoll.8_end
@@ -0,0 +1,33 @@
+.SH NOTES
+
+To find the name of the pvmove LV that was created by an original
+\fBpvmove /dev/name\fP command, use the command:
+.br
+\fBlvs -a -S move_pv=/dev/name\fP.
+
+.SH EXAMPLES
+
+Continue polling a pvmove operation.
+.br
+.B lvm lvpoll --polloperation pvmove vg00/pvmove0
+
+Abort a pvmove operation.
+.br
+.B lvm lvpoll --polloperation pvmove --abort vg00/pvmove0
+
+Continue polling a mirror conversion.
+.br
+.B lvm lvpoll --polloperation convert vg00/lvmirror
+
+Continue mirror repair.
+.br
+.B lvm lvpoll --polloperation convert vg/damaged_mirror --handlemissingpvs
+
+Continue snapshot merge.
+.br
+.B lvm lvpoll --polloperation merge vg/snapshot_old
+
+Continue thin snapshot merge.
+.br
+.B lvm lvpoll --polloperation merge_thin vg/thin_snapshot
+
diff --git a/man/lvm-lvpoll.8_pregen b/man/lvm-lvpoll.8_pregen
new file mode 100644
index 0000000..935123c
--- /dev/null
+++ b/man/lvm-lvpoll.8_pregen
@@ -0,0 +1,373 @@
+.TH LVM LVPOLL 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvm lvpoll \- Continue already initiated poll operation on a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvm lvpoll\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvm lvpoll is an internal command used by \fBlvmpolld\fP(8) to monitor and
+complete \fBlvconvert\fP(8) and \fBpvmove\fP(8) operations. lvpoll itself
+does not initiate these operations and should not normally need to be run
+directly.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvm lvpoll\fP \fB--polloperation\fP \fBpvmove\fP|\fBconvert\fP|\fBmerge\fP|\fBmerge_thin\fP \fILV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--abort\fP ]
+.ad b
+.br
+.ad l
+[    \fB--handlemissingpvs\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--abort\fP
+.br
+Stop processing a poll operation in lvmpolld.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--handlemissingpvs\fP
+.br
+Allows a polling operation to continue when PVs are missing,
+e.g. for repairs due to faulty devices.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--interval\fP \fINumber\fP
+.br
+Report progress at regular intervals.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--polloperation\fP \fBpvmove\fP|\fBconvert\fP|\fBmerge\fP|\fBmerge_thin\fP
+.br
+The command to perform from lvmpolld.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+
+To find the name of the pvmove LV that was created by an original
+\fBpvmove /dev/name\fP command, use the command:
+.br
+\fBlvs -a -S move_pv=/dev/name\fP.
+
+.SH EXAMPLES
+
+Continue polling a pvmove operation.
+.br
+.B lvm lvpoll --polloperation pvmove vg00/pvmove0
+
+Abort a pvmove operation.
+.br
+.B lvm lvpoll --polloperation pvmove --abort vg00/pvmove0
+
+Continue polling a mirror conversion.
+.br
+.B lvm lvpoll --polloperation convert vg00/lvmirror
+
+Continue mirror repair.
+.br
+.B lvm lvpoll --polloperation convert vg/damaged_mirror --handlemissingpvs
+
+Continue snapshot merge.
+.br
+.B lvm lvpoll --polloperation merge vg/snapshot_old
+
+Continue thin snapshot merge.
+.br
+.B lvm lvpoll --polloperation merge_thin vg/thin_snapshot
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvm.8.in b/man/lvm.8.in
deleted file mode 100644
index 1f3247a..0000000
--- a/man/lvm.8.in
+++ /dev/null
@@ -1,553 +0,0 @@
-.TH LVM 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
-.
-.SH NAME
-.
-lvm \(em LVM2 tools
-.
-.SH SYNOPSIS
-.
-.B lvm
-.RI [ command | file ]
-.
-.SH DESCRIPTION
-.
-lvm provides the command-line tools for LVM2.  A separate
-manual page describes each command in detail.
-.P
-If \fBlvm\fP is invoked with no arguments it presents a readline prompt
-(assuming it was compiled with readline support).
-LVM commands may be entered interactively at this prompt with
-readline facilities including history and command name and option
-completion.  Refer to \fBreadline\fP(3) for details.
-.P
-If \fBlvm\fP is invoked with argv[0] set to the name of a specific
-LVM command (for example by using a hard or soft link) it acts as
-that command.
-.P
-On invocation, \fBlvm\fP requires that only the standard file descriptors
-stdin, stdout and stderr are available.  If others are found, they
-get closed and messages are issued warning about the leak.
-This warning can be suppressed by setting the environment variable
-.B LVM_SUPPRESS_FD_WARNINGS\fP.
-.P
-Where commands take VG or LV names as arguments, the full path name is
-optional.  An LV called "lvol0" in a VG called "vg0" can be specified
-as "vg0/lvol0".  Where a list of VGs is required but is left empty,
-a list of all VGs will be substituted.  Where a list of LVs is required
-but a VG is given, a list of all the LVs in that VG will be substituted.
-So \fBlvdisplay vg0\fP will display all the LVs in "vg0".
-Tags can also be used - see \fB\-\-addtag\fP below.
-.P
-One advantage of using the built-in shell is that configuration
-information gets cached internally between commands.
-.P
-A file containing a simple script with one command per line
-can also be given on the command line.  The script can also be
-executed directly if the first line is #! followed by the absolute
-path of \fBlvm\fP.
-.P
-Additional hyphens within option names are ignored.  For example,
-\fB\-\-readonly\fP and \fB\-\-read\-only\fP are both accepted.
-.
-.SH BUILT-IN COMMANDS
-.
-The following commands are built into lvm without links
-normally being created in the filesystem for them.
-.sp
-.PD 0
-.TP 14
-.B config
-The same as \fBlvmconfig\fP(8) below.
-.TP
-.B devtypes
-Display the recognised built-in block device types.
-.TP
-.B dumpconfig
-The same as \fBlvmconfig\fP(8) below.
-.TP
-.B formats
-Display recognised metadata formats.
-.TP
-.B fullreport
-Report information about PVs, PV segments, VGs, LVs and LV segments,
-all at once.
-.TP
-.B help
-Display the help text.
-.TP
-.B lastlog
-Display log report of last command run in LVM shell
-if command log reporting is enabled.
-.TP
-.B lvpoll
-Complete lvmpolld operations (Internal command).
-.TP
-.B pvdata
-Not implemented in LVM2.
-.TP
-.B segtypes
-Display recognised Logical Volume segment types.
-.TP
-.B systemid
-Display any system ID currently set on this host.
-.TP
-.B tags
-Display any tags defined on this host.
-.TP
-.B version
-Display version information.
-.PD
-.
-.SH COMMANDS
-.
-The following commands implement the core LVM functionality.
-.sp
-.PD 0
-.TP 14
-.B pvchange
-Change attributes of a Physical Volume.
-.TP
-.B pvck
-Check Physical Volume metadata.
-.TP
-.B pvcreate
-Initialize a disk or partition for use by LVM.
-.TP
-.B pvdisplay
-Display attributes of a Physical Volume.
-.TP
-.B pvmove
-Move Physical Extents.
-.TP
-.B pvremove
-Remove a Physical Volume.
-.TP
-.B pvresize
-Resize a disk or partition in use by LVM2.
-.TP
-.B pvs
-Report information about Physical Volumes.
-.TP
-.B pvscan
-Scan all disks for Physical Volumes.
-.TP
-.B vgcfgbackup
-Backup Volume Group descriptor area.
-.TP
-.B vgcfgrestore
-Restore Volume Group descriptor area.
-.TP
-.B vgchange
-Change attributes of a Volume Group.
-.TP
-.B vgck
-Check Volume Group metadata.
-.TP
-.B vgconvert
-Convert Volume Group metadata format.
-.TP
-.B vgcreate
-Create a Volume Group.
-.TP
-.B vgdisplay
-Display attributes of Volume Groups.
-.TP
-.B vgexport
-Make volume Groups unknown to the system.
-.TP
-.B vgextend
-Add Physical Volumes to a Volume Group.
-.TP
-.B vgimport
-Make exported Volume Groups known to the system.
-.TP
-.B vgimportclone
-Import and rename duplicated Volume Group (e.g. a hardware snapshot).
-.TP
-.B vgmerge
-Merge two Volume Groups.
-.TP
-.B vgmknodes
-Recreate Volume Group directory and Logical Volume special files
-.TP
-.B vgreduce
-Reduce a Volume Group by removing one or more Physical Volumes.
-.TP
-.B vgremove
-Remove a Volume Group.
-.TP
-.B vgrename
-Rename a Volume Group.
-.TP
-.B vgs
-Report information about Volume Groups.
-.TP
-.B vgscan
-Scan all disks for Volume Groups and rebuild caches.
-.TP
-.B vgsplit
-Split a Volume Group into two, moving any logical
-volumes from one Volume Group to another by moving entire Physical
-Volumes.
-.TP
-.B lvchange
-Change attributes of a Logical Volume.
-.TP
-.B lvconvert
-Convert a Logical Volume from linear to mirror or snapshot.
-.TP
-.B lvcreate
-Create a Logical Volume in an existing Volume Group.
-.TP
-.B lvdisplay
-Display attributes of a Logical Volume.
-.TP
-.B lvextend
-Extend the size of a Logical Volume.
-.TP
-.B lvmchange
-Change attributes of the Logical Volume Manager.
-.TP
-.B lvmconfig
-Display the configuration information after
-loading \fBlvm.conf\fP(5) and any other configuration files.
-.TP
-.B lvmdiskscan
-Scan for all devices visible to LVM2.
-.TP
-.B lvmdump
-Create lvm2 information dumps for diagnostic purposes.
-.TP
-.B lvreduce
-Reduce the size of a Logical Volume.
-.TP
-.B lvremove
-Remove a Logical Volume.
-.TP
-.B lvrename
-Rename a Logical Volume.
-.TP
-.B lvresize
-Resize a Logical Volume.
-.TP
-.B lvs
-Report information about Logical Volumes.
-.TP
-.B lvscan
-Scan (all disks) for Logical Volumes.
-.PD
-.P
-The following commands are not implemented in LVM2 but might be
-in the future:
-.BR lvmsadc ", " lvmsar ", " pvdata .
-.
-.SH VALID NAMES
-.
-The valid characters for VG and LV names are:
-.BR a - z
-.BR A - Z
-.BR 0 - 9
-.BR "+ _ . -"
-.P
-VG names cannot begin with a hyphen.
-The name of a new LV also cannot begin with a hyphen.  However, if the
-configuration setting \fBmetadata/record_lvs_history\fP is enabled then an LV
-name with a hyphen as a prefix indicates that, although the LV was
-removed, it is still being tracked because it forms part of the history of at
-least one LV that is still present.  This helps to record the ancestry of
-thin snapshots even after some links in the chain have been removed.
-A reference to the historical LV 'lvol1' in VG 'vg00' would be 'vg00/-lvol1'
-or just '-lvol1' if the VG is already set.  (The latter form must be preceded
-by '--' to terminate command line option processing before reaching this
-argument.)
-.P
-There are also various reserved names that are used internally by lvm that can
-not be used as LV or VG names. A VG cannot be called anything that exists in
-\fI/dev/\fP at the time of creation, nor can it be called '.' or '..'.
-An LV cannot be called '.', '..', 'snapshot' or 'pvmove'.
-The LV name may also not contain any of the following strings:
-\fR'_cdata', '_cmeta', '_corig', '_mlog', '_mimage', '_pmspare',
-\fR'_rimage', '_rmeta', '_tdata', '_tmeta' or '_vorigin'.
-A directory bearing the name of each Volume Group is created under
-\fI/dev\fP when any of its Logical Volumes are activated.
-Each active Logical Volume is accessible from this directory as a symbolic
-link leading to a device node.
-Links or nodes in \fI/dev/mapper\fP are intended only for internal use and
-the precise format and escaping might change between releases and distributions.
-Other software and scripts should use the
-\fI/dev/VolumeGroupName/LogicalVolumeName\fP format to reduce the chance of needing
-amendment when the software is updated.  Should you need to process the node
-names in /dev/mapper, you may use \fBdmsetup splitname\fP to separate out the
-original VG, LV and internal layer names.
-.P
-.
-.SH UNIQUE NAMES
-.
-
-VG names should be unique.  vgcreate will produce an error if the
-specified VG name matches an existing VG name.  However, there are cases
-where different VGs with the same name can appear to LVM, e.g. after
-moving disks or changing filters.
-
-When VGs with the same name exist, commands operating on all VGs will
-include all of the VGs with the same name.  If the ambiguous VG name is
-specified on the command line, the command will produce an error.  The
-error states that multiple VGs exist with the specified name.  To process
-one of the VGs specifically, the --select option should be used with the
-UUID of the intended VG: '--select vg_uuid=<uuid>'.
-
-An exception is if all but one of the VGs with the shared name is foreign
-(see
-.BR lvmsystemid (7).)
-In this case, the one VG that is not foreign is assumed to be the intended
-VG and is processed.
-.P
-LV names are unique within a VG.  The name of an historical LV cannot be
-reused until the historical LV has itself been removed or renamed.
-
-.
-.SH ALLOCATION
-.
-When an operation needs to allocate Physical Extents for one or more
-Logical Volumes, the tools proceed as follows:
-
-First of all, they generate the complete set of unallocated Physical Extents
-in the Volume Group.  If any ranges of Physical Extents are supplied at
-the end of the command line, only unallocated Physical Extents within
-those ranges on the specified Physical Volumes are considered.
-
-Then they try each allocation policy in turn, starting with the strictest
-policy (\fBcontiguous\fP) and ending with the allocation policy specified
-using \fB\-\-alloc\fP or set as the default for the particular Logical
-Volume or Volume Group concerned.  For each policy, working from the
-lowest-numbered Logical Extent of the empty Logical Volume space that
-needs to be filled, they allocate as much space as possible according to
-the restrictions imposed by the policy.  If more space is needed,
-they move on to the next policy.
-
-The restrictions are as follows:
-
-\fBContiguous\fP requires that the physical location of any Logical
-Extent that is not the first Logical Extent of a Logical Volume is
-adjacent to the physical location of the Logical Extent immediately
-preceding it.
-
-\fBCling\fP requires that the Physical Volume used for any Logical
-Extent to be added to an existing Logical Volume is already in use by at
-least one Logical Extent earlier in that Logical Volume.  If the
-configuration parameter \fBallocation/cling_tag_list\fP is defined, then two
-Physical Volumes are considered to match if any of the listed tags is
-present on both Physical Volumes.  This allows groups of Physical
-Volumes with similar properties (such as their physical location) to be
-tagged and treated as equivalent for allocation purposes.
-
-When a Logical Volume is striped or mirrored, the above restrictions are
-applied independently to each stripe or mirror image (leg) that needs
-space.
-
-\fBNormal\fP will not choose a Physical Extent that shares the same Physical
-Volume as a Logical Extent already allocated to a parallel Logical
-Volume (i.e. a different stripe or mirror image/leg) at the same offset
-within that parallel Logical Volume.
-
-When allocating a mirror log at the same time as Logical Volumes to hold
-the mirror data, Normal will first try to select different Physical
-Volumes for the log and the data.  If that's not possible and the
-.B allocation/mirror_logs_require_separate_pvs
-configuration parameter is set to 0, it will then allow the log
-to share Physical Volume(s) with part of the data.
-
-When allocating thin pool metadata, similar considerations to those of a
-mirror log in the last paragraph apply based on the value of the
-.B allocation/thin_pool_metadata_require_separate_pvs
-configuration parameter.
-
-If you rely upon any layout behaviour beyond that documented here, be
-aware that it might change in future versions of the code.
-
-For example, if you supply on the command line two empty Physical
-Volumes that have an identical number of free Physical Extents available for
-allocation, the current code considers using each of them in the order
-they are listed, but there is no guarantee that future releases will
-maintain that property.  If it is important to obtain a specific layout
-for a particular Logical Volume, then you should build it up through a
-sequence of \fBlvcreate\fP(8) and \fBlvconvert\fP(8) steps such that the
-restrictions described above applied to each step leave the tools no
-discretion over the layout.
-
-To view the way the allocation process currently works in any specific
-case, read the debug logging output, for example by adding \fB\-vvvv\fP to
-a command.
-.
-.SH LOGICAL VOLUME TYPES
-.
-Some logical volume types are simple to create and can be done with a
-single \fBlvcreate\fP(8) command.  The linear and striped logical
-volume types are an example of this.  Other logical volume types may
-require more than one command to create.  The cache (\fBlvmcache\fP(7))
-and thin provisioning (\fBlvmthin\fP(7)) types are examples of this.
-.
-.SH DIAGNOSTICS
-.
-All tools return a status code of zero on success or non-zero on failure.
-The non-zero codes distinguish only between the broad categories of
-unrecognised commands, problems processing the command line arguments
-and any other failures.  As LVM remains under active development, the
-code used in a specific case occasionally changes between releases.
-Message text may also change.
-.
-.SH ENVIRONMENT VARIABLES
-.
-.TP
-.B HOME
-Directory containing \fI.lvm_history\fP if the internal readline
-shell is invoked.
-.TP
-.B LVM_OUT_FD
-File descriptor to use for common output from LVM commands.
-.TP
-.B LVM_ERR_FD
-File descriptor to use for error output from LVM commands.
-.TP
-.B LVM_REPORT_FD
-File descriptor to use for report output from LVM commands.
-.TP
-.B LVM_COMMAND_PROFILE
-Name of default command profile to use for LVM commands. This profile
-is overriden by direct use of \fB\-\-commandprofile\fP command line option.
-.TP
-.B LVM_RUN_BY_DMEVENTD
-This variable is normally set by dmeventd plugin to inform lvm2 command
-it is running from dmeventd plugin so lvm2 takes some extra action
-to avoid comunication and deadlocks with dmeventd.
-.TP
-.B LVM_SYSTEM_DIR
-Directory containing \fBlvm.conf\fP(5) and other LVM system files.
-Defaults to "\fI#DEFAULT_SYS_DIR#\fP".
-.TP
-.B LVM_SUPPRESS_FD_WARNINGS
-Suppress warnings about unexpected file descriptors passed into LVM.
-.TP
-.B LVM_VG_NAME
-The Volume Group name that is assumed for
-any reference to a Logical Volume that doesn't specify a path.
-Not set by default.
-.TP
-.B LVM_LVMETAD_PIDFILE
-Path to the file that stores the lvmetad process ID.
-.TP
-.B LVM_LVMETAD_SOCKET
-Path to the socket used to communicate with lvmetad.
-.TP
-.B LVM_LVMPOLLD_PIDFILE
-Path to the file that stores the lvmpolld process ID.
-.TP
-.B LVM_LVMPOLLD_SOCKET
-Path to the socket used to communicate with lvmpolld..
-.TP
-.B LVM_LOG_FILE_EPOCH
-A string of up to 32 letters appended to the log filename and
-followed by the process ID and a startup timestamp using
-this format string "_%s_%d_%llu".  When set, each process logs to a
-separate file.
-.TP
-.B LVM_LOG_FILE_MAX_LINES
-If more than this number of lines are sent to the log file, the command gets
-aborted.  Automated tests use this to terminate looping commands.
-.TP
-.B LVM_EXPECTED_EXIT_STATUS
-The status anticipated when the process exits.  Use ">N" to match any
-status greater than N.  If the actual exit status matches and a log
-file got produced, it is deleted.
-.B LVM_LOG_FILE_EPOCH
-and
-.B LVM_EXPECTED_EXIT_STATUS
-together allow automated test scripts to discard uninteresting log data.
-.TP
-.B LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES
-Used to suppress warning messages when the configured locking is known
-to be unavailable.
-.TP
-.B DM_ABORT_ON_INTERNAL_ERRORS
-Abort processing if the code detects a non-fatal internal error.
-.TP
-.B DM_DISABLE_UDEV
-Avoid interaction with udev.  LVM will manage the relevant nodes in /dev
-directly.
-.
-.SH FILES
-.
-.I #DEFAULT_SYS_DIR#/lvm.conf
-.br
-.I $HOME/.lvm_history
-.
-.SH SEE ALSO
-.
-.nh
-.BR lvm (8)
-.BR lvm.conf (5)
-.BR lvmconfig (8)
-
-.BR pvchange (8)
-.BR pvck (8)
-.BR pvcreate (8)
-.BR pvdisplay (8)
-.BR pvmove (8)
-.BR pvremove (8)
-.BR pvresize (8)
-.BR pvs (8)
-.BR pvscan (8) 
-
-.BR vgcfgbackup (8)
-.BR vgcfgrestore (8)
-.BR vgchange (8)
-.BR vgck (8)
-.BR vgcreate (8)
-.BR vgconvert (8)
-.BR vgdisplay (8)
-.BR vgexport (8)
-.BR vgextend (8)
-.BR vgimport (8)
-.BR vgimportclone (8)
-.BR vgmerge (8)
-.BR vgmknodes (8)
-.BR vgreduce (8)
-.BR vgremove (8)
-.BR vgrename (8)
-.BR vgs (8)
-.BR vgscan (8)
-.BR vgsplit (8) 
-
-.BR lvcreate (8)
-.BR lvchange (8)
-.BR lvconvert (8)
-.BR lvdisplay (8)
-.BR lvextend (8)
-.BR lvreduce (8)
-.BR lvremove (8)
-.BR lvrename (8)
-.BR lvresize (8)
-.BR lvs (8)
-.BR lvscan (8)
-
-.BR lvm2-activation-generator (8)
-.BR blkdeactivate (8)
-.BR lvmdump (8)
-
-.BR dmeventd (8)
-.BR lvmetad (8)
-.BR lvmpolld (8)
-.BR lvmlockd (8)
-.BR lvmlockctl (8)
-.BR clvmd (8)
-.BR cmirrord (8)
-.BR lvmdbusd (8)
-
-.BR lvmsystemid (7)
-.BR lvmreport (7)
-.BR lvmraid (7)
-.BR lvmthin (7)
-.BR lvmcache (7)
-
-.BR dmsetup (8),
-.BR readline (3)
diff --git a/man/lvm.8_main b/man/lvm.8_main
new file mode 100644
index 0000000..1f3247a
--- /dev/null
+++ b/man/lvm.8_main
@@ -0,0 +1,553 @@
+.TH LVM 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
+.
+.SH NAME
+.
+lvm \(em LVM2 tools
+.
+.SH SYNOPSIS
+.
+.B lvm
+.RI [ command | file ]
+.
+.SH DESCRIPTION
+.
+lvm provides the command-line tools for LVM2.  A separate
+manual page describes each command in detail.
+.P
+If \fBlvm\fP is invoked with no arguments it presents a readline prompt
+(assuming it was compiled with readline support).
+LVM commands may be entered interactively at this prompt with
+readline facilities including history and command name and option
+completion.  Refer to \fBreadline\fP(3) for details.
+.P
+If \fBlvm\fP is invoked with argv[0] set to the name of a specific
+LVM command (for example by using a hard or soft link) it acts as
+that command.
+.P
+On invocation, \fBlvm\fP requires that only the standard file descriptors
+stdin, stdout and stderr are available.  If others are found, they
+get closed and messages are issued warning about the leak.
+This warning can be suppressed by setting the environment variable
+.B LVM_SUPPRESS_FD_WARNINGS\fP.
+.P
+Where commands take VG or LV names as arguments, the full path name is
+optional.  An LV called "lvol0" in a VG called "vg0" can be specified
+as "vg0/lvol0".  Where a list of VGs is required but is left empty,
+a list of all VGs will be substituted.  Where a list of LVs is required
+but a VG is given, a list of all the LVs in that VG will be substituted.
+So \fBlvdisplay vg0\fP will display all the LVs in "vg0".
+Tags can also be used - see \fB\-\-addtag\fP below.
+.P
+One advantage of using the built-in shell is that configuration
+information gets cached internally between commands.
+.P
+A file containing a simple script with one command per line
+can also be given on the command line.  The script can also be
+executed directly if the first line is #! followed by the absolute
+path of \fBlvm\fP.
+.P
+Additional hyphens within option names are ignored.  For example,
+\fB\-\-readonly\fP and \fB\-\-read\-only\fP are both accepted.
+.
+.SH BUILT-IN COMMANDS
+.
+The following commands are built into lvm without links
+normally being created in the filesystem for them.
+.sp
+.PD 0
+.TP 14
+.B config
+The same as \fBlvmconfig\fP(8) below.
+.TP
+.B devtypes
+Display the recognised built-in block device types.
+.TP
+.B dumpconfig
+The same as \fBlvmconfig\fP(8) below.
+.TP
+.B formats
+Display recognised metadata formats.
+.TP
+.B fullreport
+Report information about PVs, PV segments, VGs, LVs and LV segments,
+all at once.
+.TP
+.B help
+Display the help text.
+.TP
+.B lastlog
+Display log report of last command run in LVM shell
+if command log reporting is enabled.
+.TP
+.B lvpoll
+Complete lvmpolld operations (Internal command).
+.TP
+.B pvdata
+Not implemented in LVM2.
+.TP
+.B segtypes
+Display recognised Logical Volume segment types.
+.TP
+.B systemid
+Display any system ID currently set on this host.
+.TP
+.B tags
+Display any tags defined on this host.
+.TP
+.B version
+Display version information.
+.PD
+.
+.SH COMMANDS
+.
+The following commands implement the core LVM functionality.
+.sp
+.PD 0
+.TP 14
+.B pvchange
+Change attributes of a Physical Volume.
+.TP
+.B pvck
+Check Physical Volume metadata.
+.TP
+.B pvcreate
+Initialize a disk or partition for use by LVM.
+.TP
+.B pvdisplay
+Display attributes of a Physical Volume.
+.TP
+.B pvmove
+Move Physical Extents.
+.TP
+.B pvremove
+Remove a Physical Volume.
+.TP
+.B pvresize
+Resize a disk or partition in use by LVM2.
+.TP
+.B pvs
+Report information about Physical Volumes.
+.TP
+.B pvscan
+Scan all disks for Physical Volumes.
+.TP
+.B vgcfgbackup
+Backup Volume Group descriptor area.
+.TP
+.B vgcfgrestore
+Restore Volume Group descriptor area.
+.TP
+.B vgchange
+Change attributes of a Volume Group.
+.TP
+.B vgck
+Check Volume Group metadata.
+.TP
+.B vgconvert
+Convert Volume Group metadata format.
+.TP
+.B vgcreate
+Create a Volume Group.
+.TP
+.B vgdisplay
+Display attributes of Volume Groups.
+.TP
+.B vgexport
+Make volume Groups unknown to the system.
+.TP
+.B vgextend
+Add Physical Volumes to a Volume Group.
+.TP
+.B vgimport
+Make exported Volume Groups known to the system.
+.TP
+.B vgimportclone
+Import and rename duplicated Volume Group (e.g. a hardware snapshot).
+.TP
+.B vgmerge
+Merge two Volume Groups.
+.TP
+.B vgmknodes
+Recreate Volume Group directory and Logical Volume special files
+.TP
+.B vgreduce
+Reduce a Volume Group by removing one or more Physical Volumes.
+.TP
+.B vgremove
+Remove a Volume Group.
+.TP
+.B vgrename
+Rename a Volume Group.
+.TP
+.B vgs
+Report information about Volume Groups.
+.TP
+.B vgscan
+Scan all disks for Volume Groups and rebuild caches.
+.TP
+.B vgsplit
+Split a Volume Group into two, moving any logical
+volumes from one Volume Group to another by moving entire Physical
+Volumes.
+.TP
+.B lvchange
+Change attributes of a Logical Volume.
+.TP
+.B lvconvert
+Convert a Logical Volume from linear to mirror or snapshot.
+.TP
+.B lvcreate
+Create a Logical Volume in an existing Volume Group.
+.TP
+.B lvdisplay
+Display attributes of a Logical Volume.
+.TP
+.B lvextend
+Extend the size of a Logical Volume.
+.TP
+.B lvmchange
+Change attributes of the Logical Volume Manager.
+.TP
+.B lvmconfig
+Display the configuration information after
+loading \fBlvm.conf\fP(5) and any other configuration files.
+.TP
+.B lvmdiskscan
+Scan for all devices visible to LVM2.
+.TP
+.B lvmdump
+Create lvm2 information dumps for diagnostic purposes.
+.TP
+.B lvreduce
+Reduce the size of a Logical Volume.
+.TP
+.B lvremove
+Remove a Logical Volume.
+.TP
+.B lvrename
+Rename a Logical Volume.
+.TP
+.B lvresize
+Resize a Logical Volume.
+.TP
+.B lvs
+Report information about Logical Volumes.
+.TP
+.B lvscan
+Scan (all disks) for Logical Volumes.
+.PD
+.P
+The following commands are not implemented in LVM2 but might be
+in the future:
+.BR lvmsadc ", " lvmsar ", " pvdata .
+.
+.SH VALID NAMES
+.
+The valid characters for VG and LV names are:
+.BR a - z
+.BR A - Z
+.BR 0 - 9
+.BR "+ _ . -"
+.P
+VG names cannot begin with a hyphen.
+The name of a new LV also cannot begin with a hyphen.  However, if the
+configuration setting \fBmetadata/record_lvs_history\fP is enabled then an LV
+name with a hyphen as a prefix indicates that, although the LV was
+removed, it is still being tracked because it forms part of the history of at
+least one LV that is still present.  This helps to record the ancestry of
+thin snapshots even after some links in the chain have been removed.
+A reference to the historical LV 'lvol1' in VG 'vg00' would be 'vg00/-lvol1'
+or just '-lvol1' if the VG is already set.  (The latter form must be preceded
+by '--' to terminate command line option processing before reaching this
+argument.)
+.P
+There are also various reserved names that are used internally by lvm that can
+not be used as LV or VG names. A VG cannot be called anything that exists in
+\fI/dev/\fP at the time of creation, nor can it be called '.' or '..'.
+An LV cannot be called '.', '..', 'snapshot' or 'pvmove'.
+The LV name may also not contain any of the following strings:
+\fR'_cdata', '_cmeta', '_corig', '_mlog', '_mimage', '_pmspare',
+\fR'_rimage', '_rmeta', '_tdata', '_tmeta' or '_vorigin'.
+A directory bearing the name of each Volume Group is created under
+\fI/dev\fP when any of its Logical Volumes are activated.
+Each active Logical Volume is accessible from this directory as a symbolic
+link leading to a device node.
+Links or nodes in \fI/dev/mapper\fP are intended only for internal use and
+the precise format and escaping might change between releases and distributions.
+Other software and scripts should use the
+\fI/dev/VolumeGroupName/LogicalVolumeName\fP format to reduce the chance of needing
+amendment when the software is updated.  Should you need to process the node
+names in /dev/mapper, you may use \fBdmsetup splitname\fP to separate out the
+original VG, LV and internal layer names.
+.P
+.
+.SH UNIQUE NAMES
+.
+
+VG names should be unique.  vgcreate will produce an error if the
+specified VG name matches an existing VG name.  However, there are cases
+where different VGs with the same name can appear to LVM, e.g. after
+moving disks or changing filters.
+
+When VGs with the same name exist, commands operating on all VGs will
+include all of the VGs with the same name.  If the ambiguous VG name is
+specified on the command line, the command will produce an error.  The
+error states that multiple VGs exist with the specified name.  To process
+one of the VGs specifically, the --select option should be used with the
+UUID of the intended VG: '--select vg_uuid=<uuid>'.
+
+An exception is if all but one of the VGs with the shared name is foreign
+(see
+.BR lvmsystemid (7).)
+In this case, the one VG that is not foreign is assumed to be the intended
+VG and is processed.
+.P
+LV names are unique within a VG.  The name of an historical LV cannot be
+reused until the historical LV has itself been removed or renamed.
+
+.
+.SH ALLOCATION
+.
+When an operation needs to allocate Physical Extents for one or more
+Logical Volumes, the tools proceed as follows:
+
+First of all, they generate the complete set of unallocated Physical Extents
+in the Volume Group.  If any ranges of Physical Extents are supplied at
+the end of the command line, only unallocated Physical Extents within
+those ranges on the specified Physical Volumes are considered.
+
+Then they try each allocation policy in turn, starting with the strictest
+policy (\fBcontiguous\fP) and ending with the allocation policy specified
+using \fB\-\-alloc\fP or set as the default for the particular Logical
+Volume or Volume Group concerned.  For each policy, working from the
+lowest-numbered Logical Extent of the empty Logical Volume space that
+needs to be filled, they allocate as much space as possible according to
+the restrictions imposed by the policy.  If more space is needed,
+they move on to the next policy.
+
+The restrictions are as follows:
+
+\fBContiguous\fP requires that the physical location of any Logical
+Extent that is not the first Logical Extent of a Logical Volume is
+adjacent to the physical location of the Logical Extent immediately
+preceding it.
+
+\fBCling\fP requires that the Physical Volume used for any Logical
+Extent to be added to an existing Logical Volume is already in use by at
+least one Logical Extent earlier in that Logical Volume.  If the
+configuration parameter \fBallocation/cling_tag_list\fP is defined, then two
+Physical Volumes are considered to match if any of the listed tags is
+present on both Physical Volumes.  This allows groups of Physical
+Volumes with similar properties (such as their physical location) to be
+tagged and treated as equivalent for allocation purposes.
+
+When a Logical Volume is striped or mirrored, the above restrictions are
+applied independently to each stripe or mirror image (leg) that needs
+space.
+
+\fBNormal\fP will not choose a Physical Extent that shares the same Physical
+Volume as a Logical Extent already allocated to a parallel Logical
+Volume (i.e. a different stripe or mirror image/leg) at the same offset
+within that parallel Logical Volume.
+
+When allocating a mirror log at the same time as Logical Volumes to hold
+the mirror data, Normal will first try to select different Physical
+Volumes for the log and the data.  If that's not possible and the
+.B allocation/mirror_logs_require_separate_pvs
+configuration parameter is set to 0, it will then allow the log
+to share Physical Volume(s) with part of the data.
+
+When allocating thin pool metadata, similar considerations to those of a
+mirror log in the last paragraph apply based on the value of the
+.B allocation/thin_pool_metadata_require_separate_pvs
+configuration parameter.
+
+If you rely upon any layout behaviour beyond that documented here, be
+aware that it might change in future versions of the code.
+
+For example, if you supply on the command line two empty Physical
+Volumes that have an identical number of free Physical Extents available for
+allocation, the current code considers using each of them in the order
+they are listed, but there is no guarantee that future releases will
+maintain that property.  If it is important to obtain a specific layout
+for a particular Logical Volume, then you should build it up through a
+sequence of \fBlvcreate\fP(8) and \fBlvconvert\fP(8) steps such that the
+restrictions described above applied to each step leave the tools no
+discretion over the layout.
+
+To view the way the allocation process currently works in any specific
+case, read the debug logging output, for example by adding \fB\-vvvv\fP to
+a command.
+.
+.SH LOGICAL VOLUME TYPES
+.
+Some logical volume types are simple to create and can be done with a
+single \fBlvcreate\fP(8) command.  The linear and striped logical
+volume types are an example of this.  Other logical volume types may
+require more than one command to create.  The cache (\fBlvmcache\fP(7))
+and thin provisioning (\fBlvmthin\fP(7)) types are examples of this.
+.
+.SH DIAGNOSTICS
+.
+All tools return a status code of zero on success or non-zero on failure.
+The non-zero codes distinguish only between the broad categories of
+unrecognised commands, problems processing the command line arguments
+and any other failures.  As LVM remains under active development, the
+code used in a specific case occasionally changes between releases.
+Message text may also change.
+.
+.SH ENVIRONMENT VARIABLES
+.
+.TP
+.B HOME
+Directory containing \fI.lvm_history\fP if the internal readline
+shell is invoked.
+.TP
+.B LVM_OUT_FD
+File descriptor to use for common output from LVM commands.
+.TP
+.B LVM_ERR_FD
+File descriptor to use for error output from LVM commands.
+.TP
+.B LVM_REPORT_FD
+File descriptor to use for report output from LVM commands.
+.TP
+.B LVM_COMMAND_PROFILE
+Name of default command profile to use for LVM commands. This profile
+is overriden by direct use of \fB\-\-commandprofile\fP command line option.
+.TP
+.B LVM_RUN_BY_DMEVENTD
+This variable is normally set by dmeventd plugin to inform lvm2 command
+it is running from dmeventd plugin so lvm2 takes some extra action
+to avoid comunication and deadlocks with dmeventd.
+.TP
+.B LVM_SYSTEM_DIR
+Directory containing \fBlvm.conf\fP(5) and other LVM system files.
+Defaults to "\fI#DEFAULT_SYS_DIR#\fP".
+.TP
+.B LVM_SUPPRESS_FD_WARNINGS
+Suppress warnings about unexpected file descriptors passed into LVM.
+.TP
+.B LVM_VG_NAME
+The Volume Group name that is assumed for
+any reference to a Logical Volume that doesn't specify a path.
+Not set by default.
+.TP
+.B LVM_LVMETAD_PIDFILE
+Path to the file that stores the lvmetad process ID.
+.TP
+.B LVM_LVMETAD_SOCKET
+Path to the socket used to communicate with lvmetad.
+.TP
+.B LVM_LVMPOLLD_PIDFILE
+Path to the file that stores the lvmpolld process ID.
+.TP
+.B LVM_LVMPOLLD_SOCKET
+Path to the socket used to communicate with lvmpolld..
+.TP
+.B LVM_LOG_FILE_EPOCH
+A string of up to 32 letters appended to the log filename and
+followed by the process ID and a startup timestamp using
+this format string "_%s_%d_%llu".  When set, each process logs to a
+separate file.
+.TP
+.B LVM_LOG_FILE_MAX_LINES
+If more than this number of lines are sent to the log file, the command gets
+aborted.  Automated tests use this to terminate looping commands.
+.TP
+.B LVM_EXPECTED_EXIT_STATUS
+The status anticipated when the process exits.  Use ">N" to match any
+status greater than N.  If the actual exit status matches and a log
+file got produced, it is deleted.
+.B LVM_LOG_FILE_EPOCH
+and
+.B LVM_EXPECTED_EXIT_STATUS
+together allow automated test scripts to discard uninteresting log data.
+.TP
+.B LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES
+Used to suppress warning messages when the configured locking is known
+to be unavailable.
+.TP
+.B DM_ABORT_ON_INTERNAL_ERRORS
+Abort processing if the code detects a non-fatal internal error.
+.TP
+.B DM_DISABLE_UDEV
+Avoid interaction with udev.  LVM will manage the relevant nodes in /dev
+directly.
+.
+.SH FILES
+.
+.I #DEFAULT_SYS_DIR#/lvm.conf
+.br
+.I $HOME/.lvm_history
+.
+.SH SEE ALSO
+.
+.nh
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
+.BR dmsetup (8),
+.BR readline (3)
diff --git a/man/lvm.conf.5.in b/man/lvm.conf.5.in
deleted file mode 100644
index ae884be..0000000
--- a/man/lvm.conf.5.in
+++ /dev/null
@@ -1,213 +0,0 @@
-.TH LVM.CONF 5 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
-.SH NAME
-lvm.conf \(em Configuration file for LVM2
-.SH SYNOPSIS
-.B #DEFAULT_SYS_DIR#/lvm.conf
-.SH DESCRIPTION
-\fBlvm.conf\fP is loaded during the initialisation phase of
-\fBlvm\fP(8).  This file can in turn lead to other files
-being loaded - settings read in later override earlier
-settings.  File timestamps are checked between commands and if
-any have changed, all the files are reloaded.
-
-The settings defined in lvm.conf can be overridden by any
-of these extended configuration methods:
-.TP
-.B direct config override on command line
-The \fB\-\-config ConfigurationString\fP command line option takes the
-ConfigurationString as direct string representation of the configuration
-to override the existing configuration. The ConfigurationString is of
-exactly the same format as used in any LVM configuration file.
-
-.TP
-.B profile config
-.br
-A profile is a set of selected customizable configuration settings
-that are aimed to achieve a certain characteristics in various
-environments or uses. It's used to override existing configuration.
-Normally, the name of the profile should reflect that environment or use.
-
-There are two groups of profiles recognised: \fBcommand profiles\fP and
-\fBmetadata profiles\fP.
-
-The \fBcommand profile\fP is used to override selected configuration
-settings at global LVM command level - it is applied at the very beginning
-of LVM command execution and it is used throughout the whole time of LVM
-command execution. The command profile is applied by using the
-\fB\-\-commandprofile ProfileName\fP command line option that is recognised by
-all LVM2 commands.
-
-The \fBmetadata profile\fP is used to override selected configuration
-settings at Volume Group/Logical Volume level - it is applied independently
-for each Volume Group/Logical Volume that is being processed. As such,
-each Volume Group/Logical Volume can store the profile name used
-in its metadata so next time the Volume Group/Logical Volume is
-processed, the profile is applied automatically. If Volume Group and
-any of its Logical Volumes have different profiles defined, the profile
-defined for the Logical Volume is preferred. The metadata profile can be
-attached/detached by using the \fBlvchange\fP and \fBvgchange\fP commands
-and their \fB\-\-metadataprofile ProfileName\fP and
-\fB\-\-detachprofile\fP options or the \fB\-\-metadataprofile\fP
-option during creation when using \fBvgcreate\fP or \fBlvcreate\fP command.
-The \fBvgs\fP and \fBlvs\fP reporting commands provide \fB-o vg_profile\fP
-and \fB-o lv_profile\fP output options to show the metadata profile
-currently attached to a Volume Group or a Logical Volume.
-
-The set of options allowed for command profiles is mutually exclusive
-when compared to the set of options allowed for metadata profiles. The
-settings that belong to either of these two sets can't be mixed together
-and LVM tools will reject such profiles.
-
-LVM itself provides a few predefined configuration profiles.
-Users are allowed to add more profiles with different values if needed.
-For this purpose, there's the \fBcommand_profile_template.profile\fP
-(for command profiles) and \fBmetadata_profile_template.profile\fP
-(for metadata profiles) which contain all settings that are customizable
-by profiles of certain type. Users are encouraged to copy these template
-profiles and edit them as needed. Alternatively, the
-\fBlvmconfig \-\-file <ProfileName.profile> \-\-type profilable-command <section>\fP
-or \fBlvmconfig \-\-file <ProfileName.profile> \-\-type profilable-metadata <section>\fP
-can be used to generate a configuration with profilable settings in either
-of the type for given section and save it to new ProfileName.profile
-(if the section is not specified, all profilable settings are reported).
-
-The profiles are stored in #DEFAULT_PROFILE_DIR# directory by default.
-This location can be changed by using the \fBconfig/profile_dir\fP setting.
-Each profile configuration is stored in \fBProfileName.profile\fP file
-in the profile directory. When referencing the profile, the \fB.profile\fP
-suffix is left out.
-
-.TP
-.B tag config
-.br
-See \fBtags\fP configuration setting description below.
-
-.LP
-When several configuration methods are used at the same time
-and when LVM looks for the value of a particular setting, it traverses
-this \fBconfig cascade\fP from left to right:
-
-\fBdirect config override on command line\fP -> \fBcommand profile config\fP -> \fBmetadata profile config\fP -> \fBtag config\fP -> \fBlvmlocal.conf\fB -> \fBlvm.conf\fP
-
-No part of this cascade is compulsory. If there's no setting value found at
-the end of the cascade, a default value is used for that setting.
-Use \fBlvmconfig\fP to check what settings are in use and what
-the default values are.
-.SH SYNTAX
-.LP
-This section describes the configuration file syntax.
-.LP
-Whitespace is not significant unless it is within quotes.
-This provides a wide choice of acceptable indentation styles.
-Comments begin with # and continue to the end of the line.
-They are treated as whitespace.
-.LP
-Here is an informal grammar:
-.TP
-.BR file " = " value *
-.br
-A configuration file consists of a set of values.
-.TP
-.BR value " = " section " | " assignment
-.br
-A value can either be a new section, or an assignment.
-.TP
-.BR section " = " identifier " '" { "' " value "* '" } '
-.br
-A section groups associated values together. If the same section is
-encountered multiple times, the contents of all instances are concatenated
-together in the order of appearance.
-.br
-It is denoted by a name and delimited by curly brackets.
-.br
-e.g.	backup {
-.br
-		...
-.br
-	}
-.TP
-.BR assignment " = " identifier " '" = "' ( " array " | " type " )"
-.br
-An assignment associates a type with an identifier. If the identifier contains
-forward slashes, those are interpreted as path delimiters. The statement
-\fBsection/key = value\fP is equivalent to \fBsection { key = value }\fP. If
-multiple instances of the same key are encountered, only the last value is used
-(and a warning is issued).
-.br
-e.g.	\fBlevel = 7\fP
-.br
-.TP
-.BR array " =  '" [ "' ( " type " '" , "')* " type " '" ] "' | '" [ "' '" ] '
-.br
-Inhomogeneous arrays are supported.
-.br
-Elements must be separated by commas.
-.br
-An empty array is acceptable.
-.TP
-.BR type " = " integer " | " float " | " string
-.BR integer " = [0-9]*"
-.br
-.BR float " = [0-9]*'" . '[0-9]*
-.br
-.B string \fR= '\fB"\fR'.*'\fB"\fR'
-.IP
-Strings with spaces must be enclosed in double quotes, single words that start
-with a letter can be left unquoted.
-
-.SH SETTINGS
-
-The
-.B lvmconfig
-command prints the LVM configuration settings in various ways.
-See the man page
-.BR lvmconfig (8).
-
-Command to print a list of all possible config settings, with their
-default values:
-.br
-.B lvmconfig \-\-type default
-
-Command to print a list of all possible config settings, with their
-default values, and a full description of each as a comment:
-.br
-.B lvmconfig \-\-type default --withcomments
-
-Command to print a list of all possible config settings, with their
-current values (configured, non-default values are shown):
-.br
-.B lvmconfig \-\-type current
-
-Command to print all config settings that have been configured with a
-different value than the default (configured, non-default values are
-shown):
-.br
-.B lvmconfig \-\-type diff
-
-Command to print a single config setting, with its default value,
-and a full description, where "Section" refers to the config section,
-e.g. global, and "Setting" refers to the name of the specific setting,
-e.g. umask:
-.br
-.B lvmconfig \-\-type default --withcomments Section/Setting
-
-
-.SH FILES
-.I #DEFAULT_SYS_DIR#/lvm.conf
-.br
-.I #DEFAULT_SYS_DIR#/lvmlocal.conf
-.br
-.I #DEFAULT_ARCHIVE_DIR#
-.br
-.I #DEFAULT_BACKUP_DIR#
-.br
-.I #DEFAULT_CACHE_DIR#/.cache
-.br
-.I #DEFAULT_LOCK_DIR#
-.br
-.I #DEFAULT_PROFILE_DIR#
-
-.SH SEE ALSO
-.BR lvm (8)
-.BR lvmconfig (8)
-
diff --git a/man/lvm.conf.5_main b/man/lvm.conf.5_main
new file mode 100644
index 0000000..ae884be
--- /dev/null
+++ b/man/lvm.conf.5_main
@@ -0,0 +1,213 @@
+.TH LVM.CONF 5 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
+.SH NAME
+lvm.conf \(em Configuration file for LVM2
+.SH SYNOPSIS
+.B #DEFAULT_SYS_DIR#/lvm.conf
+.SH DESCRIPTION
+\fBlvm.conf\fP is loaded during the initialisation phase of
+\fBlvm\fP(8).  This file can in turn lead to other files
+being loaded - settings read in later override earlier
+settings.  File timestamps are checked between commands and if
+any have changed, all the files are reloaded.
+
+The settings defined in lvm.conf can be overridden by any
+of these extended configuration methods:
+.TP
+.B direct config override on command line
+The \fB\-\-config ConfigurationString\fP command line option takes the
+ConfigurationString as direct string representation of the configuration
+to override the existing configuration. The ConfigurationString is of
+exactly the same format as used in any LVM configuration file.
+
+.TP
+.B profile config
+.br
+A profile is a set of selected customizable configuration settings
+that are aimed to achieve a certain characteristics in various
+environments or uses. It's used to override existing configuration.
+Normally, the name of the profile should reflect that environment or use.
+
+There are two groups of profiles recognised: \fBcommand profiles\fP and
+\fBmetadata profiles\fP.
+
+The \fBcommand profile\fP is used to override selected configuration
+settings at global LVM command level - it is applied at the very beginning
+of LVM command execution and it is used throughout the whole time of LVM
+command execution. The command profile is applied by using the
+\fB\-\-commandprofile ProfileName\fP command line option that is recognised by
+all LVM2 commands.
+
+The \fBmetadata profile\fP is used to override selected configuration
+settings at Volume Group/Logical Volume level - it is applied independently
+for each Volume Group/Logical Volume that is being processed. As such,
+each Volume Group/Logical Volume can store the profile name used
+in its metadata so next time the Volume Group/Logical Volume is
+processed, the profile is applied automatically. If Volume Group and
+any of its Logical Volumes have different profiles defined, the profile
+defined for the Logical Volume is preferred. The metadata profile can be
+attached/detached by using the \fBlvchange\fP and \fBvgchange\fP commands
+and their \fB\-\-metadataprofile ProfileName\fP and
+\fB\-\-detachprofile\fP options or the \fB\-\-metadataprofile\fP
+option during creation when using \fBvgcreate\fP or \fBlvcreate\fP command.
+The \fBvgs\fP and \fBlvs\fP reporting commands provide \fB-o vg_profile\fP
+and \fB-o lv_profile\fP output options to show the metadata profile
+currently attached to a Volume Group or a Logical Volume.
+
+The set of options allowed for command profiles is mutually exclusive
+when compared to the set of options allowed for metadata profiles. The
+settings that belong to either of these two sets can't be mixed together
+and LVM tools will reject such profiles.
+
+LVM itself provides a few predefined configuration profiles.
+Users are allowed to add more profiles with different values if needed.
+For this purpose, there's the \fBcommand_profile_template.profile\fP
+(for command profiles) and \fBmetadata_profile_template.profile\fP
+(for metadata profiles) which contain all settings that are customizable
+by profiles of certain type. Users are encouraged to copy these template
+profiles and edit them as needed. Alternatively, the
+\fBlvmconfig \-\-file <ProfileName.profile> \-\-type profilable-command <section>\fP
+or \fBlvmconfig \-\-file <ProfileName.profile> \-\-type profilable-metadata <section>\fP
+can be used to generate a configuration with profilable settings in either
+of the type for given section and save it to new ProfileName.profile
+(if the section is not specified, all profilable settings are reported).
+
+The profiles are stored in #DEFAULT_PROFILE_DIR# directory by default.
+This location can be changed by using the \fBconfig/profile_dir\fP setting.
+Each profile configuration is stored in \fBProfileName.profile\fP file
+in the profile directory. When referencing the profile, the \fB.profile\fP
+suffix is left out.
+
+.TP
+.B tag config
+.br
+See \fBtags\fP configuration setting description below.
+
+.LP
+When several configuration methods are used at the same time
+and when LVM looks for the value of a particular setting, it traverses
+this \fBconfig cascade\fP from left to right:
+
+\fBdirect config override on command line\fP -> \fBcommand profile config\fP -> \fBmetadata profile config\fP -> \fBtag config\fP -> \fBlvmlocal.conf\fB -> \fBlvm.conf\fP
+
+No part of this cascade is compulsory. If there's no setting value found at
+the end of the cascade, a default value is used for that setting.
+Use \fBlvmconfig\fP to check what settings are in use and what
+the default values are.
+.SH SYNTAX
+.LP
+This section describes the configuration file syntax.
+.LP
+Whitespace is not significant unless it is within quotes.
+This provides a wide choice of acceptable indentation styles.
+Comments begin with # and continue to the end of the line.
+They are treated as whitespace.
+.LP
+Here is an informal grammar:
+.TP
+.BR file " = " value *
+.br
+A configuration file consists of a set of values.
+.TP
+.BR value " = " section " | " assignment
+.br
+A value can either be a new section, or an assignment.
+.TP
+.BR section " = " identifier " '" { "' " value "* '" } '
+.br
+A section groups associated values together. If the same section is
+encountered multiple times, the contents of all instances are concatenated
+together in the order of appearance.
+.br
+It is denoted by a name and delimited by curly brackets.
+.br
+e.g.	backup {
+.br
+		...
+.br
+	}
+.TP
+.BR assignment " = " identifier " '" = "' ( " array " | " type " )"
+.br
+An assignment associates a type with an identifier. If the identifier contains
+forward slashes, those are interpreted as path delimiters. The statement
+\fBsection/key = value\fP is equivalent to \fBsection { key = value }\fP. If
+multiple instances of the same key are encountered, only the last value is used
+(and a warning is issued).
+.br
+e.g.	\fBlevel = 7\fP
+.br
+.TP
+.BR array " =  '" [ "' ( " type " '" , "')* " type " '" ] "' | '" [ "' '" ] '
+.br
+Inhomogeneous arrays are supported.
+.br
+Elements must be separated by commas.
+.br
+An empty array is acceptable.
+.TP
+.BR type " = " integer " | " float " | " string
+.BR integer " = [0-9]*"
+.br
+.BR float " = [0-9]*'" . '[0-9]*
+.br
+.B string \fR= '\fB"\fR'.*'\fB"\fR'
+.IP
+Strings with spaces must be enclosed in double quotes, single words that start
+with a letter can be left unquoted.
+
+.SH SETTINGS
+
+The
+.B lvmconfig
+command prints the LVM configuration settings in various ways.
+See the man page
+.BR lvmconfig (8).
+
+Command to print a list of all possible config settings, with their
+default values:
+.br
+.B lvmconfig \-\-type default
+
+Command to print a list of all possible config settings, with their
+default values, and a full description of each as a comment:
+.br
+.B lvmconfig \-\-type default --withcomments
+
+Command to print a list of all possible config settings, with their
+current values (configured, non-default values are shown):
+.br
+.B lvmconfig \-\-type current
+
+Command to print all config settings that have been configured with a
+different value than the default (configured, non-default values are
+shown):
+.br
+.B lvmconfig \-\-type diff
+
+Command to print a single config setting, with its default value,
+and a full description, where "Section" refers to the config section,
+e.g. global, and "Setting" refers to the name of the specific setting,
+e.g. umask:
+.br
+.B lvmconfig \-\-type default --withcomments Section/Setting
+
+
+.SH FILES
+.I #DEFAULT_SYS_DIR#/lvm.conf
+.br
+.I #DEFAULT_SYS_DIR#/lvmlocal.conf
+.br
+.I #DEFAULT_ARCHIVE_DIR#
+.br
+.I #DEFAULT_BACKUP_DIR#
+.br
+.I #DEFAULT_CACHE_DIR#/.cache
+.br
+.I #DEFAULT_LOCK_DIR#
+.br
+.I #DEFAULT_PROFILE_DIR#
+
+.SH SEE ALSO
+.BR lvm (8)
+.BR lvmconfig (8)
+
diff --git a/man/lvm2-activation-generator.8.in b/man/lvm2-activation-generator.8.in
deleted file mode 100644
index e1be5e1..0000000
--- a/man/lvm2-activation-generator.8.in
+++ /dev/null
@@ -1,55 +0,0 @@
-.TH "LVM2-ACTIVATION-GENERATOR" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-.SH "NAME"
-lvm2-activation-generator \- generator for systemd units to activate LVM2 volumes on boot
-.SH SYNOPSIS
-.B #SYSTEMD_GENERATOR_DIR#/lvm2-activation-generator
-.sp
-.SH DESCRIPTION
-The lvm2-activation-generator is called by \fBsystemd\fP(1) on boot
-to generate systemd units at runtime to activate LVM2 volumes if
-\fBlvmetad\fP(8) is disabled (global/use_lvmetad=0 \fBlvm.conf\fP(5)
-option is used). Otherwise, if \fBlvmetad\fP(8) is enabled,
-the lvm2-activation-generator exits immediately without generating
-any systemd units and LVM2 fully relies on event-based activation
-to activate the LVM2 volumes instead using the \fBpvscan\fP(8)
-(pvscan \-\-cache -aay) call that is a part of \fBudev\fP(8) rules.
-
-These systemd units are generated by lvm2-activation-generator:
-.sp
-\fIlvm2-activation-early.service\fP
-used for activation of LVM2 volumes that is ordered before systemd's
-special \fBcryptsetup.target\fP to support LVM2 volumes which are not
-layered on top of encrypted devices.
-
-\fIlvm2-activation.service\fP
-used for activation of LVM2 volumes that is ordered after systemd's
-special \fBcryptsetup.target\fP to support LVM2 volumes which are
-layered on top of encrypted devices.
-
-\fIlvm2-activation-net.service\fP
-used for activation of LVM2 volumes that is ordered after systemd's
-special \fBremote-fs-pre.target\fP to support LVM2 volumes which are
-layered on attached remote devices.
-
-Note that all the underlying devices (Physical Volumes) need to be present
-when the service is run. If the there are any devices presented in the system
-anytime later, any LVM2 volumes on top of such devices need to be activated
-directly by \fBlvchange\fP(8) or \fBvgchange\fP(8). This limitation does
-not exist when using \fBlvmetad\fP(8) and accompanying event-based activation
-since such LVM volumes are activated automatically as soon as the Volume Group
-is ready (all the Physical Volumes making up the Volume Group are present
-in the system).
-
-The lvm2-activation-generator implements the \fBGenerators Specification\fP
-as referenced in \fBsystemd\fP(1).
-.sp
-.SH SEE ALSO
-.BR lvm.conf (5)
-.BR vgchange (8)
-.BR lvchange (8)
-.BR lvmetad (8)
-.BR pvscan (8)
-.BR udev (7)
-.BR systemd (1)
-.BR systemd.target (5)
-.BR systemd.special (7)
diff --git a/man/lvm2-activation-generator.8_main b/man/lvm2-activation-generator.8_main
new file mode 100644
index 0000000..e1be5e1
--- /dev/null
+++ b/man/lvm2-activation-generator.8_main
@@ -0,0 +1,55 @@
+.TH "LVM2-ACTIVATION-GENERATOR" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+.SH "NAME"
+lvm2-activation-generator \- generator for systemd units to activate LVM2 volumes on boot
+.SH SYNOPSIS
+.B #SYSTEMD_GENERATOR_DIR#/lvm2-activation-generator
+.sp
+.SH DESCRIPTION
+The lvm2-activation-generator is called by \fBsystemd\fP(1) on boot
+to generate systemd units at runtime to activate LVM2 volumes if
+\fBlvmetad\fP(8) is disabled (global/use_lvmetad=0 \fBlvm.conf\fP(5)
+option is used). Otherwise, if \fBlvmetad\fP(8) is enabled,
+the lvm2-activation-generator exits immediately without generating
+any systemd units and LVM2 fully relies on event-based activation
+to activate the LVM2 volumes instead using the \fBpvscan\fP(8)
+(pvscan \-\-cache -aay) call that is a part of \fBudev\fP(8) rules.
+
+These systemd units are generated by lvm2-activation-generator:
+.sp
+\fIlvm2-activation-early.service\fP
+used for activation of LVM2 volumes that is ordered before systemd's
+special \fBcryptsetup.target\fP to support LVM2 volumes which are not
+layered on top of encrypted devices.
+
+\fIlvm2-activation.service\fP
+used for activation of LVM2 volumes that is ordered after systemd's
+special \fBcryptsetup.target\fP to support LVM2 volumes which are
+layered on top of encrypted devices.
+
+\fIlvm2-activation-net.service\fP
+used for activation of LVM2 volumes that is ordered after systemd's
+special \fBremote-fs-pre.target\fP to support LVM2 volumes which are
+layered on attached remote devices.
+
+Note that all the underlying devices (Physical Volumes) need to be present
+when the service is run. If the there are any devices presented in the system
+anytime later, any LVM2 volumes on top of such devices need to be activated
+directly by \fBlvchange\fP(8) or \fBvgchange\fP(8). This limitation does
+not exist when using \fBlvmetad\fP(8) and accompanying event-based activation
+since such LVM volumes are activated automatically as soon as the Volume Group
+is ready (all the Physical Volumes making up the Volume Group are present
+in the system).
+
+The lvm2-activation-generator implements the \fBGenerators Specification\fP
+as referenced in \fBsystemd\fP(1).
+.sp
+.SH SEE ALSO
+.BR lvm.conf (5)
+.BR vgchange (8)
+.BR lvchange (8)
+.BR lvmetad (8)
+.BR pvscan (8)
+.BR udev (7)
+.BR systemd (1)
+.BR systemd.target (5)
+.BR systemd.special (7)
diff --git a/man/lvmcache.7.in b/man/lvmcache.7.in
deleted file mode 100644
index 45bb5b1..0000000
--- a/man/lvmcache.7.in
+++ /dev/null
@@ -1,419 +0,0 @@
-.TH "LVMCACHE" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-.SH NAME
-lvmcache \(em LVM caching
-
-.SH DESCRIPTION
-
-The \fBcache\fP logical volume type uses a small and fast LV to improve
-the performance of a large and slow LV.  It does this by storing the
-frequently used blocks on the faster LV.
-LVM refers to the small fast LV as a \fBcache pool LV\fP.  The large
-slow LV is called the \fBorigin LV\fP.  Due to requirements from dm-cache
-(the kernel driver), LVM further splits the cache pool LV into two
-devices - the \fBcache data LV\fP and \fBcache metadata LV\fP.  The cache
-data LV is where copies of data blocks are kept from the
-origin LV to increase speed.  The cache metadata LV holds the
-accounting information that specifies where data blocks are stored (e.g.
-on the origin LV or on the cache data LV).  Users should be familiar with
-these LVs if they wish to create the best and most robust cached
-logical volumes.  All of these associated LVs must be in the same VG.
-
-.SH Cache Terms
-.nf
-origin LV           OriginLV      large slow LV
-cache data LV       CacheDataLV   small fast LV for cache pool data
-cache metadata LV   CacheMetaLV   small fast LV for cache pool metadata
-cache pool LV       CachePoolLV   CacheDataLV + CacheMetaLV
-cache LV            CacheLV       OriginLV + CachePoolLV
-.fi
-
-.SH Cache Usage
-
-The primary method for using a cache type logical volume:
-
-
-.SS 0. create OriginLV
-
-Create an LV or identify an existing LV to be the origin LV.
-
-.B lvcreate \-n OriginLV \-L LargeSize VG SlowPVs
-
-.I Example
-.br
-# lvcreate \-n lvol0 \-L 100G vg
-
-
-.SS 1. create CacheDataLV
-
-Create the cache data LV.  This LV will hold data blocks from the
-OriginLV.  The size of this LV is the size of the cache and will be
-reported as the size of the cache pool LV.  
-
-.B lvcreate \-n CacheDataLV \-L CacheSize VG FastPVs
-
-.I Example
-.br
-# lvcreate \-n cache0 \-L 10G vg /dev/fast
-
-
-.SS 2. create CacheMetaLV
-
-Create the cache metadata LV.  This LV will hold cache pool metadata.  The
-size of this LV should be 1000 times smaller than the cache data LV, with
-a minimum size of 8MiB.
-
-.B lvcreate \-n CacheMetaLV \-L MetaSize VG FastPVs
-
-.I Example
-.br
-# lvcreate \-n cache0meta \-L 12M vg /dev/fast
-
-.nf
-# lvs -a vg
-  LV         VG   Attr       LSize   Pool Origin
-  cache0     vg   -wi-a-----  10.00g                                                    
-  cache0meta vg   -wi-a-----  12.00m                                                    
-  lvol0      vg   -wi-a----- 100.00g
-.fi
-
-
-.SS 3. create CachePoolLV
-
-Combine the data and metadata LVs into a cache pool LV.
-The behavior of the cache pool LV can be set in this step.
-.br
-CachePoolLV takes the name of CacheDataLV.
-.br
-CacheDataLV is renamed CachePoolLV_cdata and becomes hidden.
-.br
-CacheMetaLV is renamed CachePoolLV_cmeta and becomes hidden.
-
-.B lvconvert \-\-type cache-pool \-\-poolmetadata VG/CacheMetaLV
-.RS
-.B VG/CacheDataLV
-.RE
-
-.I Example
-.br
-# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache0meta vg/cache0
-
-.nf
-# lvs -a vg
-  LV              VG   Attr       LSize   Pool Origin
-  cache0          vg   Cwi---C---  10.00g
-  [cache0_cdata]  vg   Cwi-------  10.00g
-  [cache0_cmeta]  vg   ewi-------  12.00m
-  lvol0           vg   -wi-a----- 100.00g
-.fi
-
-
-.SS 4. create CacheLV
-
-Create a cache LV by linking the cache pool LV to the origin LV.
-The user accessible cache LV takes the name of the origin LV,
-while the origin LV becomes a hidden LV with the name
-OriginLV_corig.  This can be done while the origin LV is in use.
-.br
-CacheLV takes the name of OriginLV.
-.br
-OriginLV is renamed OriginLV_corig and becomes hidden.
-
-.B lvconvert \-\-type cache \-\-cachepool VG/CachePoolLV VG/OriginLV
-
-.I Example
-.br
-# lvconvert \-\-type cache \-\-cachepool vg/cache0 vg/lvol0
-
-.nf
-# lvs -a vg
-  LV              VG   Attr       LSize   Pool   Origin
-  cache0          vg   Cwi---C---  10.00g                                                             
-  [cache0_cdata]  vg   Cwi-ao----  10.00g                                                             
-  [cache0_cmeta]  vg   ewi-ao----  12.00m                                                             
-  lvol0           vg   Cwi-a-C--- 100.00g cache0 [lvol0_corig]                                        
-  [lvol0_corig]   vg   -wi-ao---- 100.00g                                                             
-.fi
-
-
-.SH Cache Removal
-
-.SS Split a cache pool LV off of a cache LV
-
-\&
-
-A cache pool LV can be disconnected from a cache LV, leaving an
-unused cache pool LV, and an uncached origin LV.  This command
-writes back data from the cache pool to the origin LV when necessary.
-
-.B lvconvert --splitcache VG/CacheLV
-
-.SS Removing a cache pool LV without removing its linked origin LV
-
-\&
-
-This writes back data from the cache pool to the origin LV when necessary,
-then removes the cache pool LV, leaving the uncached origin LV.
-
-.B lvremove VG/CachePoolLV
-
-An alternative command that also disconnects the cache pool from the cache
-LV, and deletes the cache pool:
-
-.B lvconvert --uncache VG/CacheLV
-
-.I Example
-.nf
-# lvs vg
-  LV     VG   Attr       LSize   Pool   Origin
-  cache0 vg   Cwi---C---  10.00g
-  lvol0  vg   Cwi-a-C--- 100.00g cache0 [lvol0_corig]
-
-# lvremove vg/cache0
-
-# lvs vg
-  LV    VG   Attr       LSize   Pool Origin
-  lvol0 vg   -wi-a----- 100.00g
-.fi
-
-.SS Removing a cache LV: both origin LV and the cache pool LV
-
-\&
-
-Removing a cache LV removes both the origin LV and the linked cache pool
-LV.
-
-.B lvremove VG/CacheLV
-
-
-.SH Cache Topics
-
-.SS Tolerate device failures in a cache pool LV
-
-\&
-
-Users who are concerned about the possibility of failures in their fast
-devices that could lead to data loss might consider making their cache
-pool sub-LVs redundant.
-
-.I Example
-.nf
-0. Create an origin LV we wish to cache
-# lvcreate \-L 10G \-n lv1 vg /dev/slow_devs
-
-1. Create a 2-way RAID1 cache data LV
-# lvcreate \-\-type raid1 \-m 1 \-L 1G -n cache1 vg \\
-	/dev/fast1 /dev/fast2
-
-2. Create a 2-way RAID1 cache metadata LV
-# lvcreate \-\-type raid1 \-m 1 \-L 8M -n cache1meta vg \\
-	/dev/fast1 /dev/fast2
-
-3. Create a cache pool LV combining cache data LV and cache metadata LV
-# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
-
-4. Create a cached LV by combining the cache pool LV and origin LV
-# lvconvert \-\-type cache \-\-cachepool vg/cache1 vg/lv1
-.fi
-
-.SS Cache mode
-
-\&
-
-The default cache mode is "writethrough".  Writethrough ensures that any
-data written will be stored both in the cache pool LV and on the origin
-LV.  The loss of a device associated with the cache pool LV in this case
-would not mean the loss of any data.
-
-A second cache mode is "writeback".  Writeback delays writing data blocks
-from the cache pool back to the origin LV.  This mode will increase
-performance, but the loss of a device associated with the cache pool LV
-can result in lost data.
-
-With the \-\-cachemode option, the cache mode can be set when creating a
-cache LV, or changed on an existing cache LV.  The current cache mode of a
-cache LV can be displayed with the cache_mode reporting option:
-
-.B lvs \-o+cache_mode VG/CacheLV
-
-.BR lvm.conf (5)
-.B allocation/cache_mode
-.br
-defines the default cache mode.
-
-.I Example
-.nf
-0. Create an origin LV we wish to cache (yours may already exist)
-# lvcreate \-L 10G \-n lv1 vg /dev/slow
-
-1. Create a cache data LV
-# lvcreate \-L 1G \-n cache1 vg /dev/fast
-
-2. Create a cache metadata LV
-# lvcreate \-L 8M \-n cache1meta vg /dev/fast
-
-3. Create a cache pool LV
-# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
-
-4. Create a cache LV by combining the cache pool LV and origin LV,
-   and use the writethrough cache mode.
-# lvconvert \-\-type cache \-\-cachepool vg/cache1 \\
-	\-\-cachemode writethrough vg/lv1
-.fi
-
-
-.SS Cache policy
-
-\&
-
-The cache subsystem has additional per-LV parameters: the cache policy to
-use, and possibly tunable parameters for the cache policy.  Three policies
-are currently available: "smq" is the default policy, "mq" is an older
-implementation, and "cleaner" is used to force the cache to write back
-(flush) all cached writes to the origin LV.
-
-The "mq" policy has a number of tunable parameters. The defaults are
-chosen to be suitable for the majority of systems, but in special
-circumstances, changing the settings can improve performance.
-
-With the \-\-cachepolicy and \-\-cachesettings options, the cache policy
-and settings can be set when creating a cache LV, or changed on an
-existing cache LV (both options can be used together).  The current cache
-policy and settings of a cache LV can be displayed with the cache_policy
-and cache_settings reporting options:
-
-.B lvs \-o+cache_policy,cache_settings VG/CacheLV
-
-.I Example
-.nf
-Change the cache policy and settings of an existing cache LV.
-# lvchange \-\-cachepolicy mq \-\-cachesettings \\
-	\(aqmigration_threshold=2048 random_threshold=4\(aq vg/lv1
-.fi
-
-.BR lvm.conf (5)
-.B allocation/cache_policy
-.br
-defines the default cache policy.
-
-.BR lvm.conf (5)
-.B allocation/cache_settings
-.br
-defines the default cache settings.
-
-
-.SS Chunk size
-
-\&
-
-The size of data blocks managed by a cache pool can be specified with the
-\-\-chunksize option when the cache LV is created.  The default unit
-is KiB. The value must be a multiple of 32KiB between 32KiB and 1GiB.
-
-Using a chunk size that is too large can result in wasteful use of the
-cache, where small reads and writes can cause large sections of an LV to
-be mapped into the cache.  However, choosing a chunk size that is too
-small can result in more overhead trying to manage the numerous chunks
-that become mapped into the cache.  Overhead can include both excessive
-CPU time searching for chunks, and excessive memory tracking chunks.
-
-Command to display the cache pool LV chunk size:
-.br
-.B lvs \-o+chunksize VG/CacheLV
-
-.BR lvm.conf (5)
-.B cache_pool_chunk_size
-.br
-controls the default chunk size used when creating a cache LV.
-
-The default value is shown by:
-.br
-.B lvmconfig \-\-type default allocation/cache_pool_chunk_size
-
-
-.SS Spare metadata LV
-
-\&
-
-See
-.BR lvmthin (7)
-for a description of the "pool metadata spare" LV.
-The same concept is used for cache pools.
-
-.SS Automatic pool metadata LV
-
-\&
-
-A cache data LV can be converted to cache pool LV without specifying a
-cache pool metadata LV.  LVM will automatically create a metadata LV from
-the same VG.
-
-.B lvcreate -n CacheDataLV -L CacheSize VG
-.br
-.B lvconvert --type cache\-pool VG/CacheDataLV
-
-
-.SS Create a new cache LV without an existing origin LV
-
-\&
-
-A cache LV can be created using an existing cache pool without an existing
-origin LV.  A new origin LV is created and linked to the cache pool in a
-single step.
-
-.B lvcreate \-\-type cache \-L LargeSize \-n CacheLV
-.RS
-.B \-\-cachepool VG/CachePoolLV VG SlowPVs
-.RE
-
-
-.SS Single step cache pool LV creation
-
-\&
-
-A cache pool LV can be created with a single lvcreate command, rather than
-using lvconvert on existing LVs.  This one command creates a cache data
-LV, a cache metadata LV, and combines the two into a cache pool LV.
-
-.B lvcreate \-\-type cache\-pool \-L CacheSize \-n CachePoolLV VG FastPVs
-
-
-.SS Convert existing LVs to cache types
-
-\&
-
-When an existing origin LV is converted to a cache LV, the specified cache
-pool may be a normal LV, rather than a cache pool LV.  In this case, lvm
-will first convert the normal LV to a cache pool LV.  A pool metadata LV
-may optionally be specified.
-
-.B lvcreate -n OriginLV -L LargeSize VG
-.br
-.B lvcreate -n CacheDataLV -L CacheSize VG
-.br
-.B lvconvert --type cache --cachepool VG/CataDataLV VG/OriginLV
-
-This is equivalent to:
-
-.B lvcreate -n OriginLV -L LargeSize VG
-.br
-.B lvcreate -n CacheDataLV -L CacheSize VG
-.br
-.B lvconvert --type cache-pool VG/CacheDataLV
-.br
-.B lvconvert --type cache --cachepool VG/CachePoolLV VG/OriginLV
-
-
-.SH SEE ALSO
-.BR lvm.conf (5),
-.BR lvchange (8),
-.BR lvcreate (8),
-.BR lvdisplay (8),
-.BR lvextend (8),
-.BR lvremove (8),
-.BR lvrename (8),
-.BR lvresize (8),
-.BR lvs (8),
-.BR vgchange (8),
-.BR vgmerge (8),
-.BR vgreduce (8),
-.BR vgsplit (8)
diff --git a/man/lvmcache.7_main b/man/lvmcache.7_main
new file mode 100644
index 0000000..45bb5b1
--- /dev/null
+++ b/man/lvmcache.7_main
@@ -0,0 +1,419 @@
+.TH "LVMCACHE" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+.SH NAME
+lvmcache \(em LVM caching
+
+.SH DESCRIPTION
+
+The \fBcache\fP logical volume type uses a small and fast LV to improve
+the performance of a large and slow LV.  It does this by storing the
+frequently used blocks on the faster LV.
+LVM refers to the small fast LV as a \fBcache pool LV\fP.  The large
+slow LV is called the \fBorigin LV\fP.  Due to requirements from dm-cache
+(the kernel driver), LVM further splits the cache pool LV into two
+devices - the \fBcache data LV\fP and \fBcache metadata LV\fP.  The cache
+data LV is where copies of data blocks are kept from the
+origin LV to increase speed.  The cache metadata LV holds the
+accounting information that specifies where data blocks are stored (e.g.
+on the origin LV or on the cache data LV).  Users should be familiar with
+these LVs if they wish to create the best and most robust cached
+logical volumes.  All of these associated LVs must be in the same VG.
+
+.SH Cache Terms
+.nf
+origin LV           OriginLV      large slow LV
+cache data LV       CacheDataLV   small fast LV for cache pool data
+cache metadata LV   CacheMetaLV   small fast LV for cache pool metadata
+cache pool LV       CachePoolLV   CacheDataLV + CacheMetaLV
+cache LV            CacheLV       OriginLV + CachePoolLV
+.fi
+
+.SH Cache Usage
+
+The primary method for using a cache type logical volume:
+
+
+.SS 0. create OriginLV
+
+Create an LV or identify an existing LV to be the origin LV.
+
+.B lvcreate \-n OriginLV \-L LargeSize VG SlowPVs
+
+.I Example
+.br
+# lvcreate \-n lvol0 \-L 100G vg
+
+
+.SS 1. create CacheDataLV
+
+Create the cache data LV.  This LV will hold data blocks from the
+OriginLV.  The size of this LV is the size of the cache and will be
+reported as the size of the cache pool LV.  
+
+.B lvcreate \-n CacheDataLV \-L CacheSize VG FastPVs
+
+.I Example
+.br
+# lvcreate \-n cache0 \-L 10G vg /dev/fast
+
+
+.SS 2. create CacheMetaLV
+
+Create the cache metadata LV.  This LV will hold cache pool metadata.  The
+size of this LV should be 1000 times smaller than the cache data LV, with
+a minimum size of 8MiB.
+
+.B lvcreate \-n CacheMetaLV \-L MetaSize VG FastPVs
+
+.I Example
+.br
+# lvcreate \-n cache0meta \-L 12M vg /dev/fast
+
+.nf
+# lvs -a vg
+  LV         VG   Attr       LSize   Pool Origin
+  cache0     vg   -wi-a-----  10.00g                                                    
+  cache0meta vg   -wi-a-----  12.00m                                                    
+  lvol0      vg   -wi-a----- 100.00g
+.fi
+
+
+.SS 3. create CachePoolLV
+
+Combine the data and metadata LVs into a cache pool LV.
+The behavior of the cache pool LV can be set in this step.
+.br
+CachePoolLV takes the name of CacheDataLV.
+.br
+CacheDataLV is renamed CachePoolLV_cdata and becomes hidden.
+.br
+CacheMetaLV is renamed CachePoolLV_cmeta and becomes hidden.
+
+.B lvconvert \-\-type cache-pool \-\-poolmetadata VG/CacheMetaLV
+.RS
+.B VG/CacheDataLV
+.RE
+
+.I Example
+.br
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache0meta vg/cache0
+
+.nf
+# lvs -a vg
+  LV              VG   Attr       LSize   Pool Origin
+  cache0          vg   Cwi---C---  10.00g
+  [cache0_cdata]  vg   Cwi-------  10.00g
+  [cache0_cmeta]  vg   ewi-------  12.00m
+  lvol0           vg   -wi-a----- 100.00g
+.fi
+
+
+.SS 4. create CacheLV
+
+Create a cache LV by linking the cache pool LV to the origin LV.
+The user accessible cache LV takes the name of the origin LV,
+while the origin LV becomes a hidden LV with the name
+OriginLV_corig.  This can be done while the origin LV is in use.
+.br
+CacheLV takes the name of OriginLV.
+.br
+OriginLV is renamed OriginLV_corig and becomes hidden.
+
+.B lvconvert \-\-type cache \-\-cachepool VG/CachePoolLV VG/OriginLV
+
+.I Example
+.br
+# lvconvert \-\-type cache \-\-cachepool vg/cache0 vg/lvol0
+
+.nf
+# lvs -a vg
+  LV              VG   Attr       LSize   Pool   Origin
+  cache0          vg   Cwi---C---  10.00g                                                             
+  [cache0_cdata]  vg   Cwi-ao----  10.00g                                                             
+  [cache0_cmeta]  vg   ewi-ao----  12.00m                                                             
+  lvol0           vg   Cwi-a-C--- 100.00g cache0 [lvol0_corig]                                        
+  [lvol0_corig]   vg   -wi-ao---- 100.00g                                                             
+.fi
+
+
+.SH Cache Removal
+
+.SS Split a cache pool LV off of a cache LV
+
+\&
+
+A cache pool LV can be disconnected from a cache LV, leaving an
+unused cache pool LV, and an uncached origin LV.  This command
+writes back data from the cache pool to the origin LV when necessary.
+
+.B lvconvert --splitcache VG/CacheLV
+
+.SS Removing a cache pool LV without removing its linked origin LV
+
+\&
+
+This writes back data from the cache pool to the origin LV when necessary,
+then removes the cache pool LV, leaving the uncached origin LV.
+
+.B lvremove VG/CachePoolLV
+
+An alternative command that also disconnects the cache pool from the cache
+LV, and deletes the cache pool:
+
+.B lvconvert --uncache VG/CacheLV
+
+.I Example
+.nf
+# lvs vg
+  LV     VG   Attr       LSize   Pool   Origin
+  cache0 vg   Cwi---C---  10.00g
+  lvol0  vg   Cwi-a-C--- 100.00g cache0 [lvol0_corig]
+
+# lvremove vg/cache0
+
+# lvs vg
+  LV    VG   Attr       LSize   Pool Origin
+  lvol0 vg   -wi-a----- 100.00g
+.fi
+
+.SS Removing a cache LV: both origin LV and the cache pool LV
+
+\&
+
+Removing a cache LV removes both the origin LV and the linked cache pool
+LV.
+
+.B lvremove VG/CacheLV
+
+
+.SH Cache Topics
+
+.SS Tolerate device failures in a cache pool LV
+
+\&
+
+Users who are concerned about the possibility of failures in their fast
+devices that could lead to data loss might consider making their cache
+pool sub-LVs redundant.
+
+.I Example
+.nf
+0. Create an origin LV we wish to cache
+# lvcreate \-L 10G \-n lv1 vg /dev/slow_devs
+
+1. Create a 2-way RAID1 cache data LV
+# lvcreate \-\-type raid1 \-m 1 \-L 1G -n cache1 vg \\
+	/dev/fast1 /dev/fast2
+
+2. Create a 2-way RAID1 cache metadata LV
+# lvcreate \-\-type raid1 \-m 1 \-L 8M -n cache1meta vg \\
+	/dev/fast1 /dev/fast2
+
+3. Create a cache pool LV combining cache data LV and cache metadata LV
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
+
+4. Create a cached LV by combining the cache pool LV and origin LV
+# lvconvert \-\-type cache \-\-cachepool vg/cache1 vg/lv1
+.fi
+
+.SS Cache mode
+
+\&
+
+The default cache mode is "writethrough".  Writethrough ensures that any
+data written will be stored both in the cache pool LV and on the origin
+LV.  The loss of a device associated with the cache pool LV in this case
+would not mean the loss of any data.
+
+A second cache mode is "writeback".  Writeback delays writing data blocks
+from the cache pool back to the origin LV.  This mode will increase
+performance, but the loss of a device associated with the cache pool LV
+can result in lost data.
+
+With the \-\-cachemode option, the cache mode can be set when creating a
+cache LV, or changed on an existing cache LV.  The current cache mode of a
+cache LV can be displayed with the cache_mode reporting option:
+
+.B lvs \-o+cache_mode VG/CacheLV
+
+.BR lvm.conf (5)
+.B allocation/cache_mode
+.br
+defines the default cache mode.
+
+.I Example
+.nf
+0. Create an origin LV we wish to cache (yours may already exist)
+# lvcreate \-L 10G \-n lv1 vg /dev/slow
+
+1. Create a cache data LV
+# lvcreate \-L 1G \-n cache1 vg /dev/fast
+
+2. Create a cache metadata LV
+# lvcreate \-L 8M \-n cache1meta vg /dev/fast
+
+3. Create a cache pool LV
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
+
+4. Create a cache LV by combining the cache pool LV and origin LV,
+   and use the writethrough cache mode.
+# lvconvert \-\-type cache \-\-cachepool vg/cache1 \\
+	\-\-cachemode writethrough vg/lv1
+.fi
+
+
+.SS Cache policy
+
+\&
+
+The cache subsystem has additional per-LV parameters: the cache policy to
+use, and possibly tunable parameters for the cache policy.  Three policies
+are currently available: "smq" is the default policy, "mq" is an older
+implementation, and "cleaner" is used to force the cache to write back
+(flush) all cached writes to the origin LV.
+
+The "mq" policy has a number of tunable parameters. The defaults are
+chosen to be suitable for the majority of systems, but in special
+circumstances, changing the settings can improve performance.
+
+With the \-\-cachepolicy and \-\-cachesettings options, the cache policy
+and settings can be set when creating a cache LV, or changed on an
+existing cache LV (both options can be used together).  The current cache
+policy and settings of a cache LV can be displayed with the cache_policy
+and cache_settings reporting options:
+
+.B lvs \-o+cache_policy,cache_settings VG/CacheLV
+
+.I Example
+.nf
+Change the cache policy and settings of an existing cache LV.
+# lvchange \-\-cachepolicy mq \-\-cachesettings \\
+	\(aqmigration_threshold=2048 random_threshold=4\(aq vg/lv1
+.fi
+
+.BR lvm.conf (5)
+.B allocation/cache_policy
+.br
+defines the default cache policy.
+
+.BR lvm.conf (5)
+.B allocation/cache_settings
+.br
+defines the default cache settings.
+
+
+.SS Chunk size
+
+\&
+
+The size of data blocks managed by a cache pool can be specified with the
+\-\-chunksize option when the cache LV is created.  The default unit
+is KiB. The value must be a multiple of 32KiB between 32KiB and 1GiB.
+
+Using a chunk size that is too large can result in wasteful use of the
+cache, where small reads and writes can cause large sections of an LV to
+be mapped into the cache.  However, choosing a chunk size that is too
+small can result in more overhead trying to manage the numerous chunks
+that become mapped into the cache.  Overhead can include both excessive
+CPU time searching for chunks, and excessive memory tracking chunks.
+
+Command to display the cache pool LV chunk size:
+.br
+.B lvs \-o+chunksize VG/CacheLV
+
+.BR lvm.conf (5)
+.B cache_pool_chunk_size
+.br
+controls the default chunk size used when creating a cache LV.
+
+The default value is shown by:
+.br
+.B lvmconfig \-\-type default allocation/cache_pool_chunk_size
+
+
+.SS Spare metadata LV
+
+\&
+
+See
+.BR lvmthin (7)
+for a description of the "pool metadata spare" LV.
+The same concept is used for cache pools.
+
+.SS Automatic pool metadata LV
+
+\&
+
+A cache data LV can be converted to cache pool LV without specifying a
+cache pool metadata LV.  LVM will automatically create a metadata LV from
+the same VG.
+
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache\-pool VG/CacheDataLV
+
+
+.SS Create a new cache LV without an existing origin LV
+
+\&
+
+A cache LV can be created using an existing cache pool without an existing
+origin LV.  A new origin LV is created and linked to the cache pool in a
+single step.
+
+.B lvcreate \-\-type cache \-L LargeSize \-n CacheLV
+.RS
+.B \-\-cachepool VG/CachePoolLV VG SlowPVs
+.RE
+
+
+.SS Single step cache pool LV creation
+
+\&
+
+A cache pool LV can be created with a single lvcreate command, rather than
+using lvconvert on existing LVs.  This one command creates a cache data
+LV, a cache metadata LV, and combines the two into a cache pool LV.
+
+.B lvcreate \-\-type cache\-pool \-L CacheSize \-n CachePoolLV VG FastPVs
+
+
+.SS Convert existing LVs to cache types
+
+\&
+
+When an existing origin LV is converted to a cache LV, the specified cache
+pool may be a normal LV, rather than a cache pool LV.  In this case, lvm
+will first convert the normal LV to a cache pool LV.  A pool metadata LV
+may optionally be specified.
+
+.B lvcreate -n OriginLV -L LargeSize VG
+.br
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache --cachepool VG/CataDataLV VG/OriginLV
+
+This is equivalent to:
+
+.B lvcreate -n OriginLV -L LargeSize VG
+.br
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache-pool VG/CacheDataLV
+.br
+.B lvconvert --type cache --cachepool VG/CachePoolLV VG/OriginLV
+
+
+.SH SEE ALSO
+.BR lvm.conf (5),
+.BR lvchange (8),
+.BR lvcreate (8),
+.BR lvdisplay (8),
+.BR lvextend (8),
+.BR lvremove (8),
+.BR lvrename (8),
+.BR lvresize (8),
+.BR lvs (8),
+.BR vgchange (8),
+.BR vgmerge (8),
+.BR vgreduce (8),
+.BR vgsplit (8)
diff --git a/man/lvmconf.8.in b/man/lvmconf.8.in
deleted file mode 100644
index 44cb52b..0000000
--- a/man/lvmconf.8.in
+++ /dev/null
@@ -1,70 +0,0 @@
-.TH "LVMCONF" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH "NAME"
-lvmconf \(em LVM configuration modifier
-.SH "SYNOPSIS"
-.B lvmconf
-.RB [ \-\-disable-cluster ]
-.RB [ \-\-enable-cluster ]
-.RB [ \-\-enable-halvm ]
-.RB [ \-\-disable-halvm ]
-.RB [ \-\-file
-.RI < configfile >]
-.RB [ \-\-lockinglib
-.RI < lib >]
-.RB [ \-\-lockinglibdir
-.RI < dir >]
-.RB [ \-\-services ]
-.RB [ \-\-mirrorservice ]
-.RB [ \-\-startstopservices ]
-
-.SH "DESCRIPTION"
-lvmconf is a script that modifies the locking configuration in
-an lvm configuration file. See \fBlvm.conf\fP(5). In addition
-to that, it can also set Systemd or SysV services according to
-changes in the lvm configuration if needed.
-
-.SH "OPTIONS"
-.TP
-.BR \-\-disable-cluster
-Set \fBlocking_type\fR to the default non-clustered type. Also reset
-lvmetad use to its default.
-.TP
-.BR \-\-enable-cluster
-Set \fBlocking_type\fR to the default clustered type on this system.
-Also disable lvmetad use as it is not yet supported in clustered environment.
-.TP
-.BR \-\-disable-halvm
-Set \fBlocking_type\fR to the default non-clustered type. Also reset
-lvmetad use to its default.
-.TP
-.BR \-\-enable-halvm
-Set \fBlocking_type\fR suitable for HA LVM use.
-Also disable lvmetad use as it is not yet supported in HA LVM environment.
-.TP
-.BR \-\-file " <" \fIconfigfile >
-Apply the changes to \fIconfigfile\fP instead of the default
-\fI#DEFAULT_SYS_DIR#/lvm.conf\fP.
-.TP
-.BR \-\-lockinglib " <" \fIlib >
-Set external \fBlocking_library\fR locking library to load if an external locking type is used.
-.TP
-.BR \-\-lockinglibdir " <" \fIdir >
-.TP
-.BR \-\-services
-In addition to setting the lvm configuration, also enable or disable related Systemd or SysV
-clvmd and lvmetad services. This script does not configure services provided by cluster resource
-agents.
-.TP
-.BR \-\-mirrorservice
-Also enable or disable optional cmirrord service when handling services (applicable only with \-\-services).
-.TP
-.BR \-\-startstopservices
-In addition to enabling or disabling related services, start or stop them immediately
-(applicable only with \-\-services).
-.SH FILES
-.I #DEFAULT_SYS_DIR#/lvm.conf
-
-.SH "SEE ALSO"
-.BR lvm (8),
-.BR lvm.conf (5)
diff --git a/man/lvmconf.8_main b/man/lvmconf.8_main
new file mode 100644
index 0000000..44cb52b
--- /dev/null
+++ b/man/lvmconf.8_main
@@ -0,0 +1,70 @@
+.TH "LVMCONF" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH "NAME"
+lvmconf \(em LVM configuration modifier
+.SH "SYNOPSIS"
+.B lvmconf
+.RB [ \-\-disable-cluster ]
+.RB [ \-\-enable-cluster ]
+.RB [ \-\-enable-halvm ]
+.RB [ \-\-disable-halvm ]
+.RB [ \-\-file
+.RI < configfile >]
+.RB [ \-\-lockinglib
+.RI < lib >]
+.RB [ \-\-lockinglibdir
+.RI < dir >]
+.RB [ \-\-services ]
+.RB [ \-\-mirrorservice ]
+.RB [ \-\-startstopservices ]
+
+.SH "DESCRIPTION"
+lvmconf is a script that modifies the locking configuration in
+an lvm configuration file. See \fBlvm.conf\fP(5). In addition
+to that, it can also set Systemd or SysV services according to
+changes in the lvm configuration if needed.
+
+.SH "OPTIONS"
+.TP
+.BR \-\-disable-cluster
+Set \fBlocking_type\fR to the default non-clustered type. Also reset
+lvmetad use to its default.
+.TP
+.BR \-\-enable-cluster
+Set \fBlocking_type\fR to the default clustered type on this system.
+Also disable lvmetad use as it is not yet supported in clustered environment.
+.TP
+.BR \-\-disable-halvm
+Set \fBlocking_type\fR to the default non-clustered type. Also reset
+lvmetad use to its default.
+.TP
+.BR \-\-enable-halvm
+Set \fBlocking_type\fR suitable for HA LVM use.
+Also disable lvmetad use as it is not yet supported in HA LVM environment.
+.TP
+.BR \-\-file " <" \fIconfigfile >
+Apply the changes to \fIconfigfile\fP instead of the default
+\fI#DEFAULT_SYS_DIR#/lvm.conf\fP.
+.TP
+.BR \-\-lockinglib " <" \fIlib >
+Set external \fBlocking_library\fR locking library to load if an external locking type is used.
+.TP
+.BR \-\-lockinglibdir " <" \fIdir >
+.TP
+.BR \-\-services
+In addition to setting the lvm configuration, also enable or disable related Systemd or SysV
+clvmd and lvmetad services. This script does not configure services provided by cluster resource
+agents.
+.TP
+.BR \-\-mirrorservice
+Also enable or disable optional cmirrord service when handling services (applicable only with \-\-services).
+.TP
+.BR \-\-startstopservices
+In addition to enabling or disabling related services, start or stop them immediately
+(applicable only with \-\-services).
+.SH FILES
+.I #DEFAULT_SYS_DIR#/lvm.conf
+
+.SH "SEE ALSO"
+.BR lvm (8),
+.BR lvm.conf (5)
diff --git a/man/lvmconfig.8.des b/man/lvmconfig.8.des
deleted file mode 100644
index 17f9f18..0000000
--- a/man/lvmconfig.8.des
+++ /dev/null
@@ -1,3 +0,0 @@
-lvmconfig produces formatted output from the LVM configuration tree. The
-sources of the configuration data include \fBlvm.conf\fP(5) and command
-line settings from \-\-config.
diff --git a/man/lvmconfig.8_des b/man/lvmconfig.8_des
new file mode 100644
index 0000000..17f9f18
--- /dev/null
+++ b/man/lvmconfig.8_des
@@ -0,0 +1,3 @@
+lvmconfig produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
diff --git a/man/lvmconfig.8_end b/man/lvmconfig.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvmconfig.8_pregen b/man/lvmconfig.8_pregen
new file mode 100644
index 0000000..e3bfdfc
--- /dev/null
+++ b/man/lvmconfig.8_pregen
@@ -0,0 +1,520 @@
+.TH LVMCONFIG 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvmconfig \- Display and manipulate configuration information
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvmconfig\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvmconfig produces formatted output from the LVM configuration tree. The
+sources of the configuration data include \fBlvm.conf\fP(5) and command
+line settings from \-\-config.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvmconfig\fP
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--file\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--list\fP ]
+.ad b
+.br
+.ad l
+[    \fB--atversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreadvanced\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelocal\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mergedconfig\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--sinceversion\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showdeprecated\fP ]
+.ad b
+.br
+.ad l
+[    \fB--showunsupported\fP ]
+.ad b
+.br
+.ad l
+[    \fB--validate\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withsummary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withcomments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withspaces\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unconfigured\fP ]
+.ad b
+.br
+.ad l
+[    \fB--withversions\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIString\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--atversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+When configuration is displayed, the configuration settings recognized
+at this LVM version will be considered only. This can be used
+to display a configuration that a certain LVM version understands and
+which does not contain any newer settings for which LVM would
+issue a warning message when checking the configuration.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--file\fP \fIString\fP
+.br
+Write output to the named file.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreadvanced\fP
+.br
+Exclude advanced configuration settings from the output.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelocal\fP
+.br
+Ignore local section.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreunsupported\fP
+.br
+Exclude unsupported configuration settings from the output. These settings are
+either used for debugging and development purposes only or their support is not
+yet complete and they are not meant to be used in production. The \fBcurrent\fP
+and \fBdiff\fP types include unsupported settings in their output by default,
+all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--list\fP
+.br
+List config settings with summarizing comment. This is the same as using
+options --typeconfig list --withsummary.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--mergedconfig\fP
+.br
+When the command is run with --config
+and/or --commandprofile (or using LVM_COMMAND_PROFILE
+environment variable), --profile, or --metadataprofile,
+merge all the contents of the "config cascade" before displaying it.
+Without merging, only the configuration at the front of the
+cascade is displayed.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--showdeprecated\fP
+.br
+Include deprecated configuration settings in the output. These settings
+are deprecated after a certain version. If a concrete version is specified
+with --atversion, deprecated settings are automatically included
+if the specified version is lower than the version in which the settings were
+deprecated. The current and diff types include deprecated settings
+in their output by default, all the other types ignore deprecated settings.
+.ad b
+
+.HP
+.ad l
+\fB--showunsupported\fP
+.br
+Include unsupported configuration settings in the output. These settings
+are either used for debugging or development purposes only, or their support
+is not yet complete and they are not meant to be used in production. The
+current and diff types include unsupported settings in their
+output by default, all the other types ignore unsupported settings.
+.ad b
+
+.HP
+.ad l
+\fB--sinceversion\fP \fIString\fP
+.br
+Specify an LVM version in x.y.z format where x is the major version,
+the y is the minor version and z is the patchlevel (e.g. 2.2.106).
+This option is currently applicable only with --typeconfig new
+to display all configuration settings introduced since given version.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--typeconfig\fP \fBcurrent\fP|\fBdefault\fP|\fBdiff\fP|\fBfull\fP|\fBlist\fP|\fBmissing\fP|\fBnew\fP|\fBprofilable\fP|\fBprofilable-command\fP|\fBprofilable-metadata\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB--unconfigured\fP
+.br
+Internal option used for generating config file during build.
+.ad b
+
+.HP
+.ad l
+\fB--validate\fP
+.br
+Validate current configuration used and exit with appropriate
+return code. The validation is done only for the configuration
+at the front of the "config cascade". To validate the whole
+merged configuration tree, also use --mergedconfig.
+The validation is done even if lvm.conf config/checks is disabled.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--withcomments\fP
+.br
+Display a full comment for each configuration node. For deprecated
+settings, also display comments about deprecation.
+.ad b
+
+.HP
+.ad l
+\fB--withspaces\fP
+.br
+Where appropriate, add more spaces in output for better readability.
+.ad b
+
+.HP
+.ad l
+\fB--withsummary\fP
+.br
+Display a one line comment for each configuration node.
+.ad b
+
+.HP
+.ad l
+\fB--withversions\fP
+.br
+Also display a comment containing the version of introduction for
+each configuration node. If the setting is deprecated, also display
+the version since which it is deprecated.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvmdbusd.8.in b/man/lvmdbusd.8.in
deleted file mode 100644
index 9e035f5..0000000
--- a/man/lvmdbusd.8.in
+++ /dev/null
@@ -1,38 +0,0 @@
-.TH LVMDBUSD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.
-.SH NAME
-.
-lvmdbusd \(em LVM D-Bus daemon
-.
-.SH SYNOPSIS
-.
-.ad l
-.B lvmdbusd
-.RB [ \-\-debug \]
-.RB [ \-\-udev \]
-.ad b
-.
-.SH DESCRIPTION
-.
-lvmdbusd is a service which provides a D-Bus API to the logical volume manager (LVM).
-Run 
-.BR lvmdbusd (8)
-as root.
-.
-.SH OPTIONS
-.
-.HP
-.BR \-\-debug 
-.br
-Enable debug statements 
-.
-.HP
-.BR \-\-udev
-.br
-Use udev events to trigger updates
-.
-.SH SEE ALSO
-.
-.nh
-.BR dbus-send (1),
-.BR lvm (8)
diff --git a/man/lvmdbusd.8_main b/man/lvmdbusd.8_main
new file mode 100644
index 0000000..9e035f5
--- /dev/null
+++ b/man/lvmdbusd.8_main
@@ -0,0 +1,38 @@
+.TH LVMDBUSD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.
+.SH NAME
+.
+lvmdbusd \(em LVM D-Bus daemon
+.
+.SH SYNOPSIS
+.
+.ad l
+.B lvmdbusd
+.RB [ \-\-debug \]
+.RB [ \-\-udev \]
+.ad b
+.
+.SH DESCRIPTION
+.
+lvmdbusd is a service which provides a D-Bus API to the logical volume manager (LVM).
+Run 
+.BR lvmdbusd (8)
+as root.
+.
+.SH OPTIONS
+.
+.HP
+.BR \-\-debug 
+.br
+Enable debug statements 
+.
+.HP
+.BR \-\-udev
+.br
+Use udev events to trigger updates
+.
+.SH SEE ALSO
+.
+.nh
+.BR dbus-send (1),
+.BR lvm (8)
diff --git a/man/lvmdiskscan.8.des b/man/lvmdiskscan.8.des
deleted file mode 100644
index c1e87cc..0000000
--- a/man/lvmdiskscan.8.des
+++ /dev/null
@@ -1,7 +0,0 @@
-lvmdiskscan scans all SCSI, (E)IDE disks, multiple devices and a bunch of
-other block devices in the system looking for LVM PVs. The size reported
-is the real device size. Define a filter in \fBlvm.conf\fP(5) to restrict
-the scan to avoid a CD ROM, for example.
-
-This command is deprecated, use \fBpvs\fP instead.
-
diff --git a/man/lvmdiskscan.8_des b/man/lvmdiskscan.8_des
new file mode 100644
index 0000000..c1e87cc
--- /dev/null
+++ b/man/lvmdiskscan.8_des
@@ -0,0 +1,7 @@
+lvmdiskscan scans all SCSI, (E)IDE disks, multiple devices and a bunch of
+other block devices in the system looking for LVM PVs. The size reported
+is the real device size. Define a filter in \fBlvm.conf\fP(5) to restrict
+the scan to avoid a CD ROM, for example.
+
+This command is deprecated, use \fBpvs\fP instead.
+
diff --git a/man/lvmdiskscan.8_end b/man/lvmdiskscan.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvmdiskscan.8_pregen b/man/lvmdiskscan.8_pregen
new file mode 100644
index 0000000..fc87d65
--- /dev/null
+++ b/man/lvmdiskscan.8_pregen
@@ -0,0 +1,314 @@
+.TH LVMDISKSCAN 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvmdiskscan \- List devices that may be used as physical volumes
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvmdiskscan\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvmdiskscan scans all SCSI, (E)IDE disks, multiple devices and a bunch of
+other block devices in the system looking for LVM PVs. The size reported
+is the real device size. Define a filter in \fBlvm.conf\fP(5) to restrict
+the scan to avoid a CD ROM, for example.
+
+This command is deprecated, use \fBpvs\fP instead.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvmdiskscan\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--lvmpartition\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--lvmpartition\fP
+.br
+Only report PVs.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvmdump.8.in b/man/lvmdump.8.in
deleted file mode 100644
index d0e102e..0000000
--- a/man/lvmdump.8.in
+++ /dev/null
@@ -1,112 +0,0 @@
-.TH LVMDUMP 8 "LVM TOOLS #VERSION#" "Red Hat, Inc."
-.SH NAME
-lvmdump \(em create lvm2 information dumps for diagnostic purposes
-.SH SYNOPSIS
-.B lvmdump
-.RB [ \-a ]
-.RB [ \-c ]
-.RB [ \-d
-.IR directory ]
-.RB [ \-h ]
-.RB [ \-l ]
-.RB [ \-m ]
-.RB [ \-p ]
-.RB [ \-s ]
-.RB [ \-u ]
-.SH DESCRIPTION
-lvmdump is a tool to dump various information concerning LVM2.
-By default, it creates a tarball suitable for submission along
-with a problem report.
-.PP
-The content of the tarball is as follows:
-.br
-- dmsetup info
-.br
-- table of currently running processes
-.br
-- recent entries from /var/log/messages (containing system messages)
-.br
-- complete lvm configuration and cache (content of /etc/lvm)
-.br
-- list of device nodes present under /dev
-.br
-- list of files present /sys/block
-.br
-- list of files present /sys/devices/virtual/block
-.br
-- if enabled with \-m, metadata dump will be also included
-.br
-- if enabled with \-a, debug output of vgscan, pvscan and list of all available volume groups, physical volumes and logical volumes will be included
-.br
-- if enabled with \-c, cluster status info
-.br
-- if enabled with \-l, lvmetad state if running
-.br
-- if enabled with \-p, lvmpolld state if running
-.br
-- if enabled with \-s, system info and context
-.br
-- if enabled with \-u, udev info and context
-.SH OPTIONS
-.TP
-.B \-a
-Advanced collection.
-\fBWARNING\fR: if lvm is already hung, then this script may hang as well
-if \fB\-a\fR is used.
-.TP
-.B \-c
-If clvmd is running, gather cluster data as well.
-.TP
-.B \-d  \fIdirectory
-Dump into a directory instead of tarball
-By default, lvmdump will produce a single compressed tarball containing
-all the information. Using this option, it can be instructed to only
-produce the raw dump tree, rooted in \fIdirectory\fP.
-.TP
-.B \-h
-Print help message
-.TP
-.B \-l
-Include \fBlvmetad\fP(8) daemon dump if it is running. The dump contains
-cached information that is currently stored in lvmetad: VG metadata,
-PV metadata and various mappings in between these metadata for quick
-access.
-.TP
-.B \-m
-Gather LVM metadata from the PVs
-This option generates a 1:1 dump of the metadata area from all PVs visible
-to the system, which can cause the dump to increase in size considerably.
-However, the metadata dump may represent a valuable diagnostic resource.
-.TP
-.B \-p
-Include \fBlvmpolld\fP(8) daemon dump if it is running. The dump contains
-all in-progress operation currently monitored by the daemon and partial
-history for all yet uncollected results of polling operations already finished
-including reason.
-.TP
-.B \-s
-Gather system info and context. Currently, this encompasses info gathered
-by calling lsblk command and various systemd info and context: overall state
-of systemd units present in the system, more detailed status of units
-controlling LVM functionality and the content of systemd journal for
-current boot.
-.TP
-.B \-u
-Gather udev info and context: /etc/udev/udev.conf file, udev daemon version
-(output of 'udevadm info \-\-version' command), udev rules currently used in the system
-(content of /lib/udev/rules.d and /etc/udev/rules.d directory),
-list of files in /lib/udev directory and dump of current udev
-database content (the output of 'udevadm info \-\-export\-db' command).
-.SH ENVIRONMENT VARIABLES
-.TP
-\fBLVM_BINARY\fP
-The LVM2 binary to use.
-Defaults to "lvm".
-Sometimes you might need to set this to "/sbin/lvm.static", for example.
-.TP
-\fBDMSETUP_BINARY\fP
-The dmsetup binary to use.
-Defaults to "dmsetup".
-.PP
-.SH SEE ALSO
-.BR lvm (8)
diff --git a/man/lvmdump.8_main b/man/lvmdump.8_main
new file mode 100644
index 0000000..d0e102e
--- /dev/null
+++ b/man/lvmdump.8_main
@@ -0,0 +1,112 @@
+.TH LVMDUMP 8 "LVM TOOLS #VERSION#" "Red Hat, Inc."
+.SH NAME
+lvmdump \(em create lvm2 information dumps for diagnostic purposes
+.SH SYNOPSIS
+.B lvmdump
+.RB [ \-a ]
+.RB [ \-c ]
+.RB [ \-d
+.IR directory ]
+.RB [ \-h ]
+.RB [ \-l ]
+.RB [ \-m ]
+.RB [ \-p ]
+.RB [ \-s ]
+.RB [ \-u ]
+.SH DESCRIPTION
+lvmdump is a tool to dump various information concerning LVM2.
+By default, it creates a tarball suitable for submission along
+with a problem report.
+.PP
+The content of the tarball is as follows:
+.br
+- dmsetup info
+.br
+- table of currently running processes
+.br
+- recent entries from /var/log/messages (containing system messages)
+.br
+- complete lvm configuration and cache (content of /etc/lvm)
+.br
+- list of device nodes present under /dev
+.br
+- list of files present /sys/block
+.br
+- list of files present /sys/devices/virtual/block
+.br
+- if enabled with \-m, metadata dump will be also included
+.br
+- if enabled with \-a, debug output of vgscan, pvscan and list of all available volume groups, physical volumes and logical volumes will be included
+.br
+- if enabled with \-c, cluster status info
+.br
+- if enabled with \-l, lvmetad state if running
+.br
+- if enabled with \-p, lvmpolld state if running
+.br
+- if enabled with \-s, system info and context
+.br
+- if enabled with \-u, udev info and context
+.SH OPTIONS
+.TP
+.B \-a
+Advanced collection.
+\fBWARNING\fR: if lvm is already hung, then this script may hang as well
+if \fB\-a\fR is used.
+.TP
+.B \-c
+If clvmd is running, gather cluster data as well.
+.TP
+.B \-d  \fIdirectory
+Dump into a directory instead of tarball
+By default, lvmdump will produce a single compressed tarball containing
+all the information. Using this option, it can be instructed to only
+produce the raw dump tree, rooted in \fIdirectory\fP.
+.TP
+.B \-h
+Print help message
+.TP
+.B \-l
+Include \fBlvmetad\fP(8) daemon dump if it is running. The dump contains
+cached information that is currently stored in lvmetad: VG metadata,
+PV metadata and various mappings in between these metadata for quick
+access.
+.TP
+.B \-m
+Gather LVM metadata from the PVs
+This option generates a 1:1 dump of the metadata area from all PVs visible
+to the system, which can cause the dump to increase in size considerably.
+However, the metadata dump may represent a valuable diagnostic resource.
+.TP
+.B \-p
+Include \fBlvmpolld\fP(8) daemon dump if it is running. The dump contains
+all in-progress operation currently monitored by the daemon and partial
+history for all yet uncollected results of polling operations already finished
+including reason.
+.TP
+.B \-s
+Gather system info and context. Currently, this encompasses info gathered
+by calling lsblk command and various systemd info and context: overall state
+of systemd units present in the system, more detailed status of units
+controlling LVM functionality and the content of systemd journal for
+current boot.
+.TP
+.B \-u
+Gather udev info and context: /etc/udev/udev.conf file, udev daemon version
+(output of 'udevadm info \-\-version' command), udev rules currently used in the system
+(content of /lib/udev/rules.d and /etc/udev/rules.d directory),
+list of files in /lib/udev directory and dump of current udev
+database content (the output of 'udevadm info \-\-export\-db' command).
+.SH ENVIRONMENT VARIABLES
+.TP
+\fBLVM_BINARY\fP
+The LVM2 binary to use.
+Defaults to "lvm".
+Sometimes you might need to set this to "/sbin/lvm.static", for example.
+.TP
+\fBDMSETUP_BINARY\fP
+The dmsetup binary to use.
+Defaults to "dmsetup".
+.PP
+.SH SEE ALSO
+.BR lvm (8)
diff --git a/man/lvmetad.8.in b/man/lvmetad.8.in
deleted file mode 100644
index c665e18..0000000
--- a/man/lvmetad.8.in
+++ /dev/null
@@ -1,126 +0,0 @@
-.TH LVMETAD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.SH NAME
-lvmetad \(em LVM metadata cache daemon
-
-.SH SYNOPSIS
-.B lvmetad
-.RB [ \-l
-.IR level [,level...]]
-.RB [ \-p
-.IR pidfile_path ]
-.RB [ \-s
-.IR socket_path ]
-.RB [ \-t
-.IR timeout_value ]
-.RB [ \-f ]
-.RB [ \-h ]
-.RB [ \-V ]
-.RB [ \-? ]
-
-.SH DESCRIPTION
-
-The lvmetad daemon caches LVM metadata so that LVM commands can read
-metadata from the cache rather than scanning disks.  This can be an
-advantage because scanning disks is time consuming and may interfere with
-the normal work of the system.  lvmetad can be a disadvantage when disk
-event notifications from the system are unreliable.
-
-lvmetad does not read metadata from disks itself.  Instead, it relies on
-an LVM command, like pvscan \-\-cache, to read metadata from disks and
-send it to lvmetad to be cached.
-
-New LVM disks that appear on the system must be scanned before lvmetad
-knows about them.  If lvmetad does not know about a disk, then LVM
-commands using lvmetad will also not know about it.  When disks are added
-or removed from the system, lvmetad must be updated.
-
-lvmetad is usually combined with event\-based system services that
-automatically run pvscan \-\-cache on disks added or removed.  This way,
-the cache is automatically updated with metadata from new disks when they
-appear.  LVM udev rules and systemd services implement this automation.
-Automatic scanning is usually combined with automatic activation.  For
-more information, see
-.BR pvscan (8).
-
-If lvmetad is started or restarted after disks have been added to the
-system, or if the global_filter has changed, the cache must be updated.
-This can be done by running pvscan \-\-cache, or it will be done
-automatically by the next LVM command that's run.
-
-When lvmetad is not used, LVM commands revert to scanning disks for LVM
-metadata.
-
-In some cases, lvmetad will be temporarily disabled while it continues
-running.  In this state, LVM commands will ignore the lvmetad cache and
-revert to scanning disks.  A warning will also be printed which includes
-the reason why lvmetad is not being used.  The most common reason is the
-existence of duplicate PVs (lvmetad cannot cache data for duplicate PVs.)
-Once duplicates have been resolved, the lvmetad cache is can be updated
-with pvscan \-\-cache and commands will return to using the cache.
-
-Use of lvmetad is enabled/disabled by:
-.br
-.BR lvm.conf (5)
-.B global/use_lvmetad
-
-For more information on this setting, see:
-.br
-.B lvmconfig \-\-withcomments global/use_lvmetad
-
-To ignore disks from LVM at the system level, e.g. lvmetad, pvscan use:
-.br
-.BR lvm.conf (5)
-.B devices/global_filter
-
-For more information on this setting, see
-.br
-.B lvmconfig \-\-withcomments devices/global_filter
-
-.SH OPTIONS
-
-To run the daemon in a test environment both the pidfile_path and the
-socket_path should be changed from the defaults.
-.TP
-.B \-f
-Don't fork, but run in the foreground.
-.TP
-.BR \-h ", " \-?
-Show help information.
-.TP
-.B \-l \fIlevels
-Specify the levels of log messages to generate as a comma separated list.
-Messages are logged by syslog.
-Additionally, when \-f is given they are also sent to standard error.
-Possible levels are: all, fatal, error, warn, info, wire, debug.
-.TP
-.B \-p \fIpidfile_path
-Path to the pidfile. This overrides both the built-in default
-(#DEFAULT_PID_DIR#/lvmetad.pid) and the environment variable
-\fBLVM_LVMETAD_PIDFILE\fP.  This file is used to prevent more
-than one instance of the daemon running simultaneously.
-.TP
-.B \-s \fIsocket_path
-Path to the socket file. This overrides both the built-in default
-(#DEFAULT_RUN_DIR#/lvmetad.socket) and the environment variable
-\fBLVM_LVMETAD_SOCKET\fP.  To communicate successfully with lvmetad,
-all LVM2 processes should use the same socket path.
-.TP
-.B \-t \fItimeout_value
-The daemon may shutdown after being idle for the given time (in seconds). When the
-option is omitted or the value given is zero the daemon never shutdowns on idle.
-.TP
-.B \-V
-Display the version of lvmetad daemon.
-.SH ENVIRONMENT VARIABLES
-.TP
-.B LVM_LVMETAD_PIDFILE
-Path for the pid file.
-.TP
-.B LVM_LVMETAD_SOCKET 
-Path for the socket file.
-
-.SH SEE ALSO
-.BR lvm (8),
-.BR lvmconfig (8),
-.BR lvm.conf (5),
-.BR pvscan (8)
diff --git a/man/lvmetad.8_main b/man/lvmetad.8_main
new file mode 100644
index 0000000..c665e18
--- /dev/null
+++ b/man/lvmetad.8_main
@@ -0,0 +1,126 @@
+.TH LVMETAD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.SH NAME
+lvmetad \(em LVM metadata cache daemon
+
+.SH SYNOPSIS
+.B lvmetad
+.RB [ \-l
+.IR level [,level...]]
+.RB [ \-p
+.IR pidfile_path ]
+.RB [ \-s
+.IR socket_path ]
+.RB [ \-t
+.IR timeout_value ]
+.RB [ \-f ]
+.RB [ \-h ]
+.RB [ \-V ]
+.RB [ \-? ]
+
+.SH DESCRIPTION
+
+The lvmetad daemon caches LVM metadata so that LVM commands can read
+metadata from the cache rather than scanning disks.  This can be an
+advantage because scanning disks is time consuming and may interfere with
+the normal work of the system.  lvmetad can be a disadvantage when disk
+event notifications from the system are unreliable.
+
+lvmetad does not read metadata from disks itself.  Instead, it relies on
+an LVM command, like pvscan \-\-cache, to read metadata from disks and
+send it to lvmetad to be cached.
+
+New LVM disks that appear on the system must be scanned before lvmetad
+knows about them.  If lvmetad does not know about a disk, then LVM
+commands using lvmetad will also not know about it.  When disks are added
+or removed from the system, lvmetad must be updated.
+
+lvmetad is usually combined with event\-based system services that
+automatically run pvscan \-\-cache on disks added or removed.  This way,
+the cache is automatically updated with metadata from new disks when they
+appear.  LVM udev rules and systemd services implement this automation.
+Automatic scanning is usually combined with automatic activation.  For
+more information, see
+.BR pvscan (8).
+
+If lvmetad is started or restarted after disks have been added to the
+system, or if the global_filter has changed, the cache must be updated.
+This can be done by running pvscan \-\-cache, or it will be done
+automatically by the next LVM command that's run.
+
+When lvmetad is not used, LVM commands revert to scanning disks for LVM
+metadata.
+
+In some cases, lvmetad will be temporarily disabled while it continues
+running.  In this state, LVM commands will ignore the lvmetad cache and
+revert to scanning disks.  A warning will also be printed which includes
+the reason why lvmetad is not being used.  The most common reason is the
+existence of duplicate PVs (lvmetad cannot cache data for duplicate PVs.)
+Once duplicates have been resolved, the lvmetad cache is can be updated
+with pvscan \-\-cache and commands will return to using the cache.
+
+Use of lvmetad is enabled/disabled by:
+.br
+.BR lvm.conf (5)
+.B global/use_lvmetad
+
+For more information on this setting, see:
+.br
+.B lvmconfig \-\-withcomments global/use_lvmetad
+
+To ignore disks from LVM at the system level, e.g. lvmetad, pvscan use:
+.br
+.BR lvm.conf (5)
+.B devices/global_filter
+
+For more information on this setting, see
+.br
+.B lvmconfig \-\-withcomments devices/global_filter
+
+.SH OPTIONS
+
+To run the daemon in a test environment both the pidfile_path and the
+socket_path should be changed from the defaults.
+.TP
+.B \-f
+Don't fork, but run in the foreground.
+.TP
+.BR \-h ", " \-?
+Show help information.
+.TP
+.B \-l \fIlevels
+Specify the levels of log messages to generate as a comma separated list.
+Messages are logged by syslog.
+Additionally, when \-f is given they are also sent to standard error.
+Possible levels are: all, fatal, error, warn, info, wire, debug.
+.TP
+.B \-p \fIpidfile_path
+Path to the pidfile. This overrides both the built-in default
+(#DEFAULT_PID_DIR#/lvmetad.pid) and the environment variable
+\fBLVM_LVMETAD_PIDFILE\fP.  This file is used to prevent more
+than one instance of the daemon running simultaneously.
+.TP
+.B \-s \fIsocket_path
+Path to the socket file. This overrides both the built-in default
+(#DEFAULT_RUN_DIR#/lvmetad.socket) and the environment variable
+\fBLVM_LVMETAD_SOCKET\fP.  To communicate successfully with lvmetad,
+all LVM2 processes should use the same socket path.
+.TP
+.B \-t \fItimeout_value
+The daemon may shutdown after being idle for the given time (in seconds). When the
+option is omitted or the value given is zero the daemon never shutdowns on idle.
+.TP
+.B \-V
+Display the version of lvmetad daemon.
+.SH ENVIRONMENT VARIABLES
+.TP
+.B LVM_LVMETAD_PIDFILE
+Path for the pid file.
+.TP
+.B LVM_LVMETAD_SOCKET 
+Path for the socket file.
+
+.SH SEE ALSO
+.BR lvm (8),
+.BR lvmconfig (8),
+.BR lvm.conf (5),
+.BR pvscan (8)
diff --git a/man/lvmlockctl.8.in b/man/lvmlockctl.8.in
deleted file mode 100644
index 5465642..0000000
--- a/man/lvmlockctl.8.in
+++ /dev/null
@@ -1,102 +0,0 @@
-.TH "LVMLOCKCTL" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmlockctl \(em Control for lvmlockd 
-
-.SH DESCRIPTION
-This command interacts with
-.BR lvmlockd (8).
-
-.SH OPTIONS
-
-lvmlockctl [options]
-
-.B  \-\-help | \-h
-        Show this help information.
-
-.B  \-\-quit | \-q
-        Tell lvmlockd to quit.
-
-.B  \-\-info | \-i
-        Print lock state information from lvmlockd.
-
-.B  \-\-dump | \-d
-        Print log buffer from lvmlockd.
-
-.B  \-\-wait | \-w 0|1
-        Wait option for other commands.
-
-.B  \-\-force | \-f 0|1
-        Force option for other commands.
-
-.B  \-\-kill | \-k
-.I vgname
-        Kill access to the VG when sanlock cannot renew lease.
-
-.B  \-\-drop | \-r
-.I vgname
-        Clear locks for the VG when it is unused after kill (-k).
-
-.B  \-\-gl\-enable | \-E
-.I vgname
-        Tell lvmlockd to enable the global lock in a sanlock VG.
-
-.B  \-\-gl\-disable | \-D
-.I vgname
-        Tell lvmlockd to disable the global lock in a sanlock VG.
-
-.B  \-\-stop\-lockspaces | \-S
-        Stop all lockspaces.
-
-
-.SH USAGE
-
-.SS info
-
-This collects and displays lock state from lvmlockd.  The display is
-primitive, incomplete and will change in future version.  To print the raw
-lock state from lvmlockd, combine this option with --dump|-d.
-
-.SS dump
-
-This collects the circular log buffer of debug statements from lvmlockd
-and prints it.
-
-.SS kill
-
-This is run by sanlock when it loses access to the storage holding leases
-for a VG.  It currently emits a syslog message stating that the VG must
-be immediately deactivated.  In the future it may automatically attempt to
-forcibly deactivate the VG.  For more, see
-.BR lvmlockd (8).
-
-.SS drop
-
-This should only be run after a VG has been successfully deactivated
-following an lvmlockctl \-\-kill command.  It clears the stale lockspace
-from lvmlockd.  In the future, this may become automatic along with an
-automatic handling of \-\-kill.  For more, see
-.BR lvmlockd (8).
-
-.SS gl\-enable
-
-This enables the global lock in a sanlock VG.  This is necessary if the VG
-that previously held the global lock is removed.  For more, see
-.BR lvmlockd (8).
-
-.SS gl\-disable
-
-This disables the global lock in a sanlock VG.  This is necessary if the
-global lock has mistakenly been enabled in more than one VG.  The global
-lock should be disabled in all but one sanlock VG.  For more, see
-.BR lvmlockd (8).
-
-.SS stop\-lockspaces
-
-This tells lvmlockd to stop all lockspaces.  It can be useful to stop
-lockspaces for VGs that the vgchange \-\-lock\-stop comand can no longer
-see, or to stop the dlm global lockspace which is not directly stopped by
-the vgchange command.  The wait and force options can be used with this
-command.
-
-
diff --git a/man/lvmlockctl.8_main b/man/lvmlockctl.8_main
new file mode 100644
index 0000000..5465642
--- /dev/null
+++ b/man/lvmlockctl.8_main
@@ -0,0 +1,102 @@
+.TH "LVMLOCKCTL" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmlockctl \(em Control for lvmlockd 
+
+.SH DESCRIPTION
+This command interacts with
+.BR lvmlockd (8).
+
+.SH OPTIONS
+
+lvmlockctl [options]
+
+.B  \-\-help | \-h
+        Show this help information.
+
+.B  \-\-quit | \-q
+        Tell lvmlockd to quit.
+
+.B  \-\-info | \-i
+        Print lock state information from lvmlockd.
+
+.B  \-\-dump | \-d
+        Print log buffer from lvmlockd.
+
+.B  \-\-wait | \-w 0|1
+        Wait option for other commands.
+
+.B  \-\-force | \-f 0|1
+        Force option for other commands.
+
+.B  \-\-kill | \-k
+.I vgname
+        Kill access to the VG when sanlock cannot renew lease.
+
+.B  \-\-drop | \-r
+.I vgname
+        Clear locks for the VG when it is unused after kill (-k).
+
+.B  \-\-gl\-enable | \-E
+.I vgname
+        Tell lvmlockd to enable the global lock in a sanlock VG.
+
+.B  \-\-gl\-disable | \-D
+.I vgname
+        Tell lvmlockd to disable the global lock in a sanlock VG.
+
+.B  \-\-stop\-lockspaces | \-S
+        Stop all lockspaces.
+
+
+.SH USAGE
+
+.SS info
+
+This collects and displays lock state from lvmlockd.  The display is
+primitive, incomplete and will change in future version.  To print the raw
+lock state from lvmlockd, combine this option with --dump|-d.
+
+.SS dump
+
+This collects the circular log buffer of debug statements from lvmlockd
+and prints it.
+
+.SS kill
+
+This is run by sanlock when it loses access to the storage holding leases
+for a VG.  It currently emits a syslog message stating that the VG must
+be immediately deactivated.  In the future it may automatically attempt to
+forcibly deactivate the VG.  For more, see
+.BR lvmlockd (8).
+
+.SS drop
+
+This should only be run after a VG has been successfully deactivated
+following an lvmlockctl \-\-kill command.  It clears the stale lockspace
+from lvmlockd.  In the future, this may become automatic along with an
+automatic handling of \-\-kill.  For more, see
+.BR lvmlockd (8).
+
+.SS gl\-enable
+
+This enables the global lock in a sanlock VG.  This is necessary if the VG
+that previously held the global lock is removed.  For more, see
+.BR lvmlockd (8).
+
+.SS gl\-disable
+
+This disables the global lock in a sanlock VG.  This is necessary if the
+global lock has mistakenly been enabled in more than one VG.  The global
+lock should be disabled in all but one sanlock VG.  For more, see
+.BR lvmlockd (8).
+
+.SS stop\-lockspaces
+
+This tells lvmlockd to stop all lockspaces.  It can be useful to stop
+lockspaces for VGs that the vgchange \-\-lock\-stop comand can no longer
+see, or to stop the dlm global lockspace which is not directly stopped by
+the vgchange command.  The wait and force options can be used with this
+command.
+
+
diff --git a/man/lvmlockd.8.in b/man/lvmlockd.8.in
deleted file mode 100644
index 6e9b703..0000000
--- a/man/lvmlockd.8.in
+++ /dev/null
@@ -1,889 +0,0 @@
-.TH "LVMLOCKD" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmlockd \(em LVM locking daemon
-
-.SH DESCRIPTION
-LVM commands use lvmlockd to coordinate access to shared storage.
-.br
-When LVM is used on devices shared by multiple hosts, locks will:
-
-\[bu]
-coordinate reading and writing of LVM metadata
-.br
-\[bu]
-validate caching of LVM metadata
-.br
-\[bu]
-prevent concurrent activation of logical volumes
-.br
-
-lvmlockd uses an external lock manager to perform basic locking.
-.br
-Lock manager (lock type) options are:
-
-\[bu]
-sanlock: places locks on disk within LVM storage.
-.br
-\[bu]
-dlm: uses network communication and a cluster manager.
-.br
-
-.SH OPTIONS
-
-lvmlockd [options]
-
-For default settings, see lvmlockd \-h.
-
-.B  \-\-help | \-h
-        Show this help information.
-
-.B  \-\-version | \-V
-        Show version of lvmlockd.
-
-.B  \-\-test | \-T
-        Test mode, do not call lock manager.
-
-.B  \-\-foreground | \-f
-        Don't fork.
-
-.B  \-\-daemon\-debug | \-D
-        Don't fork and print debugging to stdout.
-
-.B  \-\-pid\-file | \-p
-.I path
-        Set path to the pid file.
-
-.B  \-\-socket\-path | \-s
-.I path
-        Set path to the socket to listen on.
-
-.B  \-\-syslog\-priority | \-S err|warning|debug
-        Write log messages from this level up to syslog.
-
-.B  \-\-gl\-type | \-g sanlock|dlm
-        Set global lock type to be sanlock or dlm.
-
-.B  \-\-host\-id | \-i
-.I num
-        Set the local sanlock host id.
-
-.B  \-\-host\-id\-file | \-F
-.I path
-        A file containing the local sanlock host_id.
-
-.B  \-\-sanlock\-timeout | \-o
-.I seconds
-        Override the default sanlock I/O timeout.
-
-.B  \-\-adopt | \-A 0|1
-        Adopt locks from a previous instance of lvmlockd.
-
-
-.SH USAGE
-
-.SS Initial set up
-
-Using LVM with lvmlockd for the first time includes some one\-time set up
-steps:
-
-.SS 1. choose a lock manager
-
-.I dlm
-.br
-If dlm (or corosync) are already being used by other cluster
-software, then select dlm.  dlm uses corosync which requires additional
-configuration beyond the scope of this document.  See corosync and dlm
-documentation for instructions on configuration, setup and usage.
-
-.I sanlock
-.br
-Choose sanlock if dlm/corosync are not otherwise required.
-sanlock does not depend on any clustering software or configuration.
-
-.SS 2. configure hosts to use lvmlockd
-
-On all hosts running lvmlockd, configure lvm.conf:
-.nf
-locking_type = 1
-use_lvmlockd = 1
-.fi
-
-.I sanlock
-.br
-Assign each host a unique host_id in the range 1\-2000 by setting
-.br
-/etc/lvm/lvmlocal.conf local/host_id
-
-.SS 3. start lvmlockd
-
-Use a service/init file if available, or just run "lvmlockd".
-
-.SS 4. start lock manager
-
-.I sanlock
-.br
-systemctl start wdmd sanlock
-
-.I dlm
-.br
-Follow external clustering documentation when applicable, otherwise:
-.br
-systemctl start corosync dlm
-
-.SS 5. create VG on shared devices
-
-vgcreate \-\-shared <vgname> <devices>
-
-The shared option sets the VG lock type to sanlock or dlm depending on
-which lock manager is running.  LVM commands will perform locking for the
-VG using lvmlockd.  lvmlockd will use the chosen lock manager.
-
-.SS 6. start VG on all hosts
-
-vgchange \-\-lock\-start
-
-lvmlockd requires shared VGs to be started before they are used.  This is
-a lock manager operation to start (join) the VG lockspace, and it may take
-some time.  Until the start completes, locks for the VG are not available.
-LVM commands are allowed to read the VG while start is in progress.  (An
-init/unit file can also be used to start VGs.)
-
-.SS 7. create and activate LVs
-
-Standard lvcreate and lvchange commands are used to create and activate
-LVs in a shared VG.
-
-An LV activated exclusively on one host cannot be activated on another.
-When multiple hosts need to use the same LV concurrently, the LV can be
-activated with a shared lock (see lvchange options \-aey vs \-asy.)
-(Shared locks are disallowed for certain LV types that cannot be used from
-multiple hosts.)
-
-
-.SS Normal start up and shut down
-
-After initial set up, start up and shut down include the following general
-steps.  They can be performed manually or using the system service
-manager.
-
-\[bu]
-start lvmetad
-.br
-\[bu]
-start lvmlockd
-.br
-\[bu]
-start lock manager
-.br
-\[bu]
-vgchange \-\-lock\-start
-.br
-\[bu]
-activate LVs in shared VGs
-.br
-
-The shut down sequence is the reverse:
-
-\[bu]
-deactivate LVs in shared VGs
-.br
-\[bu]
-vgchange \-\-lock\-stop
-.br
-\[bu]
-stop lock manager
-.br
-\[bu]
-stop lvmlockd
-.br
-\[bu]
-stop lvmetad
-.br
-
-.P
-
-.SH TOPICS
-
-.SS VG access control
-
-The following terms are used to describe different forms of VG access
-control.
-
-.I "lockd VG"
-
-A "lockd VG" is a shared VG that has a "lock type" of dlm or sanlock.
-Using it requires lvmlockd.  These VGs exist on shared storage that is
-visible to multiple hosts.  LVM commands use lvmlockd to perform locking
-for these VGs when they are used.
-
-If the lock manager for the lock type is not available (e.g. not started
-or failed), lvmlockd is unable to acquire locks for LVM commands.  LVM
-commands that only read the VG will generally be allowed to continue
-without locks in this case (with a warning).  Commands to modify or
-activate the VG will fail without the necessary locks.
-
-.I "local VG"
-
-A "local VG" is meant to be used by a single host.  It has no lock type or
-lock type "none".  LVM commands and lvmlockd do not perform locking for
-these VGs.  A local VG typically exists on local (non\-shared) devices and
-cannot be used concurrently from different hosts.
-
-If a local VG does exist on shared devices, it should be owned by a single
-host by having its system ID set, see
-.BR lvmsystemid (7).
-Only the host with a matching system ID can use the local VG.  A VG
-with no lock type and no system ID should be excluded from all but one
-host using lvm.conf filters.  Without any of these protections, a local VG
-on shared devices can be easily damaged or destroyed.
-
-.I "clvm VG"
-
-A "clvm VG" is a VG on shared storage (like a lockd VG) that requires
-clvmd for clustering.  See below for converting a clvm VG to a lockd VG.
-
-
-.SS lockd VGs from hosts not using lvmlockd
-
-Only hosts that use lockd VGs should be configured to run lvmlockd.
-However, shared devices used by lockd VGs may be visible from hosts not
-using lvmlockd.  From a host not using lvmlockd, visible lockd VGs are
-ignored in the same way as foreign VGs (see
-.BR lvmsystemid (7).)
-
-The \-\-shared option for reporting and display commands causes lockd VGs
-to be displayed on a host not using lvmlockd, like the \-\-foreign option
-does for foreign VGs.
-
-
-.SS vgcreate comparison
-
-The type of VG access control is specified in the vgcreate command.
-See
-.BR vgcreate (8)
-for all vgcreate options.
-
-.B vgcreate <vgname> <devices>
-
-.IP \[bu] 2
-Creates a local VG with the local system ID when neither lvmlockd nor clvm are configured.
-.IP \[bu] 2
-Creates a local VG with the local system ID when lvmlockd is configured.
-.IP \[bu] 2
-Creates a clvm VG when clvm is configured.
-
-.P
-
-.B vgcreate \-\-shared <vgname> <devices>
-.IP \[bu] 2
-Requires lvmlockd to be configured and running.
-.IP \[bu] 2
-Creates a lockd VG with lock type sanlock|dlm depending on which lock
-manager is running.
-.IP \[bu] 2
-LVM commands request locks from lvmlockd to use the VG.
-.IP \[bu] 2
-lvmlockd obtains locks from the selected lock manager.
-
-.P
-
-.B vgcreate \-c|\-\-clustered y <vgname> <devices>
-.IP \[bu] 2
-Requires clvm to be configured and running.
-.IP \[bu] 2
-Creates a clvm VG with the "clustered" flag.
-.IP \[bu] 2
-LVM commands request locks from clvmd to use the VG.
-
-.P
-
-.SS creating the first sanlock VG
-
-Creating the first sanlock VG is not protected by locking and requires
-special attention.  This is because sanlock locks exist within the VG, so
-they are not available until the VG exists.  The first sanlock VG will
-contain the "global lock".
-
-.IP \[bu] 2
-The first vgcreate command needs to be given the path to a device that has
-not yet been initialized with pvcreate.  The pvcreate initialization will
-be done by vgcreate.  This is because the pvcreate command requires the
-global lock, which will not be available until after the first sanlock VG
-is created.
-
-.IP \[bu] 2
-While running vgcreate for the first sanlock VG, ensure that the device
-being used is not used by another LVM command.  Allocation of shared
-devices is usually protected by the global lock, but this cannot be done
-for the first sanlock VG which will hold the global lock.
-
-.IP \[bu] 2
-While running vgcreate for the first sanlock VG, ensure that the VG name
-being used is not used by another LVM command.  Uniqueness of VG names is
-usually ensured by the global lock.
-
-.IP \[bu] 2
-Because the first sanlock VG will contain the global lock, this VG needs
-to be accessible to all hosts that will use sanlock shared VGs.  All hosts
-will need to use the global lock from the first sanlock VG.
-
-See below for more information about managing the sanlock global lock.
-
-
-.SS using lockd VGs
-
-There are some special considerations when using lockd VGs.
-
-When use_lvmlockd is first enabled in lvm.conf, and before the first lockd
-VG is created, no global lock will exist.  In this initial state, LVM
-commands try and fail to acquire the global lock, producing a warning, and
-some commands are disallowed.  Once the first lockd VG is created, the
-global lock will be available, and LVM will be fully operational.
-
-When a new lockd VG is created, its lockspace is automatically started on
-the host that creates it.  Other hosts need to run 'vgchange
-\-\-lock\-start' to start the new VG before they can use it.
-
-From the 'vgs' command, lockd VGs are indicated by "s" (for shared) in the
-sixth attr field.  The specific lock type and lock args for a lockd VG can
-be displayed with 'vgs \-o+locktype,lockargs'.
-
-lockd VGs need to be "started" and "stopped", unlike other types of VGs.
-See the following section for a full description of starting and stopping.
-
-vgremove of a lockd VG will fail if other hosts have the VG started.
-Run vgchange \-\-lock-stop <vgname> on all other hosts before vgremove.
-(It may take several seconds before vgremove recognizes that all hosts
-have stopped a sanlock VG.)
-
-.SS starting and stopping VGs
-
-Starting a lockd VG (vgchange \-\-lock\-start) causes the lock manager to
-start (join) the lockspace for the VG on the host where it is run.  This
-makes locks for the VG available to LVM commands on the host.  Before a VG
-is started, only LVM commands that read/display the VG are allowed to
-continue without locks (and with a warning).
-
-Stopping a lockd VG (vgchange \-\-lock\-stop) causes the lock manager to
-stop (leave) the lockspace for the VG on the host where it is run.  This
-makes locks for the VG inaccessible to the host.  A VG cannot be stopped
-while it has active LVs.
-
-When using the lock type sanlock, starting a VG can take a long time
-(potentially minutes if the host was previously shut down without cleanly
-stopping the VG.)
-
-A lockd VG can be started after all the following are true:
-.br
-\[bu]
-lvmlockd is running
-.br
-\[bu]
-the lock manager is running
-.br
-\[bu]
-the VG is visible to the system
-.br
-
-A lockd VG can be stopped if all LVs are deactivated.
-
-All lockd VGs can be started/stopped using:
-.br
-vgchange \-\-lock-start
-.br
-vgchange \-\-lock-stop
-
-
-Individual VGs can be started/stopped using:
-.br
-vgchange \-\-lock\-start <vgname> ...
-.br
-vgchange \-\-lock\-stop <vgname> ...
-
-To make vgchange not wait for start to complete:
-.br
-vgchange \-\-lock\-start \-\-lock\-opt nowait ...
-
-lvmlockd can be asked directly to stop all lockspaces:
-.br
-lvmlockctl \-\-stop\-lockspaces
-
-To start only selected lockd VGs, use the lvm.conf
-activation/lock_start_list.  When defined, only VG names in this list are
-started by vgchange.  If the list is not defined (the default), all
-visible lockd VGs are started.  To start only "vg1", use the following
-lvm.conf configuration:
-
-.nf
-activation {
-    lock_start_list = [ "vg1" ]
-    ...
-}
-.fi
-
-
-.SS automatic starting and automatic activation
-
-Scripts or programs on a host that automatically start VGs will use the
-"auto" option to indicate that the command is being run automatically by
-the system:
-
-vgchange \-\-lock\-start \-\-lock\-opt auto [<vgname> ...]
-
-Without any additional configuration, including the "auto" option has no
-effect; all VGs are started unless restricted by lock_start_list.
-
-However, when the lvm.conf activation/auto_lock_start_list is defined, the
-auto start command performs an additional filtering phase to all VGs being
-started, testing each VG name against the auto_lock_start_list.  The
-auto_lock_start_list defines lockd VGs that will be started by the auto
-start command.  Visible lockd VGs not included in the list are ignored by
-the auto start command.  If the list is undefined, all VG names pass this
-filter.  (The lock_start_list is also still used to filter all VGs.)
-
-The auto_lock_start_list allows a user to select certain lockd VGs that
-should be automatically started by the system (or indirectly, those that
-should not).
-
-To use auto activation of lockd LVs (see auto_activation_volume_list),
-auto starting of the corresponding lockd VGs is necessary.
-
-
-.SS internal command locking
-
-To optimize the use of LVM with lvmlockd, be aware of the three kinds of
-locks and when they are used:
-
-.I GL lock
-
-The global lock (GL lock) is associated with global information, which is
-information not isolated to a single VG.  This includes:
-
-\[bu]
-The global VG namespace.
-.br
-\[bu]
-The set of orphan PVs and unused devices.
-.br
-\[bu]
-The properties of orphan PVs, e.g. PV size.
-.br
-
-The global lock is used in shared mode by commands that read this
-information, or in exclusive mode by commands that change it.
-
-The command 'vgs' acquires the global lock in shared mode because it
-reports the list of all VG names.
-
-The vgcreate command acquires the global lock in exclusive mode because it
-creates a new VG name, and it takes a PV from the list of unused PVs.
-
-When an LVM command is given a tag argument, or uses select, it must read
-all VGs to match the tag or selection, which causes the global lock to be
-acquired.
-
-.I VG lock
-
-A VG lock is associated with each VG.  The VG lock is acquired in shared
-mode to read the VG and in exclusive mode to change the VG (modify the VG
-metadata or activate LVs).  This lock serializes access to a VG with all
-other LVM commands accessing the VG from all hosts.
-
-The command 'vgs' will not only acquire the GL lock to read the list of
-all VG names, but will acquire the VG lock for each VG prior to reading
-it.
-
-The command 'vgs <vgname>' does not acquire the GL lock (it does not need
-the list of all VG names), but will acquire the VG lock on each VG name
-argument.
-
-.I LV lock
-
-An LV lock is acquired before the LV is activated, and is released after
-the LV is deactivated.  If the LV lock cannot be acquired, the LV is not
-activated.  LV locks are persistent and remain in place after the
-activation command is done.  GL and VG locks are transient, and are held
-only while an LVM command is running.
-
-.I lock retries
-
-If a request for a GL or VG lock fails due to a lock conflict with another
-host, lvmlockd automatically retries for a short time before returning a
-failure to the LVM command.  If those retries are insufficient, the LVM
-command will retry the entire lock request a number of times specified by
-global/lvmlockd_lock_retries before failing.  If a request for an LV lock
-fails due to a lock conflict, the command fails immediately.
-
-
-.SS managing the global lock in sanlock VGs
-
-The global lock exists in one of the sanlock VGs.  The first sanlock VG
-created will contain the global lock.  Subsequent sanlock VGs will each
-contain disabled global locks that can be enabled later if necessary.
-
-The VG containing the global lock must be visible to all hosts using
-sanlock VGs.  This can be a reason to create a small sanlock VG, visible
-to all hosts, and dedicated to just holding the global lock.  While not
-required, this strategy can help to avoid difficulty in the future if VGs
-are moved or removed.
-
-The vgcreate command typically acquires the global lock, but in the case
-of the first sanlock VG, there will be no global lock to acquire until the
-first vgcreate is complete.  So, creating the first sanlock VG is a
-special case that skips the global lock.
-
-vgcreate for a sanlock VG determines it is the first one to exist if no
-other sanlock VGs are visible.  It is possible that other sanlock VGs do
-exist but are not visible on the host running vgcreate.  In this case,
-vgcreate would create a new sanlock VG with the global lock enabled.  When
-the other VG containing a global lock appears, lvmlockd will see more than
-one VG with a global lock enabled, and LVM commands will report that there
-are duplicate global locks.
-
-If the situation arises where more than one sanlock VG contains a global
-lock, the global lock should be manually disabled in all but one of them
-with the command:
-
-lvmlockctl \-\-gl\-disable <vgname>
-
-(The one VG with the global lock enabled must be visible to all hosts.)
-
-An opposite problem can occur if the VG holding the global lock is
-removed.  In this case, no global lock will exist following the vgremove,
-and subsequent LVM commands will fail to acquire it.  In this case, the
-global lock needs to be manually enabled in one of the remaining sanlock
-VGs with the command:
-
-lvmlockctl \-\-gl\-enable <vgname>
-
-A small sanlock VG dedicated to holding the global lock can avoid the case
-where the GL lock must be manually enabled after a vgremove.
-
-
-.SS internal lvmlock LV
-
-A sanlock VG contains a hidden LV called "lvmlock" that holds the sanlock
-locks.  vgreduce cannot yet remove the PV holding the lvmlock LV.  To
-remove this PV, change the VG lock type to "none", run vgreduce, then
-change the VG lock type back to "sanlock".  Similarly, pvmove cannot be
-used on a PV used by the lvmlock LV.
-
-To place the lvmlock LV on a specific device, create the VG with only that
-device, then use vgextend to add other devices.
-
-
-.SS LV activation
-
-In a shared VG, activation changes involve locking through lvmlockd, and
-the following values are possible with lvchange/vgchange -a:
-
-.IP \fBy\fP|\fBey\fP
-The command activates the LV in exclusive mode, allowing a single host
-to activate the LV.  Before activating the LV, the command uses lvmlockd
-to acquire an exclusive lock on the LV.  If the lock cannot be acquired,
-the LV is not activated and an error is reported.  This would happen if
-the LV is active on another host.
-
-.IP \fBsy\fP
-The command activates the LV in shared mode, allowing multiple hosts to
-activate the LV concurrently.  Before activating the LV, the
-command uses lvmlockd to acquire a shared lock on the LV.  If the lock
-cannot be acquired, the LV is not activated and an error is reported.
-This would happen if the LV is active exclusively on another host.  If the
-LV type prohibits shared access, such as a snapshot, the command will
-report an error and fail.
-The shared mode is intended for a multi\-host/cluster application or
-file system.
-LV types that cannot be used concurrently
-from multiple hosts include thin, cache, raid, mirror, and snapshot.
-lvextend on LV with shared locks is not yet allowed.  The LV must be
-deactivated, or activated exclusively to run lvextend.
-
-.IP \fBn\fP
-The command deactivates the LV.  After deactivating the LV, the command
-uses lvmlockd to release the current lock on the LV.
-
-
-.SS recover from lost PV holding sanlock locks
-
-The general approach is to change the VG lock type to "none", and then
-change the lock type back to "sanlock".  This recreates the internal
-lvmlock LV and the necessary locks on it.  Additional steps may be
-required to deal with the missing PV.
-
-
-.SS locking system failures
-
-.B lvmlockd failure
-
-If lvmlockd fails or is killed while holding locks, the locks are orphaned
-in the lock manager.  lvmlockd can be restarted with an option to adopt
-locks in the lock manager that had been held by the previous instance.
-
-.B dlm/corosync failure
-
-If dlm or corosync fail, the clustering system will fence the host using a
-method configured within the dlm/corosync clustering environment.
-
-LVM commands on other hosts will be blocked from acquiring any locks until
-the dlm/corosync recovery process is complete.
-
-.B sanlock lease storage failure
-
-If the PV under a sanlock VG's lvmlock LV is disconnected, unresponsive or
-too slow, sanlock cannot renew the lease for the VG's locks.  After some
-time, the lease will expire, and locks that the host owns in the VG can be
-acquired by other hosts.  The VG must be forcibly deactivated on the host
-with the expiring lease before other hosts can acquire its locks.
-
-When the sanlock daemon detects that the lease storage is lost, it runs
-the command lvmlockctl \-\-kill <vgname>.  This command emits a syslog
-message stating that lease storage is lost for the VG and LVs must be
-immediately deactivated.
-
-If no LVs are active in the VG, then the lockspace with an expiring lease
-will be removed, and errors will be reported when trying to use the VG.
-Use the lvmlockctl \-\-drop command to clear the stale lockspace from
-lvmlockd.
-
-If the VG has active LVs when the lock storage is lost, the LVs must be
-quickly deactivated before the lockspace lease expires.  After all LVs are
-deactivated, run lvmlockctl \-\-drop <vgname> to clear the expiring
-lockspace from lvmlockd.  If all LVs in the VG are not deactivated within
-about 40 seconds, sanlock will reset the host using the local watchdog.
-The machine reset is effectively a severe form of "deactivating" LVs
-before they can be activated on other hosts.  The reset is considered a
-better alternative than having LVs used by multiple hosts at once, which
-could easily damage or destroy their content.
-
-In the future, the lvmlockctl kill command may automatically attempt to
-forcibly deactivate LVs before the sanlock lease expires.  Until then, the
-user must notice the syslog message and manually deactivate the VG before
-sanlock resets the machine.
-
-.B sanlock daemon failure
-
-If the sanlock daemon fails or exits while a lockspace is started, the
-local watchdog will reset the host.  This is necessary to protect any
-application resources that depend on sanlock leases which will be lost
-without sanlock running.
-
-
-.SS changing dlm cluster name
-
-When a dlm VG is created, the cluster name is saved in the VG metadata.
-To use the VG, a host must be in the named dlm cluster.  If the dlm
-cluster name changes, or the VG is moved to a new cluster, the dlm cluster
-name saved in the VG must also be changed.
-
-To see the dlm cluster name saved in the VG, use the command:
-.br
-vgs -o+locktype,lockargs <vgname>
-
-To change the dlm cluster name in the VG when the VG is still used by the
-original cluster:
-
-.IP \[bu] 2
-Stop the VG on all hosts:
-.br
-vgchange --lock-stop <vgname>
-
-.IP \[bu] 2
-Change the VG lock type to none:
-.br
-vgchange \-\-lock\-type none <vgname>
-
-.IP \[bu] 2
-Change the dlm cluster name on the host or move the VG to the new cluster.
-The new dlm cluster must now be active on the host.  Verify the new name
-by:
-.br
-cat /sys/kernel/config/dlm/cluster/cluster_name
-
-.IP \[bu] 2
-Change the VG lock type back to dlm which sets the new cluster name:
-.br
-vgchange \-\-lock\-type dlm <vgname>
-
-.IP \[bu] 2
-Start the VG on hosts to use it:
-.br
-vgchange --lock-start <vgname>
-
-.P
-
-To change the dlm cluster name in the VG when the dlm cluster name has
-already changed, or the VG has already moved to a different cluster:
-
-.IP \[bu] 2
-Ensure the VG is not being used by any hosts.
-
-.IP \[bu] 2
-The new dlm cluster must be active on the host making the change.
-The current dlm cluster name can be seen by:
-.br
-cat /sys/kernel/config/dlm/cluster/cluster_name
-
-.IP \[bu] 2
-Change the VG lock type to none:
-.br
-vgchange \-\-lock\-type none \-\-force <vgname>
-
-.IP \[bu] 2
-Change the VG lock type back to dlm which sets the new cluster name:
-.br
-vgchange \-\-lock\-type dlm <vgname>
-
-.IP \[bu] 2
-Start the VG on hosts to use it:
-.br
-vgchange --lock-start <vgname>
-
-
-.SS changing a local VG to a lockd VG
-
-All LVs must be inactive to change the lock type.
-
-lvmlockd must be configured and running as described in USAGE.
-
-Change a local VG to a lockd VG with the command:
-.br
-vgchange \-\-lock\-type sanlock|dlm <vgname>
-
-Start the VG on hosts to use it:
-.br
-vgchange \-\-lock\-start <vgname>
-
-
-.SS changing a lockd VG to a local VG
-
-Stop the lockd VG on all hosts, then run:
-.br
-vgchange \-\-lock\-type none <vgname>
-
-To change a VG from one lockd type to another (i.e. between sanlock and
-dlm), first change it to a local VG, then to the new type.
-
-
-.SS changing a clvm VG to a lockd VG
-
-All LVs must be inactive to change the lock type.
-
-First change the clvm VG to a local VG.  Within a running clvm cluster,
-change a clvm VG to a local VG with the command:
-
-vgchange \-cn <vgname>
-
-If the clvm cluster is no longer running on any nodes, then extra options
-can be used to forcibly make the VG local.  Caution: this is only safe if
-all nodes have stopped using the VG:
-
-vgchange \-\-config 'global/locking_type=0 global/use_lvmlockd=0'
-.RS
-\-cn <vgname>
-.RE
-
-After the VG is local, follow the steps described in "changing a local VG
-to a lockd VG".
-
-
-.SS limitations of lockd VGs
-
-Things that do not yet work in lockd VGs:
-.br
-\[bu]
-creating a new thin pool and a new thin LV in a single command
-.br
-\[bu]
-using lvcreate to create cache pools or cache LVs (use lvconvert)
-.br
-\[bu]
-using external origins for thin LVs
-.br
-\[bu]
-splitting mirrors and snapshots from LVs
-.br
-\[bu]
-vgsplit
-.br
-\[bu]
-vgmerge
-.br
-\[bu]
-resizing an LV that is active in the shared mode on multiple hosts
-
-
-.SS lvmlockd changes from clvmd
-
-(See above for converting an existing clvm VG to a lockd VG.)
-
-While lvmlockd and clvmd are entirely different systems, LVM command usage
-remains similar.  Differences are more notable when using lvmlockd's
-sanlock option.
-
-Visible usage differences between lockd VGs with lvmlockd and clvm VGs
-with clvmd:
-
-.IP \[bu] 2
-lvm.conf must be configured to use either lvmlockd (use_lvmlockd=1) or
-clvmd (locking_type=3), but not both.
-
-.IP \[bu] 2
-vgcreate \-\-shared creates a lockd VG, and vgcreate \-\-clustered y
-creates a clvm VG.
-
-.IP \[bu] 2
-lvmlockd adds the option of using sanlock for locking, avoiding the
-need for network clustering.
-
-.IP \[bu] 2
-lvmlockd defaults to the exclusive activation mode whenever the activation
-mode is unspecified, i.e. \-ay means \-aey, not \-asy.
-
-.IP \[bu] 2
-lvmlockd commands always apply to the local host, and never have an effect
-on a remote host.  (The activation option 'l' is not used.)
-
-.IP \[bu] 2
-lvmlockd works with thin and cache pools and LVs.
-
-.IP \[bu] 2
-lvmlockd works with lvmetad.
-
-.IP \[bu] 2
-lvmlockd saves the cluster name for a lockd VG using dlm.  Only hosts in
-the matching cluster can use the VG.
-
-.IP \[bu] 2
-lvmlockd requires starting/stopping lockd VGs with vgchange \-\-lock-start
-and \-\-lock-stop.
-
-.IP \[bu] 2
-vgremove of a sanlock VG may fail indicating that all hosts have not
-stopped the VG lockspace.  Stop the VG on all hosts using vgchange
-\-\-lock-stop.
-
-.IP \[bu] 2
-vgreduce or pvmove of a PV in a sanlock VG will fail if it holds the
-internal "lvmlock" LV that holds the sanlock locks.
-
-.IP \[bu] 2
-lvmlockd uses lock retries instead of lock queueing, so high lock
-contention may require increasing global/lvmlockd_lock_retries to
-avoid transient lock failures.
-
-.IP \[bu] 2
-lvmlockd includes VG reporting options lock_type and lock_args, and LV
-reporting option lock_args to view the corresponding metadata fields.
-
-.IP \[bu] 2
-In the 'vgs' command's sixth VG attr field, "s" for "shared" is displayed
-for lockd VGs.
-
-.IP \[bu] 2
-If lvmlockd fails or is killed while in use, locks it held remain but are
-orphaned in the lock manager.  lvmlockd can be restarted with an option to
-adopt the orphan locks from the previous instance of lvmlockd.
-
-.P
diff --git a/man/lvmlockd.8_main b/man/lvmlockd.8_main
new file mode 100644
index 0000000..6e9b703
--- /dev/null
+++ b/man/lvmlockd.8_main
@@ -0,0 +1,889 @@
+.TH "LVMLOCKD" "8" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmlockd \(em LVM locking daemon
+
+.SH DESCRIPTION
+LVM commands use lvmlockd to coordinate access to shared storage.
+.br
+When LVM is used on devices shared by multiple hosts, locks will:
+
+\[bu]
+coordinate reading and writing of LVM metadata
+.br
+\[bu]
+validate caching of LVM metadata
+.br
+\[bu]
+prevent concurrent activation of logical volumes
+.br
+
+lvmlockd uses an external lock manager to perform basic locking.
+.br
+Lock manager (lock type) options are:
+
+\[bu]
+sanlock: places locks on disk within LVM storage.
+.br
+\[bu]
+dlm: uses network communication and a cluster manager.
+.br
+
+.SH OPTIONS
+
+lvmlockd [options]
+
+For default settings, see lvmlockd \-h.
+
+.B  \-\-help | \-h
+        Show this help information.
+
+.B  \-\-version | \-V
+        Show version of lvmlockd.
+
+.B  \-\-test | \-T
+        Test mode, do not call lock manager.
+
+.B  \-\-foreground | \-f
+        Don't fork.
+
+.B  \-\-daemon\-debug | \-D
+        Don't fork and print debugging to stdout.
+
+.B  \-\-pid\-file | \-p
+.I path
+        Set path to the pid file.
+
+.B  \-\-socket\-path | \-s
+.I path
+        Set path to the socket to listen on.
+
+.B  \-\-syslog\-priority | \-S err|warning|debug
+        Write log messages from this level up to syslog.
+
+.B  \-\-gl\-type | \-g sanlock|dlm
+        Set global lock type to be sanlock or dlm.
+
+.B  \-\-host\-id | \-i
+.I num
+        Set the local sanlock host id.
+
+.B  \-\-host\-id\-file | \-F
+.I path
+        A file containing the local sanlock host_id.
+
+.B  \-\-sanlock\-timeout | \-o
+.I seconds
+        Override the default sanlock I/O timeout.
+
+.B  \-\-adopt | \-A 0|1
+        Adopt locks from a previous instance of lvmlockd.
+
+
+.SH USAGE
+
+.SS Initial set up
+
+Using LVM with lvmlockd for the first time includes some one\-time set up
+steps:
+
+.SS 1. choose a lock manager
+
+.I dlm
+.br
+If dlm (or corosync) are already being used by other cluster
+software, then select dlm.  dlm uses corosync which requires additional
+configuration beyond the scope of this document.  See corosync and dlm
+documentation for instructions on configuration, setup and usage.
+
+.I sanlock
+.br
+Choose sanlock if dlm/corosync are not otherwise required.
+sanlock does not depend on any clustering software or configuration.
+
+.SS 2. configure hosts to use lvmlockd
+
+On all hosts running lvmlockd, configure lvm.conf:
+.nf
+locking_type = 1
+use_lvmlockd = 1
+.fi
+
+.I sanlock
+.br
+Assign each host a unique host_id in the range 1\-2000 by setting
+.br
+/etc/lvm/lvmlocal.conf local/host_id
+
+.SS 3. start lvmlockd
+
+Use a service/init file if available, or just run "lvmlockd".
+
+.SS 4. start lock manager
+
+.I sanlock
+.br
+systemctl start wdmd sanlock
+
+.I dlm
+.br
+Follow external clustering documentation when applicable, otherwise:
+.br
+systemctl start corosync dlm
+
+.SS 5. create VG on shared devices
+
+vgcreate \-\-shared <vgname> <devices>
+
+The shared option sets the VG lock type to sanlock or dlm depending on
+which lock manager is running.  LVM commands will perform locking for the
+VG using lvmlockd.  lvmlockd will use the chosen lock manager.
+
+.SS 6. start VG on all hosts
+
+vgchange \-\-lock\-start
+
+lvmlockd requires shared VGs to be started before they are used.  This is
+a lock manager operation to start (join) the VG lockspace, and it may take
+some time.  Until the start completes, locks for the VG are not available.
+LVM commands are allowed to read the VG while start is in progress.  (An
+init/unit file can also be used to start VGs.)
+
+.SS 7. create and activate LVs
+
+Standard lvcreate and lvchange commands are used to create and activate
+LVs in a shared VG.
+
+An LV activated exclusively on one host cannot be activated on another.
+When multiple hosts need to use the same LV concurrently, the LV can be
+activated with a shared lock (see lvchange options \-aey vs \-asy.)
+(Shared locks are disallowed for certain LV types that cannot be used from
+multiple hosts.)
+
+
+.SS Normal start up and shut down
+
+After initial set up, start up and shut down include the following general
+steps.  They can be performed manually or using the system service
+manager.
+
+\[bu]
+start lvmetad
+.br
+\[bu]
+start lvmlockd
+.br
+\[bu]
+start lock manager
+.br
+\[bu]
+vgchange \-\-lock\-start
+.br
+\[bu]
+activate LVs in shared VGs
+.br
+
+The shut down sequence is the reverse:
+
+\[bu]
+deactivate LVs in shared VGs
+.br
+\[bu]
+vgchange \-\-lock\-stop
+.br
+\[bu]
+stop lock manager
+.br
+\[bu]
+stop lvmlockd
+.br
+\[bu]
+stop lvmetad
+.br
+
+.P
+
+.SH TOPICS
+
+.SS VG access control
+
+The following terms are used to describe different forms of VG access
+control.
+
+.I "lockd VG"
+
+A "lockd VG" is a shared VG that has a "lock type" of dlm or sanlock.
+Using it requires lvmlockd.  These VGs exist on shared storage that is
+visible to multiple hosts.  LVM commands use lvmlockd to perform locking
+for these VGs when they are used.
+
+If the lock manager for the lock type is not available (e.g. not started
+or failed), lvmlockd is unable to acquire locks for LVM commands.  LVM
+commands that only read the VG will generally be allowed to continue
+without locks in this case (with a warning).  Commands to modify or
+activate the VG will fail without the necessary locks.
+
+.I "local VG"
+
+A "local VG" is meant to be used by a single host.  It has no lock type or
+lock type "none".  LVM commands and lvmlockd do not perform locking for
+these VGs.  A local VG typically exists on local (non\-shared) devices and
+cannot be used concurrently from different hosts.
+
+If a local VG does exist on shared devices, it should be owned by a single
+host by having its system ID set, see
+.BR lvmsystemid (7).
+Only the host with a matching system ID can use the local VG.  A VG
+with no lock type and no system ID should be excluded from all but one
+host using lvm.conf filters.  Without any of these protections, a local VG
+on shared devices can be easily damaged or destroyed.
+
+.I "clvm VG"
+
+A "clvm VG" is a VG on shared storage (like a lockd VG) that requires
+clvmd for clustering.  See below for converting a clvm VG to a lockd VG.
+
+
+.SS lockd VGs from hosts not using lvmlockd
+
+Only hosts that use lockd VGs should be configured to run lvmlockd.
+However, shared devices used by lockd VGs may be visible from hosts not
+using lvmlockd.  From a host not using lvmlockd, visible lockd VGs are
+ignored in the same way as foreign VGs (see
+.BR lvmsystemid (7).)
+
+The \-\-shared option for reporting and display commands causes lockd VGs
+to be displayed on a host not using lvmlockd, like the \-\-foreign option
+does for foreign VGs.
+
+
+.SS vgcreate comparison
+
+The type of VG access control is specified in the vgcreate command.
+See
+.BR vgcreate (8)
+for all vgcreate options.
+
+.B vgcreate <vgname> <devices>
+
+.IP \[bu] 2
+Creates a local VG with the local system ID when neither lvmlockd nor clvm are configured.
+.IP \[bu] 2
+Creates a local VG with the local system ID when lvmlockd is configured.
+.IP \[bu] 2
+Creates a clvm VG when clvm is configured.
+
+.P
+
+.B vgcreate \-\-shared <vgname> <devices>
+.IP \[bu] 2
+Requires lvmlockd to be configured and running.
+.IP \[bu] 2
+Creates a lockd VG with lock type sanlock|dlm depending on which lock
+manager is running.
+.IP \[bu] 2
+LVM commands request locks from lvmlockd to use the VG.
+.IP \[bu] 2
+lvmlockd obtains locks from the selected lock manager.
+
+.P
+
+.B vgcreate \-c|\-\-clustered y <vgname> <devices>
+.IP \[bu] 2
+Requires clvm to be configured and running.
+.IP \[bu] 2
+Creates a clvm VG with the "clustered" flag.
+.IP \[bu] 2
+LVM commands request locks from clvmd to use the VG.
+
+.P
+
+.SS creating the first sanlock VG
+
+Creating the first sanlock VG is not protected by locking and requires
+special attention.  This is because sanlock locks exist within the VG, so
+they are not available until the VG exists.  The first sanlock VG will
+contain the "global lock".
+
+.IP \[bu] 2
+The first vgcreate command needs to be given the path to a device that has
+not yet been initialized with pvcreate.  The pvcreate initialization will
+be done by vgcreate.  This is because the pvcreate command requires the
+global lock, which will not be available until after the first sanlock VG
+is created.
+
+.IP \[bu] 2
+While running vgcreate for the first sanlock VG, ensure that the device
+being used is not used by another LVM command.  Allocation of shared
+devices is usually protected by the global lock, but this cannot be done
+for the first sanlock VG which will hold the global lock.
+
+.IP \[bu] 2
+While running vgcreate for the first sanlock VG, ensure that the VG name
+being used is not used by another LVM command.  Uniqueness of VG names is
+usually ensured by the global lock.
+
+.IP \[bu] 2
+Because the first sanlock VG will contain the global lock, this VG needs
+to be accessible to all hosts that will use sanlock shared VGs.  All hosts
+will need to use the global lock from the first sanlock VG.
+
+See below for more information about managing the sanlock global lock.
+
+
+.SS using lockd VGs
+
+There are some special considerations when using lockd VGs.
+
+When use_lvmlockd is first enabled in lvm.conf, and before the first lockd
+VG is created, no global lock will exist.  In this initial state, LVM
+commands try and fail to acquire the global lock, producing a warning, and
+some commands are disallowed.  Once the first lockd VG is created, the
+global lock will be available, and LVM will be fully operational.
+
+When a new lockd VG is created, its lockspace is automatically started on
+the host that creates it.  Other hosts need to run 'vgchange
+\-\-lock\-start' to start the new VG before they can use it.
+
+From the 'vgs' command, lockd VGs are indicated by "s" (for shared) in the
+sixth attr field.  The specific lock type and lock args for a lockd VG can
+be displayed with 'vgs \-o+locktype,lockargs'.
+
+lockd VGs need to be "started" and "stopped", unlike other types of VGs.
+See the following section for a full description of starting and stopping.
+
+vgremove of a lockd VG will fail if other hosts have the VG started.
+Run vgchange \-\-lock-stop <vgname> on all other hosts before vgremove.
+(It may take several seconds before vgremove recognizes that all hosts
+have stopped a sanlock VG.)
+
+.SS starting and stopping VGs
+
+Starting a lockd VG (vgchange \-\-lock\-start) causes the lock manager to
+start (join) the lockspace for the VG on the host where it is run.  This
+makes locks for the VG available to LVM commands on the host.  Before a VG
+is started, only LVM commands that read/display the VG are allowed to
+continue without locks (and with a warning).
+
+Stopping a lockd VG (vgchange \-\-lock\-stop) causes the lock manager to
+stop (leave) the lockspace for the VG on the host where it is run.  This
+makes locks for the VG inaccessible to the host.  A VG cannot be stopped
+while it has active LVs.
+
+When using the lock type sanlock, starting a VG can take a long time
+(potentially minutes if the host was previously shut down without cleanly
+stopping the VG.)
+
+A lockd VG can be started after all the following are true:
+.br
+\[bu]
+lvmlockd is running
+.br
+\[bu]
+the lock manager is running
+.br
+\[bu]
+the VG is visible to the system
+.br
+
+A lockd VG can be stopped if all LVs are deactivated.
+
+All lockd VGs can be started/stopped using:
+.br
+vgchange \-\-lock-start
+.br
+vgchange \-\-lock-stop
+
+
+Individual VGs can be started/stopped using:
+.br
+vgchange \-\-lock\-start <vgname> ...
+.br
+vgchange \-\-lock\-stop <vgname> ...
+
+To make vgchange not wait for start to complete:
+.br
+vgchange \-\-lock\-start \-\-lock\-opt nowait ...
+
+lvmlockd can be asked directly to stop all lockspaces:
+.br
+lvmlockctl \-\-stop\-lockspaces
+
+To start only selected lockd VGs, use the lvm.conf
+activation/lock_start_list.  When defined, only VG names in this list are
+started by vgchange.  If the list is not defined (the default), all
+visible lockd VGs are started.  To start only "vg1", use the following
+lvm.conf configuration:
+
+.nf
+activation {
+    lock_start_list = [ "vg1" ]
+    ...
+}
+.fi
+
+
+.SS automatic starting and automatic activation
+
+Scripts or programs on a host that automatically start VGs will use the
+"auto" option to indicate that the command is being run automatically by
+the system:
+
+vgchange \-\-lock\-start \-\-lock\-opt auto [<vgname> ...]
+
+Without any additional configuration, including the "auto" option has no
+effect; all VGs are started unless restricted by lock_start_list.
+
+However, when the lvm.conf activation/auto_lock_start_list is defined, the
+auto start command performs an additional filtering phase to all VGs being
+started, testing each VG name against the auto_lock_start_list.  The
+auto_lock_start_list defines lockd VGs that will be started by the auto
+start command.  Visible lockd VGs not included in the list are ignored by
+the auto start command.  If the list is undefined, all VG names pass this
+filter.  (The lock_start_list is also still used to filter all VGs.)
+
+The auto_lock_start_list allows a user to select certain lockd VGs that
+should be automatically started by the system (or indirectly, those that
+should not).
+
+To use auto activation of lockd LVs (see auto_activation_volume_list),
+auto starting of the corresponding lockd VGs is necessary.
+
+
+.SS internal command locking
+
+To optimize the use of LVM with lvmlockd, be aware of the three kinds of
+locks and when they are used:
+
+.I GL lock
+
+The global lock (GL lock) is associated with global information, which is
+information not isolated to a single VG.  This includes:
+
+\[bu]
+The global VG namespace.
+.br
+\[bu]
+The set of orphan PVs and unused devices.
+.br
+\[bu]
+The properties of orphan PVs, e.g. PV size.
+.br
+
+The global lock is used in shared mode by commands that read this
+information, or in exclusive mode by commands that change it.
+
+The command 'vgs' acquires the global lock in shared mode because it
+reports the list of all VG names.
+
+The vgcreate command acquires the global lock in exclusive mode because it
+creates a new VG name, and it takes a PV from the list of unused PVs.
+
+When an LVM command is given a tag argument, or uses select, it must read
+all VGs to match the tag or selection, which causes the global lock to be
+acquired.
+
+.I VG lock
+
+A VG lock is associated with each VG.  The VG lock is acquired in shared
+mode to read the VG and in exclusive mode to change the VG (modify the VG
+metadata or activate LVs).  This lock serializes access to a VG with all
+other LVM commands accessing the VG from all hosts.
+
+The command 'vgs' will not only acquire the GL lock to read the list of
+all VG names, but will acquire the VG lock for each VG prior to reading
+it.
+
+The command 'vgs <vgname>' does not acquire the GL lock (it does not need
+the list of all VG names), but will acquire the VG lock on each VG name
+argument.
+
+.I LV lock
+
+An LV lock is acquired before the LV is activated, and is released after
+the LV is deactivated.  If the LV lock cannot be acquired, the LV is not
+activated.  LV locks are persistent and remain in place after the
+activation command is done.  GL and VG locks are transient, and are held
+only while an LVM command is running.
+
+.I lock retries
+
+If a request for a GL or VG lock fails due to a lock conflict with another
+host, lvmlockd automatically retries for a short time before returning a
+failure to the LVM command.  If those retries are insufficient, the LVM
+command will retry the entire lock request a number of times specified by
+global/lvmlockd_lock_retries before failing.  If a request for an LV lock
+fails due to a lock conflict, the command fails immediately.
+
+
+.SS managing the global lock in sanlock VGs
+
+The global lock exists in one of the sanlock VGs.  The first sanlock VG
+created will contain the global lock.  Subsequent sanlock VGs will each
+contain disabled global locks that can be enabled later if necessary.
+
+The VG containing the global lock must be visible to all hosts using
+sanlock VGs.  This can be a reason to create a small sanlock VG, visible
+to all hosts, and dedicated to just holding the global lock.  While not
+required, this strategy can help to avoid difficulty in the future if VGs
+are moved or removed.
+
+The vgcreate command typically acquires the global lock, but in the case
+of the first sanlock VG, there will be no global lock to acquire until the
+first vgcreate is complete.  So, creating the first sanlock VG is a
+special case that skips the global lock.
+
+vgcreate for a sanlock VG determines it is the first one to exist if no
+other sanlock VGs are visible.  It is possible that other sanlock VGs do
+exist but are not visible on the host running vgcreate.  In this case,
+vgcreate would create a new sanlock VG with the global lock enabled.  When
+the other VG containing a global lock appears, lvmlockd will see more than
+one VG with a global lock enabled, and LVM commands will report that there
+are duplicate global locks.
+
+If the situation arises where more than one sanlock VG contains a global
+lock, the global lock should be manually disabled in all but one of them
+with the command:
+
+lvmlockctl \-\-gl\-disable <vgname>
+
+(The one VG with the global lock enabled must be visible to all hosts.)
+
+An opposite problem can occur if the VG holding the global lock is
+removed.  In this case, no global lock will exist following the vgremove,
+and subsequent LVM commands will fail to acquire it.  In this case, the
+global lock needs to be manually enabled in one of the remaining sanlock
+VGs with the command:
+
+lvmlockctl \-\-gl\-enable <vgname>
+
+A small sanlock VG dedicated to holding the global lock can avoid the case
+where the GL lock must be manually enabled after a vgremove.
+
+
+.SS internal lvmlock LV
+
+A sanlock VG contains a hidden LV called "lvmlock" that holds the sanlock
+locks.  vgreduce cannot yet remove the PV holding the lvmlock LV.  To
+remove this PV, change the VG lock type to "none", run vgreduce, then
+change the VG lock type back to "sanlock".  Similarly, pvmove cannot be
+used on a PV used by the lvmlock LV.
+
+To place the lvmlock LV on a specific device, create the VG with only that
+device, then use vgextend to add other devices.
+
+
+.SS LV activation
+
+In a shared VG, activation changes involve locking through lvmlockd, and
+the following values are possible with lvchange/vgchange -a:
+
+.IP \fBy\fP|\fBey\fP
+The command activates the LV in exclusive mode, allowing a single host
+to activate the LV.  Before activating the LV, the command uses lvmlockd
+to acquire an exclusive lock on the LV.  If the lock cannot be acquired,
+the LV is not activated and an error is reported.  This would happen if
+the LV is active on another host.
+
+.IP \fBsy\fP
+The command activates the LV in shared mode, allowing multiple hosts to
+activate the LV concurrently.  Before activating the LV, the
+command uses lvmlockd to acquire a shared lock on the LV.  If the lock
+cannot be acquired, the LV is not activated and an error is reported.
+This would happen if the LV is active exclusively on another host.  If the
+LV type prohibits shared access, such as a snapshot, the command will
+report an error and fail.
+The shared mode is intended for a multi\-host/cluster application or
+file system.
+LV types that cannot be used concurrently
+from multiple hosts include thin, cache, raid, mirror, and snapshot.
+lvextend on LV with shared locks is not yet allowed.  The LV must be
+deactivated, or activated exclusively to run lvextend.
+
+.IP \fBn\fP
+The command deactivates the LV.  After deactivating the LV, the command
+uses lvmlockd to release the current lock on the LV.
+
+
+.SS recover from lost PV holding sanlock locks
+
+The general approach is to change the VG lock type to "none", and then
+change the lock type back to "sanlock".  This recreates the internal
+lvmlock LV and the necessary locks on it.  Additional steps may be
+required to deal with the missing PV.
+
+
+.SS locking system failures
+
+.B lvmlockd failure
+
+If lvmlockd fails or is killed while holding locks, the locks are orphaned
+in the lock manager.  lvmlockd can be restarted with an option to adopt
+locks in the lock manager that had been held by the previous instance.
+
+.B dlm/corosync failure
+
+If dlm or corosync fail, the clustering system will fence the host using a
+method configured within the dlm/corosync clustering environment.
+
+LVM commands on other hosts will be blocked from acquiring any locks until
+the dlm/corosync recovery process is complete.
+
+.B sanlock lease storage failure
+
+If the PV under a sanlock VG's lvmlock LV is disconnected, unresponsive or
+too slow, sanlock cannot renew the lease for the VG's locks.  After some
+time, the lease will expire, and locks that the host owns in the VG can be
+acquired by other hosts.  The VG must be forcibly deactivated on the host
+with the expiring lease before other hosts can acquire its locks.
+
+When the sanlock daemon detects that the lease storage is lost, it runs
+the command lvmlockctl \-\-kill <vgname>.  This command emits a syslog
+message stating that lease storage is lost for the VG and LVs must be
+immediately deactivated.
+
+If no LVs are active in the VG, then the lockspace with an expiring lease
+will be removed, and errors will be reported when trying to use the VG.
+Use the lvmlockctl \-\-drop command to clear the stale lockspace from
+lvmlockd.
+
+If the VG has active LVs when the lock storage is lost, the LVs must be
+quickly deactivated before the lockspace lease expires.  After all LVs are
+deactivated, run lvmlockctl \-\-drop <vgname> to clear the expiring
+lockspace from lvmlockd.  If all LVs in the VG are not deactivated within
+about 40 seconds, sanlock will reset the host using the local watchdog.
+The machine reset is effectively a severe form of "deactivating" LVs
+before they can be activated on other hosts.  The reset is considered a
+better alternative than having LVs used by multiple hosts at once, which
+could easily damage or destroy their content.
+
+In the future, the lvmlockctl kill command may automatically attempt to
+forcibly deactivate LVs before the sanlock lease expires.  Until then, the
+user must notice the syslog message and manually deactivate the VG before
+sanlock resets the machine.
+
+.B sanlock daemon failure
+
+If the sanlock daemon fails or exits while a lockspace is started, the
+local watchdog will reset the host.  This is necessary to protect any
+application resources that depend on sanlock leases which will be lost
+without sanlock running.
+
+
+.SS changing dlm cluster name
+
+When a dlm VG is created, the cluster name is saved in the VG metadata.
+To use the VG, a host must be in the named dlm cluster.  If the dlm
+cluster name changes, or the VG is moved to a new cluster, the dlm cluster
+name saved in the VG must also be changed.
+
+To see the dlm cluster name saved in the VG, use the command:
+.br
+vgs -o+locktype,lockargs <vgname>
+
+To change the dlm cluster name in the VG when the VG is still used by the
+original cluster:
+
+.IP \[bu] 2
+Stop the VG on all hosts:
+.br
+vgchange --lock-stop <vgname>
+
+.IP \[bu] 2
+Change the VG lock type to none:
+.br
+vgchange \-\-lock\-type none <vgname>
+
+.IP \[bu] 2
+Change the dlm cluster name on the host or move the VG to the new cluster.
+The new dlm cluster must now be active on the host.  Verify the new name
+by:
+.br
+cat /sys/kernel/config/dlm/cluster/cluster_name
+
+.IP \[bu] 2
+Change the VG lock type back to dlm which sets the new cluster name:
+.br
+vgchange \-\-lock\-type dlm <vgname>
+
+.IP \[bu] 2
+Start the VG on hosts to use it:
+.br
+vgchange --lock-start <vgname>
+
+.P
+
+To change the dlm cluster name in the VG when the dlm cluster name has
+already changed, or the VG has already moved to a different cluster:
+
+.IP \[bu] 2
+Ensure the VG is not being used by any hosts.
+
+.IP \[bu] 2
+The new dlm cluster must be active on the host making the change.
+The current dlm cluster name can be seen by:
+.br
+cat /sys/kernel/config/dlm/cluster/cluster_name
+
+.IP \[bu] 2
+Change the VG lock type to none:
+.br
+vgchange \-\-lock\-type none \-\-force <vgname>
+
+.IP \[bu] 2
+Change the VG lock type back to dlm which sets the new cluster name:
+.br
+vgchange \-\-lock\-type dlm <vgname>
+
+.IP \[bu] 2
+Start the VG on hosts to use it:
+.br
+vgchange --lock-start <vgname>
+
+
+.SS changing a local VG to a lockd VG
+
+All LVs must be inactive to change the lock type.
+
+lvmlockd must be configured and running as described in USAGE.
+
+Change a local VG to a lockd VG with the command:
+.br
+vgchange \-\-lock\-type sanlock|dlm <vgname>
+
+Start the VG on hosts to use it:
+.br
+vgchange \-\-lock\-start <vgname>
+
+
+.SS changing a lockd VG to a local VG
+
+Stop the lockd VG on all hosts, then run:
+.br
+vgchange \-\-lock\-type none <vgname>
+
+To change a VG from one lockd type to another (i.e. between sanlock and
+dlm), first change it to a local VG, then to the new type.
+
+
+.SS changing a clvm VG to a lockd VG
+
+All LVs must be inactive to change the lock type.
+
+First change the clvm VG to a local VG.  Within a running clvm cluster,
+change a clvm VG to a local VG with the command:
+
+vgchange \-cn <vgname>
+
+If the clvm cluster is no longer running on any nodes, then extra options
+can be used to forcibly make the VG local.  Caution: this is only safe if
+all nodes have stopped using the VG:
+
+vgchange \-\-config 'global/locking_type=0 global/use_lvmlockd=0'
+.RS
+\-cn <vgname>
+.RE
+
+After the VG is local, follow the steps described in "changing a local VG
+to a lockd VG".
+
+
+.SS limitations of lockd VGs
+
+Things that do not yet work in lockd VGs:
+.br
+\[bu]
+creating a new thin pool and a new thin LV in a single command
+.br
+\[bu]
+using lvcreate to create cache pools or cache LVs (use lvconvert)
+.br
+\[bu]
+using external origins for thin LVs
+.br
+\[bu]
+splitting mirrors and snapshots from LVs
+.br
+\[bu]
+vgsplit
+.br
+\[bu]
+vgmerge
+.br
+\[bu]
+resizing an LV that is active in the shared mode on multiple hosts
+
+
+.SS lvmlockd changes from clvmd
+
+(See above for converting an existing clvm VG to a lockd VG.)
+
+While lvmlockd and clvmd are entirely different systems, LVM command usage
+remains similar.  Differences are more notable when using lvmlockd's
+sanlock option.
+
+Visible usage differences between lockd VGs with lvmlockd and clvm VGs
+with clvmd:
+
+.IP \[bu] 2
+lvm.conf must be configured to use either lvmlockd (use_lvmlockd=1) or
+clvmd (locking_type=3), but not both.
+
+.IP \[bu] 2
+vgcreate \-\-shared creates a lockd VG, and vgcreate \-\-clustered y
+creates a clvm VG.
+
+.IP \[bu] 2
+lvmlockd adds the option of using sanlock for locking, avoiding the
+need for network clustering.
+
+.IP \[bu] 2
+lvmlockd defaults to the exclusive activation mode whenever the activation
+mode is unspecified, i.e. \-ay means \-aey, not \-asy.
+
+.IP \[bu] 2
+lvmlockd commands always apply to the local host, and never have an effect
+on a remote host.  (The activation option 'l' is not used.)
+
+.IP \[bu] 2
+lvmlockd works with thin and cache pools and LVs.
+
+.IP \[bu] 2
+lvmlockd works with lvmetad.
+
+.IP \[bu] 2
+lvmlockd saves the cluster name for a lockd VG using dlm.  Only hosts in
+the matching cluster can use the VG.
+
+.IP \[bu] 2
+lvmlockd requires starting/stopping lockd VGs with vgchange \-\-lock-start
+and \-\-lock-stop.
+
+.IP \[bu] 2
+vgremove of a sanlock VG may fail indicating that all hosts have not
+stopped the VG lockspace.  Stop the VG on all hosts using vgchange
+\-\-lock-stop.
+
+.IP \[bu] 2
+vgreduce or pvmove of a PV in a sanlock VG will fail if it holds the
+internal "lvmlock" LV that holds the sanlock locks.
+
+.IP \[bu] 2
+lvmlockd uses lock retries instead of lock queueing, so high lock
+contention may require increasing global/lvmlockd_lock_retries to
+avoid transient lock failures.
+
+.IP \[bu] 2
+lvmlockd includes VG reporting options lock_type and lock_args, and LV
+reporting option lock_args to view the corresponding metadata fields.
+
+.IP \[bu] 2
+In the 'vgs' command's sixth VG attr field, "s" for "shared" is displayed
+for lockd VGs.
+
+.IP \[bu] 2
+If lvmlockd fails or is killed while in use, locks it held remain but are
+orphaned in the lock manager.  lvmlockd can be restarted with an option to
+adopt the orphan locks from the previous instance of lvmlockd.
+
+.P
diff --git a/man/lvmpolld.8.in b/man/lvmpolld.8.in
deleted file mode 100644
index 00ee1ab..0000000
--- a/man/lvmpolld.8.in
+++ /dev/null
@@ -1,90 +0,0 @@
-.TH LVMPOLLD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
-.SH NAME
-lvmpolld \(em LVM poll daemon
-.SH SYNOPSIS
-.B lvmpolld
-.RB [ \-l | \-\-log
-.RI { all | wire | debug }]
-.RB [ \-p | \-\-pidfile
-.IR pidfile_path ]
-.RB [ \-s | \-\-socket
-.IR socket_path ]
-.RB [ \-B | \-\-binary
-.IR lvm_binary_path ]
-.RB [ \-t | \-\-timeout
-.IR timeout_value ]
-.RB [ \-f | \-\-foreground ]
-.RB [ \-h | \-\-help ]
-.RB [ \-V | \-\-version ]
-
-.B lvmpolld
-.RB [ \-\-dump ]
-.SH DESCRIPTION
-lvmpolld is polling daemon for LVM. The daemon receives requests for polling
-of already initialised operations originating in LVM2 command line tool.
-The requests for polling originate in the \fBlvconvert\fP, \fBpvmove\fP,
-\fBlvchange\fP or \fBvgchange\fP LVM2 commands.
-
-The purpose of lvmpolld is to reduce the number of spawned background processes
-per otherwise unique polling operation. There should be only one. It also
-eliminates the possibility of unsolicited termination of background process by
-external factors.
-
-lvmpolld is used by LVM only if it is enabled in \fBlvm.conf\fP(5) by
-specifying the \fBglobal/use_lvmpolld\fP setting. If this is not defined in the
-LVM configuration explicitly then default setting is used instead (see the
-output of \fBlvmconfig \-\-type default global/use_lvmpolld\fP command).
-.SH OPTIONS
-
-To run the daemon in a test environment both the pidfile_path and the
-socket_path should be changed from the defaults.
-.TP
-.BR \-f ", " \-\-foreground
-Don't fork, but run in the foreground.
-.TP
-.BR \-h ", " \-\-help
-Show help information.
-.TP
-.IR \fB\-l\fP ", " \fB\-\-log\fP " {" all | wire | debug }
-Select the type of log messages to generate.
-Messages are logged by syslog.
-Additionally, when \-f is given they are also sent to standard error.
-There are two classes of messages: wire and debug. Selecting 'all' supplies both
-and is equivalent to a comma-separated list \-l wire,debug.
-.TP
-.BR \-p ", " \-\-pidfile " " \fIpidfile_path
-Path to the pidfile. This overrides both the built-in default
-(#DEFAULT_PID_DIR#/lvmpolld.pid) and the environment variable
-\fBLVM_LVMPOLLD_PIDFILE\fP.  This file is used to prevent more
-than one instance of the daemon running simultaneously.
-.TP
-.BR \-s ", " \-\-socket " " \fIsocket_path
-Path to the socket file. This overrides both the built-in default
-(#DEFAULT_RUN_DIR#/lvmpolld.socket) and the environment variable
-\fBLVM_LVMPOLLD_SOCKET\fP.
-.TP
-.BR \-t ", " \-\-timeout " " \fItimeout_value
-The daemon may shutdown after being idle for the given time (in seconds). When the
-option is omitted or the value given is zero the daemon never shutdowns on idle.
-.TP
-.BR \-B ", " \-\-binary " " \fIlvm_binary_path
-Optional path to alternative LVM binary (default: #LVM_PATH#). Use for
-testing purposes only.
-.TP
-.BR \-V ", " \-\-version
-Display the version of lvmpolld daemon.
-.TP
-.B \-\-dump
-Contact the running lvmpolld daemon to obtain the complete state and print it
-out in a raw format.
-.SH ENVIRONMENT VARIABLES
-.TP
-.B LVM_LVMPOLLD_PIDFILE
-Path for the pid file.
-.TP
-.B LVM_LVMPOLLD_SOCKET
-Path for the socket file.
-
-.SH SEE ALSO
-.BR lvm (8),
-.BR lvm.conf (5)
diff --git a/man/lvmpolld.8_main b/man/lvmpolld.8_main
new file mode 100644
index 0000000..00ee1ab
--- /dev/null
+++ b/man/lvmpolld.8_main
@@ -0,0 +1,90 @@
+.TH LVMPOLLD 8 "LVM TOOLS #VERSION#" "Red Hat Inc" \" -*- nroff -*-
+.SH NAME
+lvmpolld \(em LVM poll daemon
+.SH SYNOPSIS
+.B lvmpolld
+.RB [ \-l | \-\-log
+.RI { all | wire | debug }]
+.RB [ \-p | \-\-pidfile
+.IR pidfile_path ]
+.RB [ \-s | \-\-socket
+.IR socket_path ]
+.RB [ \-B | \-\-binary
+.IR lvm_binary_path ]
+.RB [ \-t | \-\-timeout
+.IR timeout_value ]
+.RB [ \-f | \-\-foreground ]
+.RB [ \-h | \-\-help ]
+.RB [ \-V | \-\-version ]
+
+.B lvmpolld
+.RB [ \-\-dump ]
+.SH DESCRIPTION
+lvmpolld is polling daemon for LVM. The daemon receives requests for polling
+of already initialised operations originating in LVM2 command line tool.
+The requests for polling originate in the \fBlvconvert\fP, \fBpvmove\fP,
+\fBlvchange\fP or \fBvgchange\fP LVM2 commands.
+
+The purpose of lvmpolld is to reduce the number of spawned background processes
+per otherwise unique polling operation. There should be only one. It also
+eliminates the possibility of unsolicited termination of background process by
+external factors.
+
+lvmpolld is used by LVM only if it is enabled in \fBlvm.conf\fP(5) by
+specifying the \fBglobal/use_lvmpolld\fP setting. If this is not defined in the
+LVM configuration explicitly then default setting is used instead (see the
+output of \fBlvmconfig \-\-type default global/use_lvmpolld\fP command).
+.SH OPTIONS
+
+To run the daemon in a test environment both the pidfile_path and the
+socket_path should be changed from the defaults.
+.TP
+.BR \-f ", " \-\-foreground
+Don't fork, but run in the foreground.
+.TP
+.BR \-h ", " \-\-help
+Show help information.
+.TP
+.IR \fB\-l\fP ", " \fB\-\-log\fP " {" all | wire | debug }
+Select the type of log messages to generate.
+Messages are logged by syslog.
+Additionally, when \-f is given they are also sent to standard error.
+There are two classes of messages: wire and debug. Selecting 'all' supplies both
+and is equivalent to a comma-separated list \-l wire,debug.
+.TP
+.BR \-p ", " \-\-pidfile " " \fIpidfile_path
+Path to the pidfile. This overrides both the built-in default
+(#DEFAULT_PID_DIR#/lvmpolld.pid) and the environment variable
+\fBLVM_LVMPOLLD_PIDFILE\fP.  This file is used to prevent more
+than one instance of the daemon running simultaneously.
+.TP
+.BR \-s ", " \-\-socket " " \fIsocket_path
+Path to the socket file. This overrides both the built-in default
+(#DEFAULT_RUN_DIR#/lvmpolld.socket) and the environment variable
+\fBLVM_LVMPOLLD_SOCKET\fP.
+.TP
+.BR \-t ", " \-\-timeout " " \fItimeout_value
+The daemon may shutdown after being idle for the given time (in seconds). When the
+option is omitted or the value given is zero the daemon never shutdowns on idle.
+.TP
+.BR \-B ", " \-\-binary " " \fIlvm_binary_path
+Optional path to alternative LVM binary (default: #LVM_PATH#). Use for
+testing purposes only.
+.TP
+.BR \-V ", " \-\-version
+Display the version of lvmpolld daemon.
+.TP
+.B \-\-dump
+Contact the running lvmpolld daemon to obtain the complete state and print it
+out in a raw format.
+.SH ENVIRONMENT VARIABLES
+.TP
+.B LVM_LVMPOLLD_PIDFILE
+Path for the pid file.
+.TP
+.B LVM_LVMPOLLD_SOCKET
+Path for the socket file.
+
+.SH SEE ALSO
+.BR lvm (8),
+.BR lvm.conf (5)
diff --git a/man/lvmraid.7.in b/man/lvmraid.7.in
deleted file mode 100644
index dc07f2e..0000000
--- a/man/lvmraid.7.in
+++ /dev/null
@@ -1,1711 +0,0 @@
-.TH "LVMRAID" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmraid \(em LVM RAID
-
-.SH DESCRIPTION
-
-LVM RAID is a way to create logical volumes (LVs) that use multiple physical
-devices to improve performance or tolerate device failure.  How blocks of
-data in an LV are placed onto physical devices is determined by the RAID
-level.  RAID levels are commonly referred to by number, e.g. raid1, raid5.
-Selecting a RAID level involves tradeoffs among physical device
-requirements, fault tolerance, and performance.  A description of the RAID
-levels can be found at
-.br
-www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
-
-LVM RAID uses both Device Mapper (DM) and Multiple Device (MD) drivers
-from the Linux kernel.  DM is used to create and manage visible LVM
-devices, and MD is used to place data on physical devices.
-
-LVM creates hidden LVs (dm devices) layered between the visible LV and
-physical devices.  LVs in that middle layers are called sub LVs.
-For LVM raid, a sub LV pair to store data and metadata (raid superblock
-and bitmap) is created per raid image/leg (see lvs command examples below).
-
-.SH Create a RAID LV
-
-To create a RAID LV, use lvcreate and specify an LV type.
-The LV type corresponds to a RAID level.
-The basic RAID levels that can be used are:
-.B raid0, raid1, raid4, raid5, raid6, raid10.
-
-.B lvcreate \-\-type
-.I RaidLevel
-[\fIOPTIONS\fP]
-.B \-\-name
-.I Name
-.B \-\-size
-.I Size
-.I VG
-[\fIPVs\fP]
-
-To display the LV type of an existing LV, run:
-
-.B lvs -o name,segtype
-\fIVG\fP/\fILV\fP
-
-(The LV type is also referred to as "segment type" or "segtype".)
-
-LVs can be created with the following types:
-
-.SS raid0
-
-\&
-
-Also called striping, raid0 spreads LV data across multiple devices in
-units of stripe size.  This is used to increase performance.  LV data will
-be lost if any of the devices fail.
-
-.B lvcreate \-\-type raid0
-[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
-\fIVG\fP
-[\fIPVs\fP]
-
-.HP
-.B \-\-stripes
-specifies the number of devices to spread the LV across.
-
-.HP
-.B \-\-stripesize
-specifies the size of each stripe in kilobytes.  This is the amount of
-data that is written to one device before moving to the next.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-\fINumber\fP devices, one for each stripe.
-
-.SS raid1
-
-\&
-
-Also called mirroring, raid1 uses multiple devices to duplicate LV data.
-The LV data remains available if all but one of the devices fail.
-The minimum number of devices (i.e. sub LV pairs) required is 2.
-
-.B lvcreate \-\-type raid1
-[\fB\-\-mirrors\fP \fINumber\fP]
-\fIVG\fP
-[\fIPVs\fP]
-
-.HP
-.B \-\-mirrors
-specifies the number of mirror images in addition to the original LV
-image, e.g. \-\-mirrors 1 means there are two images of the data, the
-original and one mirror image.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-\fINumber\fP devices, one for each image.
-
-.SS raid4
-
-\&
-
-raid4 is a form of striping that uses an extra, first device dedicated to
-storing parity blocks.  The LV data remains available if one device fails.  The
-parity is used to recalculate data that is lost from a single device.  The
-minimum number of devices required is 3.
-
-.B lvcreate \-\-type raid4
-[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
-\fIVG\fP
-[\fIPVs\fP]
-
-.HP
-.B \-\-stripes
-specifies the number of devices to use for LV data.  This does not include
-the extra device lvm adds for storing parity blocks.  \fINumber\fP stripes
-requires \fINumber\fP+1 devices.  \fINumber\fP must be 2 or more.
-
-.HP
-.B \-\-stripesize
-specifies the size of each stripe in kilobytes.  This is the amount of
-data that is written to one device before moving to the next.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-\fINumber\fP+1 separate devices.
-
-raid4 is called non-rotating parity because the parity blocks are always
-stored on the same device.
-
-.SS raid5
-
-\&
-
-raid5 is a form of striping that uses an extra device for storing parity
-blocks.  LV data and parity blocks are stored on each device, typically in
-a rotating pattern for performance reasons.  The LV data remains available
-if one device fails.  The parity is used to recalculate data that is lost
-from a single device.  The minimum number of devices required is 3.
-
-.B lvcreate \-\-type raid5
-[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
-\fIVG\fP
-[\fIPVs\fP]
-
-.HP
-.B \-\-stripes
-specifies the number of devices to use for LV data.  This does not include
-the extra device lvm adds for storing parity blocks.  \fINumber\fP stripes
-requires \fINumber\fP+1 devices.  \fINumber\fP must be 2 or more.
-
-.HP
-.B \-\-stripesize
-specifies the size of each stripe in kilobytes.  This is the amount of
-data that is written to one device before moving to the next.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-\fINumber\fP+1 separate devices.
-
-raid5 is called rotating parity because the parity blocks are placed on
-different devices in a round-robin sequence.  There are variations of
-raid5 with different algorithms for placing the parity blocks.  The
-default variant is raid5_ls (raid5 left symmetric, which is a rotating
-parity 0 with data restart.)  See \fBRAID5 variants\fP below.
-
-.SS raid6
-
-\&
-
-raid6 is a form of striping like raid5, but uses two extra devices for
-parity blocks.  LV data and parity blocks are stored on each device, typically
-in a rotating pattern for perfomramce reasons.  The
-LV data remains available if up to two devices fail.  The parity is used
-to recalculate data that is lost from one or two devices.  The minimum
-number of devices required is 5.
-
-.B lvcreate \-\-type raid6
-[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
-\fIVG\fP
-[\fIPVs\fP]
-
-.HP
-.B \-\-stripes
-specifies the number of devices to use for LV data.  This does not include
-the extra two devices lvm adds for storing parity blocks.  \fINumber\fP
-stripes requires \fINumber\fP+2 devices.  \fINumber\fP must be 3 or more.
-
-.HP
-.B \-\-stripesize
-specifies the size of each stripe in kilobytes.  This is the amount of
-data that is written to one device before moving to the next.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-\fINumber\fP+2 separate devices.
-
-Like raid5, there are variations of raid6 with different algorithms for
-placing the parity blocks.  The default variant is raid6_zr (raid6 zero
-restart, aka left symmetric, which is a rotating parity 0 with data
-restart.)  See \fBRAID6 variants\fP below.
-
-.SS raid10
-
-\&
-
-raid10 is a combination of raid1 and raid0, striping data across mirrored
-devices.  LV data remains available if one or more devices remains in each
-mirror set.  The minimum number of devices required is 4.
-
-.B lvcreate \-\-type raid10
-.RS
-[\fB\-\-mirrors\fP \fINumberMirrors\fP]
-.br
-[\fB\-\-stripes\fP \fINumberStripes\fP \fB\-\-stripesize\fP \fISize\fP]
-.br
-\fIVG\fP
-[\fIPVs\fP]
-.RE
-
-.HP
-.B \-\-mirrors
-specifies the number of mirror images within each stripe.  e.g.
-\-\-mirrors 1 means there are two images of the data, the original and one
-mirror image.
-
-.HP
-.B \-\-stripes
-specifies the total number of devices to use in all raid1 images (not the
-number of raid1 devices to spread the LV across, even though that is the
-effective result).  The number of devices in each raid1 mirror will be
-NumberStripes/(NumberMirrors+1), e.g. mirrors 1 and stripes 4 will stripe
-data across two raid1 mirrors, where each mirror is devices.
-
-.HP
-.B \-\-stripesize
-specifies the size of each stripe in kilobytes.  This is the amount of
-data that is written to one device before moving to the next.
-.P
-
-\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
-the necessary devices.  Devices are used to create mirrors in the
-order listed, e.g. for mirrors 1, stripes 2, listing PV1 PV2 PV3 PV4
-results in mirrors PV1/PV2 and PV3/PV4.
-
-RAID10 is not mirroring on top of stripes, which would be RAID01, which is
-less tolerant of device failures.
-
-
-.SH Synchronization
-
-Synchronization makes all the devices in a RAID LV consistent with each
-other.
-
-In a RAID1 LV, all mirror images should have the same data.  When a new
-mirror image is added, or a mirror image is missing data, then images need
-to be synchronized.  Data blocks are copied from an existing image to a
-new or outdated image to make them match.
-
-In a RAID 4/5/6 LV, parity blocks and data blocks should match based on
-the parity calculation.  When the devices in a RAID LV change, the data
-and parity blocks can become inconsistent and need to be synchronized.
-Correct blocks are read, parity is calculated, and recalculated blocks are
-written.
-
-The RAID implementation keeps track of which parts of a RAID LV are
-synchronized.  This uses a bitmap saved in the RAID metadata.  The bitmap
-can exclude large parts of the LV from synchronization to reduce the
-amount of work.  Without this, the entire LV would need to be synchronized
-every time it was activated.  When a RAID LV is first created and
-activated the first synchronization is called initialization.
-
-Automatic synchronization happens when a RAID LV is activated, but it is
-usually partial because the bitmaps reduce the areas that are checked.
-A full sync may become necessary when devices in the RAID LV are changed.
-
-The synchronization status of a RAID LV is reported by the
-following command, where "image synced" means sync is complete:
-
-.B lvs -a -o name,sync_percent
-
-
-.SS Scrubbing
-
-Scrubbing is a full scan/synchronization of the RAID LV requested by a user.
-Scrubbing can find problems that are missed by partial synchronization.
-
-Scrubbing assumes that RAID metadata and bitmaps may be inaccurate, so it
-verifies all RAID metadata, LV data, and parity blocks.  Scrubbing can
-find inconsistencies caused by hardware errors or degradation.  These
-kinds of problems may be undetected by automatic synchronization which
-excludes areas outside of the RAID write-intent bitmap.
-
-The command to scrub a RAID LV can operate in two different modes:
-
-.B lvchange \-\-syncaction
-.BR check | repair
-.IR VG / LV
-
-.HP
-.B check
-Check mode is read\-only and only detects inconsistent areas in the RAID
-LV, it does not correct them.
-
-.HP
-.B repair
-Repair mode checks and writes corrected blocks to synchronize any
-inconsistent areas.
-
-.P
-
-Scrubbing can consume a lot of bandwidth and slow down application I/O on
-the RAID LV.  To control the I/O rate used for scrubbing, use:
-
-.HP
-.B \-\-maxrecoveryrate
-.BR \fIRate [ b | B | s | S | k | K | m | M | g | G ]
-.br
-Sets the maximum recovery rate for a RAID LV.  \fIRate\fP is specified as
-an amount per second for each device in the array.  If no suffix is given,
-then KiB/sec/device is assumed.  Setting the recovery rate to \fB0\fP
-means it will be unbounded.
-
-.HP
-.BR \-\-minrecoveryrate
-.BR \fIRate [ b | B | s | S | k | K | m | M | g | G ]
-.br
-Sets the minimum recovery rate for a RAID LV.  \fIRate\fP is specified as
-an amount per second for each device in the array.  If no suffix is given,
-then KiB/sec/device is assumed.  Setting the recovery rate to \fB0\fP
-means it will be unbounded.
-
-.P
-
-To display the current scrubbing in progress on an LV, including
-the syncaction mode and percent complete, run:
-
-.B lvs -a -o name,raid_sync_action,sync_percent
-
-After scrubbing is complete, to display the number of inconsistent blocks
-found, run:
-
-.B lvs -o name,raid_mismatch_count
-
-Also, if mismatches were found, the lvs attr field will display the letter
-"m" (mismatch) in the 9th position, e.g.
-
-.nf
-# lvs -o name,vgname,segtype,attr vg/lvol0
-  LV    VG   Type  Attr
-  lvol0 vg   raid1 Rwi-a-r-m-
-.fi
-
-
-.SS Scrubbing Limitations
-
-The \fBcheck\fP mode can only report the number of inconsistent blocks, it
-cannot report which blocks are inconsistent.  This makes it impossible to
-know which device has errors, or if the errors affect file system data,
-metadata or nothing at all.
-
-The \fBrepair\fP mode can make the RAID LV data consistent, but it does
-not know which data is correct.  The result may be consistent but
-incorrect data.  When two different blocks of data must be made
-consistent, it chooses the block from the device that would be used during
-RAID intialization.  However, if the PV holding corrupt data is known,
-lvchange \-\-rebuild can be used to reconstruct the data on the bad
-device.
-
-Future developments might include:
-
-Allowing a user to choose the correct version of data during repair.
-
-Using a majority of devices to determine the correct version of data to
-use in a three-way RAID1 or RAID6 LV.
-
-Using a checksumming device to pin-point when and where an error occurs,
-allowing it to be rewritten.
-
-
-.SH SubLVs
-
-An LV is often a combination of other hidden LVs called SubLVs.  The
-SubLVs either use physical devices, or are built from other SubLVs
-themselves.  SubLVs hold LV data blocks, RAID parity blocks, and RAID
-metadata.  SubLVs are generally hidden, so the lvs \-a option is required
-display them:
-
-.B lvs -a -o name,segtype,devices
-
-SubLV names begin with the visible LV name, and have an automatic suffix
-indicating its role:
-
-.IP \(bu 3
-SubLVs holding LV data or parity blocks have the suffix _rimage_#.
-These SubLVs are sometimes referred to as DataLVs.
-
-.IP \(bu 3
-SubLVs holding RAID metadata have the suffix _rmeta_#.  RAID metadata
-includes superblock information, RAID type, bitmap, and device health
-information.  These SubLVs are sometimes referred to as MetaLVs.
-
-.P
-
-SubLVs are an internal implementation detail of LVM.  The way they are
-used, constructed and named may change.
-
-The following examples show the SubLV arrangement for each of the basic
-RAID LV types, using the fewest number of devices allowed for each.
-
-.SS Examples
-
-.B raid0
-.br
-Each rimage SubLV holds a portion of LV data.  No parity is used.
-No RAID metadata is used.
-
-.nf
-lvcreate --type raid0 --stripes 2 --name lvr0 ...
-
-lvs -a -o name,segtype,devices
-  lvr0            raid0  lvr0_rimage_0(0),lvr0_rimage_1(0)
-  [lvr0_rimage_0] linear /dev/sda(...)
-  [lvr0_rimage_1] linear /dev/sdb(...)
-.fi
-
-.B raid1
-.br
-Each rimage SubLV holds a complete copy of LV data.  No parity is used.
-Each rmeta SubLV holds RAID metadata.
-
-.nf
-lvcreate --type raid1 --mirrors 1 --name lvr1 ...
-
-lvs -a -o name,segtype,devices
-  lvr1            raid1  lvr1_rimage_0(0),lvr1_rimage_1(0)
-  [lvr1_rimage_0] linear /dev/sda(...)
-  [lvr1_rimage_1] linear /dev/sdb(...)
-  [lvr1_rmeta_0]  linear /dev/sda(...)
-  [lvr1_rmeta_1]  linear /dev/sdb(...)
-.fi
-
-.B raid4
-.br
-Two rimage SubLVs each hold a portion of LV data and one rimage SubLV
-holds parity.  Each rmeta SubLV holds RAID metadata.
-
-.nf
-lvcreate --type raid4 --stripes 2 --name lvr4 ...
-
-lvs -a -o name,segtype,devices
-  lvr4            raid4  lvr4_rimage_0(0),\\
-                         lvr4_rimage_1(0),\\
-                         lvr4_rimage_2(0)
-  [lvr4_rimage_0] linear /dev/sda(...)
-  [lvr4_rimage_1] linear /dev/sdb(...)
-  [lvr4_rimage_2] linear /dev/sdc(...)
-  [lvr4_rmeta_0]  linear /dev/sda(...)
-  [lvr4_rmeta_1]  linear /dev/sdb(...)
-  [lvr4_rmeta_2]  linear /dev/sdc(...)
-.fi
-
-.B raid5
-.br
-Three rimage SubLVs each hold a portion of LV data and parity.
-Each rmeta SubLV holds RAID metadata.
-
-.nf
-lvcreate --type raid5 --stripes 2 --name lvr5 ...
-
-lvs -a -o name,segtype,devices
-  lvr5            raid5  lvr5_rimage_0(0),\\
-                         lvr5_rimage_1(0),\\
-                         lvr5_rimage_2(0)
-  [lvr5_rimage_0] linear /dev/sda(...)
-  [lvr5_rimage_1] linear /dev/sdb(...)
-  [lvr5_rimage_2] linear /dev/sdc(...)
-  [lvr5_rmeta_0]  linear /dev/sda(...)
-  [lvr5_rmeta_1]  linear /dev/sdb(...)
-  [lvr5_rmeta_2]  linear /dev/sdc(...)
-.fi
-
-.B raid6
-.br
-Six rimage SubLVs each hold a portion of LV data and parity.
-Each rmeta SubLV holds RAID metadata.
-
-.nf
-lvcreate --type raid6 --stripes 3 --name lvr6
-
-lvs -a -o name,segtype,devices
-  lvr6            raid6  lvr6_rimage_0(0),\\
-                         lvr6_rimage_1(0),\\
-                         lvr6_rimage_2(0),\\
-                         lvr6_rimage_3(0),\\
-                         lvr6_rimage_4(0),\\
-                         lvr6_rimage_5(0)
-  [lvr6_rimage_0] linear /dev/sda(...)
-  [lvr6_rimage_1] linear /dev/sdb(...)
-  [lvr6_rimage_2] linear /dev/sdc(...)
-  [lvr6_rimage_3] linear /dev/sdd(...)
-  [lvr6_rimage_4] linear /dev/sde(...)
-  [lvr6_rimage_5] linear /dev/sdf(...)
-  [lvr6_rmeta_0]  linear /dev/sda(...)
-  [lvr6_rmeta_1]  linear /dev/sdb(...)
-  [lvr6_rmeta_2]  linear /dev/sdc(...)
-  [lvr6_rmeta_3]  linear /dev/sdd(...)
-  [lvr6_rmeta_4]  linear /dev/sde(...)
-  [lvr6_rmeta_5]  linear /dev/sdf(...)
-
-.B raid10
-.br
-Four rimage SubLVs each hold a portion of LV data.  No parity is used.
-Each rmeta SubLV holds RAID metadata.
-
-.nf
-lvcreate --type raid10 --stripes 2 --mirrors 1 --name lvr10
-
-lvs -a -o name,segtype,devices
-  lvr10            raid10 lvr10_rimage_0(0),\\
-                          lvr10_rimage_1(0),\\
-                          lvr10_rimage_2(0),\\
-                          lvr10_rimage_3(0)
-  [lvr10_rimage_0] linear /dev/sda(...)
-  [lvr10_rimage_1] linear /dev/sdb(...)
-  [lvr10_rimage_2] linear /dev/sdc(...)
-  [lvr10_rimage_3] linear /dev/sdd(...)
-  [lvr10_rmeta_0]  linear /dev/sda(...)
-  [lvr10_rmeta_1]  linear /dev/sdb(...)
-  [lvr10_rmeta_2]  linear /dev/sdc(...)
-  [lvr10_rmeta_3]  linear /dev/sdd(...)
-.fi
-
-
-.SH Device Failure
-
-Physical devices in a RAID LV can fail or be lost for multiple reasons.
-A device could be disconnected, permanently failed, or temporarily
-disconnected.  The purpose of RAID LVs (levels 1 and higher) is to
-continue operating in a degraded mode, without losing LV data, even after
-a device fails.  The number of devices that can fail without the loss of
-LV data depends on the RAID level:
-
-.IP \[bu] 3
-RAID0 (striped) LVs cannot tolerate losing any devices.  LV data will be
-lost if any devices fail.
-
-.IP \[bu] 3
-RAID1 LVs can tolerate losing all but one device without LV data loss.
-
-.IP \[bu] 3
-RAID4 and RAID5 LVs can tolerate losing one device without LV data loss.
-
-.IP \[bu] 3
-RAID6 LVs can tolerate losing two devices without LV data loss.
-
-.IP \[bu] 3
-RAID10 is variable, and depends on which devices are lost.  It can
-tolerate losing all but one device in a single raid1 mirror without
-LV data loss.
-
-.P
-
-If a RAID LV is missing devices, or has other device-related problems, lvs
-reports this in the health_status (and attr) fields:
-
-.B lvs -o name,lv_health_status
-
-.B partial
-.br
-Devices are missing from the LV.  This is also indicated by the letter "p"
-(partial) in the 9th position of the lvs attr field.
-
-.B refresh needed
-.br
-A device was temporarily missing but has returned.  The LV needs to be
-refreshed to use the device again (which will usually require
-partial synchronization).  This is also indicated by the letter "r" (refresh
-needed) in the 9th position of the lvs attr field.  See
-\fBRefreshing an LV\fP.  This could also indicate a problem with the
-device, in which case it should be be replaced, see
-\fBReplacing Devices\fP.
-
-.B mismatches exist
-.br
-See
-.BR Scrubbing .
-
-Most commands will also print a warning if a device is missing, e.g.
-.br
-.nf
-WARNING: Device for PV uItL3Z-wBME-DQy0-... not found or rejected ...
-.fi
-
-This warning will go away if the device returns or is removed from the
-VG (see \fBvgreduce \-\-removemissing\fP).
-
-
-.SS Activating an LV with missing devices
-
-A RAID LV that is missing devices may be activated or not, depending on
-the "activation mode" used in lvchange:
-
-.B lvchange \-ay \-\-activationmode
-.RB { complete | degraded | partial }
-.IR VG / LV
-
-.B complete
-.br
-The LV is only activated if all devices are present.
-
-.B degraded
-.br
-The LV is activated with missing devices if the RAID level can
-tolerate the number of missing devices without LV data loss.
-
-.B partial
-.br
-The LV is always activated, even if portions of the LV data are missing
-because of the missing device(s).  This should only be used to perform
-recovery or repair operations.
-
-.BR lvm.conf (5)
-.B activation/activation_mode
-.br
-controls the activation mode when not specified by the command.
-
-The default value is printed by:
-.nf
-lvmconfig --type default activation/activation_mode
-.fi
-
-.SS Replacing Devices
-
-Devices in a RAID LV can be replaced with other devices in the VG.  When
-replacing devices that are no longer visible on the system, use lvconvert
-\-\-repair.  When replacing devices that are still visible, use lvconvert
-\-\-replace.  The repair command will attempt to restore the same number
-of data LVs that were previously in the LV.  The replace option can be
-repeated to replace multiple PVs.  Replacement devices can be optionally
-listed with either option.
-
-.B lvconvert \-\-repair
-.IR VG / LV
-[\fINewPVs\fP]
-
-.B lvconvert \-\-replace
-\fIOldPV\fP
-.IR VG / LV
-[\fINewPV\fP]
-
-.B lvconvert
-.B \-\-replace
-\fIOldPV1\fP
-.B \-\-replace
-\fIOldPV2\fP
-...
-.IR VG / LV
-[\fINewPVs\fP]
-
-New devices require synchronization with existing devices, see
-.BR Synchronization .
-
-.SS Refreshing an LV
-
-Refreshing a RAID LV clears any transient device failures (device was
-temporarily disconnected) and returns the LV to its fully redundant mode.
-Restoring a device will usually require at least partial synchronization
-(see \fBSynchronization\fP).  Failure to clear a transient failure results
-in the RAID LV operating in degraded mode until it is reactivated.  Use
-the lvchange command to refresh an LV:
-
-.B lvchange \-\-refresh
-.IR VG / LV
-
-.nf
-# lvs -o name,vgname,segtype,attr,size vg
-  LV    VG   Type  Attr       LSize
-  raid1 vg   raid1 Rwi-a-r-r- 100.00g
-
-# lvchange --refresh vg/raid1
-
-# lvs -o name,vgname,segtype,attr,size vg
-  LV    VG   Type  Attr       LSize
-  raid1 vg   raid1 Rwi-a-r--- 100.00g
-.fi
-
-.SS Automatic repair
-
-If a device in a RAID LV fails, device-mapper in the kernel notifies the
-.BR dmeventd (8)
-monitoring process (see \fBMonitoring\fP).
-dmeventd can be configured to automatically respond using:
-
-.BR lvm.conf (5)
-.B activation/raid_fault_policy
-
-Possible settings are:
-
-.B warn
-.br
-A warning is added to the system log indicating that a device has
-failed in the RAID LV.  It is left to the user to repair the LV, e.g.
-replace failed devices.
-
-.B allocate
-.br
-dmeventd automatically attempts to repair the LV using spare devices
-in the VG.  Note that even a transient failure is handled as a permanent
-failure; a new device is allocated and full synchronization is started.
-
-The specific command run by dmeventd to warn or repair is:
-.br
-.B lvconvert \-\-repair \-\-use\-policies
-.IR VG / LV
-
-
-.SS Corrupted Data
-
-Data on a device can be corrupted due to hardware errors, without the
-device ever being disconnected, and without any fault in the software.
-This should be rare, and can be detected (see \fBScrubbing\fP).
-
-
-.SS Rebuild specific PVs
-
-If specific PVs in a RAID LV are known to have corrupt data, the data on
-those PVs can be reconstructed with:
-
-.B lvchange \-\-rebuild PV
-.IR VG / LV
-
-The rebuild option can be repeated with different PVs to replace the data
-on multiple PVs.
-
-
-.SH Monitoring
-
-When a RAID LV is activated the \fBdmeventd\fP(8) process is started to
-monitor the health of the LV.  Various events detected in the kernel can
-cause a notification to be sent from device-mapper to the monitoring
-process, including device failures and synchronization completion (e.g.
-for initialization or scrubbing).
-
-The LVM configuration file contains options that affect how the monitoring
-process will respond to failure events (e.g. raid_fault_policy).  It is
-possible to turn on and off monitoring with lvchange, but it is not
-recommended to turn this off unless you have a thorough knowledge of the
-consequences.
-
-
-.SH Configuration Options
-
-There are a number of options in the LVM configuration file that affect
-the behavior of RAID LVs.  The tunable options are listed
-below.  A detailed description of each can be found in the LVM
-configuration file itself.
-.br
-        mirror_segtype_default
-.br
-        raid10_segtype_default
-.br
-        raid_region_size
-.br
-        raid_fault_policy
-.br
-        activation_mode
-
-
-.SH RAID1 Tuning
-
-A RAID1 LV can be tuned so that certain devices are avoided for reading
-while all devices are still written to.
-
-.B lvchange
-.BR \-\- [ raid ] writemostly
-.BR \fIPhysicalVolume [ : { y | n | t }]
-.IR VG / LV
-
-The specified device will be marked as "write mostly", which means that
-reading from this device will be avoided, and other devices will be
-preferred for reading (unless no other devices are available.)  This
-minimizes the I/O to the specified device.
-
-If the PV name has no suffix, the write mostly attribute is set.  If the
-PV name has the suffix \fB:n\fP, the write mostly attribute is cleared,
-and the suffix \fB:t\fP toggles the current setting.
-
-The write mostly option can be repeated on the command line to change
-multiple devices at once.
-
-To report the current write mostly setting, the lvs attr field will show
-the letter "w" in the 9th position when write mostly is set:
-
-.B lvs -a -o name,attr
-
-When a device is marked write mostly, the maximum number of outstanding
-writes to that device can be configured.  Once the maximum is reached,
-further writes become synchronous.  When synchronous, a write to the LV
-will not complete until writes to all the mirror images are complete.
-
-.B lvchange
-.BR \-\- [ raid ] writebehind
-.IR IOCount
-.IR VG / LV
-
-To report the current write behind setting, run:
-
-.B lvs -o name,raid_write_behind
-
-When write behind is not configured, or set to 0, all LV writes are
-synchronous.
-
-
-.SH RAID Takeover
-
-RAID takeover is converting a RAID LV from one RAID level to another, e.g.
-raid5 to raid6.  Changing the RAID level is usually done to increase or
-decrease resilience to device failures.  This is done using lvconvert and
-specifying the new RAID level as the LV type:
-
-.B lvconvert --type
-.I RaidLevel
-\fIVG\fP/\fILV\fP
-[\fIPVs\fP]
-
-The most common and recommended RAID takeover conversions are:
-
-.HP
-\fBlinear\fP to \fBraid1\fP
-.br
-Linear is a single image of LV data, and
-converting it to raid1 adds a mirror image which is a direct copy of the
-original linear image.
-
-.HP
-\fBstriped\fP/\fBraid0\fP to \fBraid4/5/6\fP
-.br
-Adding parity devices to a
-striped volume results in raid4/5/6.
-
-.P
-
-Unnatural conversions that are not recommended include converting between
-striped and non-striped types.  This is because file systems often
-optimize I/O patterns based on device striping values.  If those values
-change, it can decrease performance.
-
-Converting to a higher RAID level requires allocating new SubLVs to hold
-RAID metadata, and new SubLVs to hold parity blocks for LV data.
-Converting to a lower RAID level removes the SubLVs that are no longer
-needed.
-
-Conversion often requires full synchronization of the RAID LV (see
-\fBSynchronization\fP).  Converting to RAID1 requires copying all LV data
-blocks to a new image on a new device.  Converting to a parity RAID level
-requires reading all LV data blocks, calculating parity, and writing the
-new parity blocks.  Synchronization can take a long time and degrade
-performance (rate controls also apply to conversion, see
-\fB\-\-maxrecoveryrate\fP.)
-
-Warning: though it is possible to create \fBstriped\fP LVs  with up to 128 stripes,
-a maximum of 64 stripes can be converted to \fBraid0\fP, 63 to \fBraid4/5\fP and
-62 to \fBraid6\fP because of the added parity SubLVs.
-A \fBstriped\fP LV with a maximum of 32 stripes can be converted to \fBraid10\fP.
-
-.P
-
-The following takeover conversions are currently possible:
-.br
-.IP \(bu 3
-between striped and raid0.
-.IP \(bu 3
-between linear and raid1.
-.IP \(bu 3
-between mirror and raid1.
-.IP \(bu 3
-between 2-legged raid1 and raid4/5.
-.IP \(bu 3
-between striped/raid0 and raid4.
-.IP \(bu 3
-between striped/raid0 and raid5.
-.IP \(bu 3
-between striped/raid0 and raid6.
-.IP \(bu 3
-between raid4 and raid5.
-.IP \(bu 3
-between raid4/raid5 and raid6.
-.IP \(bu 3
-between striped/raid0 and raid10.
-
-.SS Examples
-
-1. Converting an LV from \fBlinear\fP to \fBraid1\fP.
-
-.nf
-# lvs -a -o name,segtype,size vg
-  LV   Type   LSize
-  lv   linear 300.00g
-
-# lvconvert --type raid1 --mirrors 1 vg/lv
-
-# lvs -a -o name,segtype,size vg
-  LV            Type   LSize
-  lv            raid1  300.00g
-  [lv_rimage_0] linear 300.00g
-  [lv_rimage_1] linear 300.00g
-  [lv_rmeta_0]  linear   3.00m
-  [lv_rmeta_1]  linear   3.00m
-.fi
-
-2. Converting an LV from \fBmirror\fP to \fBraid1\fP.
-
-.nf
-# lvs -a -o name,segtype,size vg
-  LV            Type   LSize
-  lv            mirror 100.00g
-  [lv_mimage_0] linear 100.00g
-  [lv_mimage_1] linear 100.00g
-  [lv_mlog]     linear   3.00m
-.IP \(bu 3
-between striped and raid4.
-
-.SS Examples
-
-1. Converting an LV from \fBlinear\fP to \fBraid1\fP.
-
-.nf
-# lvs -a -o name,segtype,size vg
-  LV   Type   LSize
-  lv   linear 300.00g
-
-# lvconvert --type raid1 --mirrors 1 vg/lv
-
-# lvs -a -o name,segtype,size vg
-  LV            Type   LSize
-  lv            raid1  300.00g
-  [lv_rimage_0] linear 300.00g
-  [lv_rimage_1] linear 300.00g
-  [lv_rmeta_0]  linear   3.00m
-  [lv_rmeta_1]  linear   3.00m
-.fi
-
-2. Converting an LV from \fBmirror\fP to \fBraid1\fP.
-
-.nf
-# lvs -a -o name,segtype,size vg
-  LV            Type   LSize
-  lv            mirror 100.00g
-  [lv_mimage_0] linear 100.00g
-  [lv_mimage_1] linear 100.00g
-  [lv_mlog]     linear   3.00m
-
-# lvconvert --type raid1 vg/lv
-
-# lvs -a -o name,segtype,size vg
-  LV            Type   LSize
-  lv            raid1  100.00g
-  [lv_rimage_0] linear 100.00g
-  [lv_rimage_1] linear 100.00g
-  [lv_rmeta_0]  linear   3.00m
-  [lv_rmeta_1]  linear   3.00m
-.fi
-
-3. Converting an LV from \fBlinear\fP to \fBraid1\fP (with 3 images).
-
-.nf
-Start with a linear LV:
-
-# lvcreate -L1G -n lv vg
-
-Convert the linear LV to raid1 with three images
-(original linear image plus 2 mirror images):
-
-# lvconvert --type raid1 --mirrors 2 vg/lv
-.fi
-
-4. Converting an LV from \fBstriped\fP (with 4 stripes) to \fBraid6_nc\fP.
-
-.nf
-Start with a striped LV:
-
-# lvcreate --stripes 4 -L64M -n lv vg
-
-Convert the striped LV to raid6_n_6:
-
-# lvconvert --type raid6 vg/lv
-
-# lvs -a -o lv_name,segtype,sync_percent,data_copies
-  LV            Type      Cpy%Sync #Cpy
-  lv            raid6_n_6 100.00      3
-  [lv_rimage_0] linear
-  [lv_rimage_1] linear
-  [lv_rimage_2] linear
-  [lv_rimage_3] linear
-  [lv_rimage_4] linear
-  [lv_rimage_5] linear
-  [lv_rmeta_0]  linear
-  [lv_rmeta_1]  linear
-  [lv_rmeta_2]  linear
-  [lv_rmeta_3]  linear
-  [lv_rmeta_4]  linear
-  [lv_rmeta_5]  linear
-.fi
-
-This convert begins by allocating MetaLVs (rmeta_#) for each of the
-existing stripe devices.  It then creates 2 additional MetaLV/DataLV pairs
-(rmeta_#/rimage_#) for dedicated raid6 parity.
-
-If rotating data/parity is required, such as with raid6_nr, it must be
-done by reshaping (see below).
-
-
-.SH RAID Reshaping
-
-RAID reshaping is changing attributes of a RAID LV while keeping the same
-RAID level.  This includes changing RAID layout, stripe size, or number of
-stripes.
-
-When changing the RAID layout or stripe size, no new SubLVs (MetaLVs or
-DataLVs) need to be allocated, but DataLVs are extended by a small amount
-(typically 1 extent).  The extra space allows blocks in a stripe to be
-updated safely, and not corrupted in case of a crash.  If a crash occurs,
-reshaping can just be restarted.
-
-(If blocks in a stripe were updated in place, a crash could leave them
-partially updated and corrupted.  Instead, an existing stripe is quiesced,
-read, changed in layout, and the new stripe written to free space.  Once
-that is done, the new stripe is unquiesced and used.)
-
-.SS Examples
-
-1. Converting raid6_n_6 to raid6_nr with rotating data/parity.
-
-This conversion naturally follows a previous conversion from striped/raid0
-to raid6_n_6 (shown above).  It completes the transition to a more
-traditional RAID6.
-
-.nf
-# lvs -o lv_name,segtype,sync_percent,data_copies
-  LV            Type      Cpy%Sync #Cpy
-  lv            raid6_n_6 100.00      3
-  [lv_rimage_0] linear
-  [lv_rimage_1] linear
-  [lv_rimage_2] linear
-  [lv_rimage_3] linear
-  [lv_rimage_4] linear
-  [lv_rimage_5] linear
-  [lv_rmeta_0]  linear
-  [lv_rmeta_1]  linear
-  [lv_rmeta_2]  linear
-  [lv_rmeta_3]  linear
-  [lv_rmeta_4]  linear
-  [lv_rmeta_5]  linear
-
-# lvconvert --type raid6_nr vg/lv
-
-# lvs -a -o lv_name,segtype,sync_percent,data_copies
-  LV            Type     Cpy%Sync #Cpy
-  lv            raid6_nr 100.00      3
-  [lv_rimage_0] linear
-  [lv_rimage_0] linear
-  [lv_rimage_1] linear
-  [lv_rimage_1] linear
-  [lv_rimage_2] linear
-  [lv_rimage_2] linear
-  [lv_rimage_3] linear
-  [lv_rimage_3] linear
-  [lv_rimage_4] linear
-  [lv_rimage_5] linear
-  [lv_rmeta_0]  linear
-  [lv_rmeta_1]  linear
-  [lv_rmeta_2]  linear
-  [lv_rmeta_3]  linear
-  [lv_rmeta_4]  linear
-  [lv_rmeta_5]  linear
-.fi
-
-The DataLVs are larger (additional segment in each) which provides space
-for out-of-place reshaping.  The result is:
-
-.nf
-# lvs -a -o lv_name,segtype,seg_pe_ranges,dataoffset
-  LV            Type     PE Ranges          DOff
-  lv            raid6_nr lv_rimage_0:0-32 \\
-                         lv_rimage_1:0-32 \\
-                         lv_rimage_2:0-32 \\
-                         lv_rimage_3:0-32
-  [lv_rimage_0] linear   /dev/sda:0-31      2048
-  [lv_rimage_0] linear   /dev/sda:33-33
-  [lv_rimage_1] linear   /dev/sdaa:0-31     2048
-  [lv_rimage_1] linear   /dev/sdaa:33-33
-  [lv_rimage_2] linear   /dev/sdab:1-33     2048
-  [lv_rimage_3] linear   /dev/sdac:1-33     2048
-  [lv_rmeta_0]  linear   /dev/sda:32-32
-  [lv_rmeta_1]  linear   /dev/sdaa:32-32
-  [lv_rmeta_2]  linear   /dev/sdab:0-0
-  [lv_rmeta_3]  linear   /dev/sdac:0-0
-.fi
-
-All segments with PE ranges '33-33' provide the out-of-place reshape space.
-The dataoffset column shows that the data was moved from initial offset 0 to
-2048 sectors on each component DataLV.
-
-For performance reasons the raid6_nr RaidLV can be restriped.
-Convert it from 3-way striped to 5-way-striped.
-
-.nf
-# lvconvert --stripes 5 -y tb/lv
-  Using default stripesize 64.00 KiB.
-  WARNING: Adding stripes to active logical volume tb/lv will grow it from 99 to 165 extents!
-  Run "lvresize -l99 tb/lv" to shrink it or use the additional capacity.
-  Logical volume tb/lv successfully converted.
-
-# lvs
-  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
-  root fedora -wi-ao----  15.00g
-  swap fedora -wi-ao----   3.99g
-  lv   tb     rwi-a-r-s- 652.00m                                    52.94
-
-# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV            Attr       Type     PE Ranges                                                                                   DOff
-  lv            rwi-a-r--- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33    0
-  [lv_rimage_0] iwi-aor--- linear   /dev/sda:0-32                                                                               0
-  [lv_rimage_0] iwi-aor--- linear   /dev/sda:34-34
-  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:0-32                                                                              0
-  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:34-34
-  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:0-32                                                                              0
-  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:34-34
-  [lv_rimage_3] iwi-aor--- linear   /dev/sdac:1-34                                                                              0
-  [lv_rimage_4] iwi-aor--- linear   /dev/sdad:1-34                                                                              0
-  [lv_rimage_5] iwi-aor--- linear   /dev/sdae:1-34                                                                              0
-  [lv_rimage_6] iwi-aor--- linear   /dev/sdaf:1-34                                                                              0
-  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
-  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
-  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
-  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
-  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
-  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
-  [lv_rmeta_6]  ewi-aor--- linear   /dev/sdaf:0-0
-.fi
-
-Stripes also can be removed from raid5 and 6.
-Convert the 5-way striped raid6_nr LV to 4-way-striped.
-The force option needs to be used, because removing stripes
-(i.e. image SubLVs) from a RaidLV will shrink its size.
-
-.nf
-# lvconvert --stripes 4 --force -y tb/lv
-  Using default stripesize 64.00 KiB.
-  WARNING: Removing stripes from active logical volume tb/lv will shrink it from 660.00 MiB to 528.00 MiB!
-  THIS MAY DESTROY (PARTS OF) YOUR DATA!
-  If that leaves the logical volume larger than 206 extents due to stripe rounding,
-  you may want to grow the content afterwards (filesystem etc.)
-  WARNING: too remove freed stripes after the conversion has finished, you have to run "lvconvert --stripes 4 tb/lv"
-  Logical volume tb/lv successfully converted.
-
-# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV            Attr       Type     PE Ranges                                                                                   DOff
-  lv            rwi-a-r-s- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33    0
-  [lv_rimage_0] Iwi-aor--- linear   /dev/sda:0-32                                                                               0
-  [lv_rimage_0] Iwi-aor--- linear   /dev/sda:34-34
-  [lv_rimage_1] Iwi-aor--- linear   /dev/sdaa:0-32                                                                              0
-  [lv_rimage_1] Iwi-aor--- linear   /dev/sdaa:34-34
-  [lv_rimage_2] Iwi-aor--- linear   /dev/sdab:0-32                                                                              0
-  [lv_rimage_2] Iwi-aor--- linear   /dev/sdab:34-34
-  [lv_rimage_3] Iwi-aor--- linear   /dev/sdac:1-34                                                                              0
-  [lv_rimage_4] Iwi-aor--- linear   /dev/sdad:1-34                                                                              0
-  [lv_rimage_5] Iwi-aor--- linear   /dev/sdae:1-34                                                                              0
-  [lv_rimage_6] Iwi-aor-R- linear   /dev/sdaf:1-34                                                                              0
-  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
-  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
-  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
-  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
-  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
-  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
-  [lv_rmeta_6]  ewi-aor-R- linear   /dev/sdaf:0-0
-.fi
-
-The 's' in column 9 of the attribute field shows the RaidLV is still reshaping.
-The 'R' in the same column of the attribute field shows the freed image Sub LVs which will need removing once the reshaping finished.
-
-.nf
-# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV   Attr       Type     PE Ranges                                                                                DOff
-  lv   rwi-a-r-R- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33 8192
-.fi
-
-Now that the reshape is finished the 'R' atribute on the RaidLV shows images can be removed.
-
-.nf
-# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV   Attr       Type     PE Ranges                                                                                 DOff
-  lv   rwi-a-r-R- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ...  lv_rimage_5:0-33 lv_rimage_6:0-33 8192
-.fi
-
-This is achieved by repeating the command ("lvconvert --stripes 4 tb/lv" would be sufficient).
-
-.nf
-# lvconvert --stripes 4 --force -y tb/lv
-  Using default stripesize 64.00 KiB.
-  Logical volume tb/lv successfully converted.
-
-# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV            Attr       Type     PE Ranges                                                               DOff
-  lv            rwi-a-r--- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 8192
-  [lv_rimage_0] iwi-aor--- linear   /dev/sda:0-32                                                           8192
-  [lv_rimage_0] iwi-aor--- linear   /dev/sda:34-34
-  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:0-32                                                          8192
-  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:34-34
-  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:0-32                                                          8192
-  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:34-34
-  [lv_rimage_3] iwi-aor--- linear   /dev/sdac:1-34                                                          8192
-  [lv_rimage_4] iwi-aor--- linear   /dev/sdad:1-34                                                          8192
-  [lv_rimage_5] iwi-aor--- linear   /dev/sdae:1-34                                                          8192
-  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
-  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
-  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
-  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
-  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
-  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
-
-# lvs -a -o lv_name,attr,segtype,reshapelen tb
-  LV            Attr       Type     RSize
-  lv            rwi-a-r--- raid6_nr 24.00m
-  [lv_rimage_0] iwi-aor--- linear    4.00m
-  [lv_rimage_0] iwi-aor--- linear
-  [lv_rimage_1] iwi-aor--- linear    4.00m
-  [lv_rimage_1] iwi-aor--- linear
-  [lv_rimage_2] iwi-aor--- linear    4.00m
-  [lv_rimage_2] iwi-aor--- linear
-  [lv_rimage_3] iwi-aor--- linear    4.00m
-  [lv_rimage_4] iwi-aor--- linear    4.00m
-  [lv_rimage_5] iwi-aor--- linear    4.00m
-  [lv_rmeta_0]  ewi-aor--- linear
-  [lv_rmeta_1]  ewi-aor--- linear
-  [lv_rmeta_2]  ewi-aor--- linear
-  [lv_rmeta_3]  ewi-aor--- linear
-  [lv_rmeta_4]  ewi-aor--- linear
-  [lv_rmeta_5]  ewi-aor--- linear
-.fi
-
-If the reshape space shall be removed any lvconvert command not changing the layout can be used:
-
-.nf
-# lvconvert --stripes 4 tb/lv
-  Using default stripesize 64.00 KiB.
-  No change in RAID LV tb/lv layout, freeing reshape space.
-  Logical volume tb/lv successfully converted.
-
-# lvs -a -o lv_name,attr,segtype,reshapelen tb
-  LV            Attr       Type     RSize
-  lv            rwi-a-r--- raid6_nr    0
-  [lv_rimage_0] iwi-aor--- linear      0
-  [lv_rimage_0] iwi-aor--- linear
-  [lv_rimage_1] iwi-aor--- linear      0
-  [lv_rimage_1] iwi-aor--- linear
-  [lv_rimage_2] iwi-aor--- linear      0
-  [lv_rimage_2] iwi-aor--- linear
-  [lv_rimage_3] iwi-aor--- linear      0
-  [lv_rimage_4] iwi-aor--- linear      0
-  [lv_rimage_5] iwi-aor--- linear      0
-  [lv_rmeta_0]  ewi-aor--- linear
-  [lv_rmeta_1]  ewi-aor--- linear
-  [lv_rmeta_2]  ewi-aor--- linear
-  [lv_rmeta_3]  ewi-aor--- linear
-  [lv_rmeta_4]  ewi-aor--- linear
-  [lv_rmeta_5]  ewi-aor--- linear
-.fi
-
-In case the RaidLV should be converted to striped:
-
-.nf
-# lvconvert --type striped tb/lv
-  Unable to convert LV tb/lv from raid6_nr to striped.
-  Converting tb/lv from raid6_nr is directly possible to the following layouts:
-    raid6_nc
-    raid6_zr
-    raid6_la_6
-    raid6_ls_6
-    raid6_ra_6
-    raid6_rs_6
-    raid6_n_6
-
-# lvconvert --type raid6_n_6
-  Using default stripesize 64.00 KiB.
-  Converting raid6_nr LV tb/lv to raid6_n_6.
-Are you sure you want to convert raid6_nr LV tb/lv? [y/n]: y
-  Logical volume tb/lv successfully converted.
-
-# lvconvert -y --type striped tb/lv
-  Logical volume tb/lv successfully converted.
-
-[root at vm46 ~]# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV   Attr       Type    PE Ranges                                                      DOff
-  lv   -wi-a----- striped /dev/sda:2-32 /dev/sdaa:2-32 /dev/sdab:2-32 /dev/sdac:3-33
-  lv   -wi-a----- striped /dev/sda:34-35 /dev/sdaa:34-35 /dev/sdab:34-35 /dev/sdac:34-35
-.fi
-
-From striped we can convert to raid10
-
-.nf
-# lvconvert -y --type raid10 tb/lv
-  Using default stripesize 64.00 KiB.
-  Logical volume tb/lv successfully converted.
-
-# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  LV   Attr       Type   PE Ranges                                                                                   DOff
-  lv   rwi-a-r--- raid10 lv_rimage_0:0-32 lv_rimage_4:0-32 lv_rimage_1:0-32 ... lv_rimage_3:0-32 lv_rimage_7:0-32    0
-
-# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
-  WARNING: Cannot find matching striped segment for tb/lv_rimage_3.
-  LV            Attr       Type   PE Ranges                                                                                   DOff
-  lv            rwi-a-r--- raid10 lv_rimage_0:0-32 lv_rimage_4:0-32 lv_rimage_1:0-32 ... lv_rimage_3:0-32 lv_rimage_7:0-32    0
-  [lv_rimage_0] iwi-aor--- linear /dev/sda:2-32                                                                                                                              0
-  [lv_rimage_0] iwi-aor--- linear /dev/sda:34-35
-  [lv_rimage_1] iwi-aor--- linear /dev/sdaa:2-32                                                                                                                             0
-  [lv_rimage_1] iwi-aor--- linear /dev/sdaa:34-35
-  [lv_rimage_2] iwi-aor--- linear /dev/sdab:2-32                                                                                                                             0
-  [lv_rimage_2] iwi-aor--- linear /dev/sdab:34-35
-  [lv_rimage_3] iwi-XXr--- linear /dev/sdac:3-35                                                                                                                             0
-  [lv_rimage_4] iwi-aor--- linear /dev/sdad:1-33                                                                                                                             0
-  [lv_rimage_5] iwi-aor--- linear /dev/sdae:1-33                                                                                                                             0
-  [lv_rimage_6] iwi-aor--- linear /dev/sdaf:1-33                                                                                                                             0
-  [lv_rimage_7] iwi-aor--- linear /dev/sdag:1-33                                                                                                                             0
-  [lv_rmeta_0]  ewi-aor--- linear /dev/sda:0-0
-  [lv_rmeta_1]  ewi-aor--- linear /dev/sdaa:0-0
-  [lv_rmeta_2]  ewi-aor--- linear /dev/sdab:0-0
-  [lv_rmeta_3]  ewi-aor--- linear /dev/sdac:0-0
-  [lv_rmeta_4]  ewi-aor--- linear /dev/sdad:0-0
-  [lv_rmeta_5]  ewi-aor--- linear /dev/sdae:0-0
-  [lv_rmeta_6]  ewi-aor--- linear /dev/sdaf:0-0
-  [lv_rmeta_7]  ewi-aor--- linear /dev/sdag:0-0
-.fi
-
-raid10 allows to add stripes but can't remove them.
-
-
-A more elaborate example to convert from linear to striped
-with interim conversions to raid1 then raid5 followed
-by restripe (4 steps).
-
-We start with the linear LV.
-
-.nf
-# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
-  LV   Attr       LSize   Type   Cpy%Sync #DStr Stripe RSize Devices
-  lv   -wi-a----- 128.00m linear              1     0        /dev/sda(0)
-.fi
-
-Then convert it to a 2-way raid1.
-
-.nf
-# lvconvert -m1 vg/lv
-  Logical volume vg/lv successfully converted.
-
-# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
-  LV            Attr       LSize   Type   Cpy%Sync #DStr Stripe RSize Devices
-  lv            rwi-a-r--- 128.00m raid1  100.00       2     0        lv_rimage_0(0),lv_rimage_1(0)
-  [lv_rimage_0] iwi-aor--- 128.00m linear              1     0        /dev/sda(0)
-  [lv_rimage_1] iwi-aor--- 128.00m linear              1     0        /dev/sdhx(1)
-  [lv_rmeta_0]  ewi-aor---   4.00m linear              1     0        /dev/sda(32)
-  [lv_rmeta_1]  ewi-aor---   4.00m linear              1     0        /dev/sdhx(0)
-.fi
-
-Once the raid1 LV is fully synchronized we convert it to raid5_n (only 2-way raid1
-LVs can be converted to raid5).  We select raid5_n here because it has dedicated parity
-SubLVs at the end and can be converted to striped directly without any additional
-conversion.
-
-.nf
-# lvconvert -y --ty raid5_n vg/lv
-  Using default stripesize 64.00 KiB.
-  Logical volume vg/lv successfully converted.
-
-# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
-  LV            Attr       LSize   Type    Cpy%Sync #DStr Stripe RSize Devices
-  lv            rwi-a-r--- 128.00m raid5_n 100.00       1 64.00k     0 lv_rimage_0(0),lv_rimage_1(0)
-  [lv_rimage_0] iwi-aor--- 128.00m linear               1     0      0 /dev/sda(0)
-  [lv_rimage_1] iwi-aor--- 128.00m linear               1     0      0 /dev/sdhx(1)
-  [lv_rmeta_0]  ewi-aor---   4.00m linear               1     0        /dev/sda(32)
-  [lv_rmeta_1]  ewi-aor---   4.00m linear               1     0        /dev/sdhx(0)
-.fi
-
-Now we'll change the number of data stripes from 1 to 5 and request 128K stripe size
-in one command.  This will grow the size of the LV by a factor of 5 (we add 4 data stripes
-to the one given).  That additonal space can be used by e.g. growing any contained filesystem
-or the LV can be reduced in size after the reshaping conversion has finished.
-
-.nf
-# lvconvert --yes --stripesize 128k --stripes 5 vg/lv
-  Converting stripesize 64.00 KiB of raid5_n LV vg/lv to 128.00 KiB.
-  WARNING: Adding stripes to active logical volume vg/lv will grow it from 32 to 160 extents!
-  Run "lvresize -l32 vg/lv" to shrink it or use the additional capacity.
-  Logical volume vg/lv successfully converted.
-
-# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
-  LV            Attr       LSize   Type    Cpy%Sync #DStr Stripe  RSize Devices
-  lv            rwi-a-r--- 640.00m raid5_n 100.00       5 128.00k     6 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0),lv_rimage_3(0),lv_rimage_4(0),lv_rimage_5(0)
-  [lv_rimage_0] iwi-aor--- 132.00m linear               1      0      1 /dev/sda(33)
-  [lv_rimage_0] iwi-aor--- 132.00m linear               1      0        /dev/sda(0)
-  [lv_rimage_1] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhx(33)
-  [lv_rimage_1] iwi-aor--- 132.00m linear               1      0        /dev/sdhx(1)
-  [lv_rimage_2] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhw(33)
-  [lv_rimage_2] iwi-aor--- 132.00m linear               1      0        /dev/sdhw(1)
-  [lv_rimage_3] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhv(33)
-  [lv_rimage_3] iwi-aor--- 132.00m linear               1      0        /dev/sdhv(1)
-  [lv_rimage_4] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhu(33)
-  [lv_rimage_4] iwi-aor--- 132.00m linear               1      0        /dev/sdhu(1)
-  [lv_rimage_5] iwi-aor--- 132.00m linear               1      0      1 /dev/sdht(33)
-  [lv_rimage_5] iwi-aor--- 132.00m linear               1      0        /dev/sdht(1)
-  [lv_rmeta_0]  ewi-aor---   4.00m linear               1      0        /dev/sda(32)
-  [lv_rmeta_1]  ewi-aor---   4.00m linear               1      0        /dev/sdhx(0)
-  [lv_rmeta_2]  ewi-aor---   4.00m linear               1      0        /dev/sdhw(0)
-  [lv_rmeta_3]  ewi-aor---   4.00m linear               1      0        /dev/sdhv(0)
-  [lv_rmeta_4]  ewi-aor---   4.00m linear               1      0        /dev/sdhu(0)
-  [lv_rmeta_5]  ewi-aor---   4.00m linear               1      0        /dev/sdht(0)
-.fi
-
-Once the conversion has finished we can can convert to striped.
-
-.nf
-[root at vm46 ~]# lvconvert -y --ty striped vg/lv
-  Logical volume vg/lv successfully converted.
-
-[root at vm46 ~]# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg|sed 's/  *$//'
-  LV   Attr       LSize   Type    Cpy%Sync #DStr Stripe  RSize Devices
-  lv   -wi-a----- 640.00m striped              5 128.00k       /dev/sda(33),/dev/sdhx(33),/dev/sdhw(33),/dev/sdhv(33),/dev/sdhu(33)
-  lv   -wi-a----- 640.00m striped              5 128.00k       /dev/sda(0),/dev/sdhx(1),/dev/sdhw(1),/dev/sdhv(1),/dev/sdhu(1)
-.fi
-
-Reversing these steps wil convert a given striped LV to linear.
-
-Mind the fact that stripes are removed thus the capacity of the RaidLV will shrink.
-
-"lvconvert --stripes 1 vg/lv" for converting to 1 stripe will inform upfront about
-the reduced size to allow for resizing the content or growing the RaidLV before
-actually converting to 1 stripe.  The \fB\-\-force\fP option is needed to
-allow stripe removing conversions to prevent data loss.
-
-Of course any interim step can be the intended last one (e.g. striped -> raid1).
-..
-
-.SH RAID5 Variants
-
-raid5_ls
-.br
-\[bu]
-RAID5 left symmetric
-.br
-\[bu]
-Rotating parity N with data restart
-
-raid5_la
-.br
-\[bu]
-RAID5 left symmetric
-.br
-\[bu]
-Rotating parity N with data continuation
-
-raid5_rs
-.br
-\[bu]
-RAID5 right symmetric
-.br
-\[bu]
-Rotating parity 0 with data restart
-
-raid5_ra
-.br
-\[bu]
-RAID5 right asymmetric
-.br
-\[bu]
-Rotating parity 0 with data continuation
-
-raid5_n
-.br
-\[bu]
-RAID5 parity n
-.br
-\[bu]
-Dedicated parity device n used for striped/raid0 conversions
-\[bu]
-Used for RAID Takeover
-
-.SH RAID6 Variants
-
-raid6
-.br
-\[bu]
-RAID6 zero restart (aka left symmetric)
-.br
-\[bu]
-Rotating parity 0 with data restart
-.br
-\[bu]
-Same as raid6_zr
-
-raid6_zr
-.br
-\[bu]
-RAID6 zero restart (aka left symmetric)
-.br
-\[bu]
-Rotating parity 0 with data restart
-
-raid6_nr
-.br
-\[bu]
-RAID6 N restart (aka right symmetric)
-.br
-\[bu]
-Rotating parity N with data restart
-
-raid6_nc
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Rotating parity N with data continuation
-
-raid6_n_6
-.br
-\[bu]
-RAID6 last parity devices
-.br
-\[bu]
-Dedicated last parity devices used for striped/raid0 conversions
-\[bu]
-Used for RAID Takeover
-
-raid6_{ls,rs,la,ra}_6
-.br
-\[bu]
-RAID6 last parity device
-.br
-\[bu]
-Dedicated last parity device used for conversions from/to raid5_{ls,rs,la,ra}
-
-raid6_n_6
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Fixed P-Syndrome N-1 and Q-Syndrome N with striped data
-.br
-\[bu]
-Used for RAID Takeover
-
-raid6_ls_6
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Same as raid5_ls for N-1 disks with fixed Q-Syndrome N
-.br
-\[bu]
-Used for RAID Takeover
-
-raid6_la_6
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Same as raid5_la for N-1 disks with fixed Q-Syndrome N
-.br
-\[bu]
-Used forRAID Takeover
-
-raid6_rs_6
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Same as raid5_rs for N-1 disks with fixed Q-Syndrome N
-.br
-\[bu]
-Used for RAID Takeover
-
-raid6_ra_6
-.br
-\[bu]
-RAID6 N continue
-.br
-\[bu]
-Same as raid5_ra for N-1 disks with fixed Q-Syndrome N
-.br
-\[bu]
-Used for RAID Takeover
-
-
-.ig
-.SH RAID Duplication
-
-RAID LV conversion (takeover or reshaping) can be done out\-of\-place by
-copying the LV data onto new devices while changing the RAID properties.
-Copying avoids modifying the original LV but requires additional devices.
-Once the LV data has been copied/converted onto the new devices, there are
-multiple options:
-
-1. The RAID LV can be switched over to run from just the new devices, and
-the original copy of the data removed.  The converted LV then has the new
-RAID properties, and exists on new devices.  The old devices holding the
-original data can be removed or reused.
-
-2. The new copy of the data can be dropped, leaving the original RAID LV
-unchanged and using its original devices.
-
-3. The new copy of the data can be separated and used as a new independent
-LV, leaving the original RAID LV unchanged on its original devices.
-
-The command to start duplication is:
-
-.B lvconvert \-\-type
-.I RaidLevel
-[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
-.RS
-.B \-\-duplicate
-.IR VG / LV
-[\fIPVs\fP]
-.RE
-
-.HP
-.B \-\-duplicate
-.br
-Specifies that the LV conversion should be done out\-of\-place, copying
-LV data to new devices while converting.
-
-.HP
-.BR \-\-type , \-\-stripes , \-\-stripesize
-.br
-Specifies the RAID properties to use when creating the copy.
-
-.P
-\fIPVs\fP specifies the new devices to use.
-
-The steps in the duplication process:
-
-.IP \(bu 3
-LVM creates a new LV on new devices using the specified RAID properties
-(type, stripes, etc) and optionally specified devices.
-
-.IP \(bu 3
-LVM changes the visible RAID LV to type raid1, making the original LV the
-first raid1 image (SubLV 0), and the new LV the second raid1 image
-(SubLV 1).
-
-.IP \(bu 3
-The RAID1 synchronization process copies data from the original LV
-image (SubLV 0) to the new LV image (SubLV 1).
-
-.IP \(bu 3
-When synchronization is complete, the original and new LVs are
-mirror images of each other and can be separated.
-
-.P
-
-The duplication process retains both the original and new LVs (both
-SubLVs) until an explicit unduplicate command is run to separate them.  The
-unduplicate command specifies if the original LV should use the old
-devices (SubLV 0) or the new devices (SubLV 1).
-
-To make the RAID LV use the data on the old devices, and drop the copy on
-the new devices, specify the name of SubLV 0 (suffix _dup_0):
-
-.B lvconvert \-\-unduplicate
-.BI \-\-name
-.IB LV _dup_0
-.IR VG / LV
-
-To make the RAID LV use the data copy on the new devices, and drop the old
-devices, specify the name of SubLV 1 (suffix _dup_1):
-
-.B lvconvert \-\-unduplicate
-.BI \-\-name
-.IB LV _dup_1
-.IR VG / LV
-
-FIXME: To make the LV use the data on the original devices, but keep the
-data copy as a new LV, ...
-
-FIXME: include how splitmirrors can be used.
-
-
-.SH RAID1E
-
-TODO
-..
-
-.SH History
-
-The 2.6.38-rc1 version of the Linux kernel introduced a device-mapper
-target to interface with the software RAID (MD) personalities.  This
-provided device-mapper with RAID 4/5/6 capabilities and a larger
-development community.  Later, support for RAID1, RAID10, and RAID1E (RAID
-10 variants) were added.  Support for these new kernel RAID targets was
-added to LVM version 2.02.87.  The capabilities of the LVM \fBraid1\fP
-type have surpassed the old \fBmirror\fP type.  raid1 is now recommended
-instead of mirror.  raid1 became the default for mirroring in LVM version
-2.02.100.
-
diff --git a/man/lvmraid.7_main b/man/lvmraid.7_main
new file mode 100644
index 0000000..dc07f2e
--- /dev/null
+++ b/man/lvmraid.7_main
@@ -0,0 +1,1711 @@
+.TH "LVMRAID" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmraid \(em LVM RAID
+
+.SH DESCRIPTION
+
+LVM RAID is a way to create logical volumes (LVs) that use multiple physical
+devices to improve performance or tolerate device failure.  How blocks of
+data in an LV are placed onto physical devices is determined by the RAID
+level.  RAID levels are commonly referred to by number, e.g. raid1, raid5.
+Selecting a RAID level involves tradeoffs among physical device
+requirements, fault tolerance, and performance.  A description of the RAID
+levels can be found at
+.br
+www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
+
+LVM RAID uses both Device Mapper (DM) and Multiple Device (MD) drivers
+from the Linux kernel.  DM is used to create and manage visible LVM
+devices, and MD is used to place data on physical devices.
+
+LVM creates hidden LVs (dm devices) layered between the visible LV and
+physical devices.  LVs in that middle layers are called sub LVs.
+For LVM raid, a sub LV pair to store data and metadata (raid superblock
+and bitmap) is created per raid image/leg (see lvs command examples below).
+
+.SH Create a RAID LV
+
+To create a RAID LV, use lvcreate and specify an LV type.
+The LV type corresponds to a RAID level.
+The basic RAID levels that can be used are:
+.B raid0, raid1, raid4, raid5, raid6, raid10.
+
+.B lvcreate \-\-type
+.I RaidLevel
+[\fIOPTIONS\fP]
+.B \-\-name
+.I Name
+.B \-\-size
+.I Size
+.I VG
+[\fIPVs\fP]
+
+To display the LV type of an existing LV, run:
+
+.B lvs -o name,segtype
+\fIVG\fP/\fILV\fP
+
+(The LV type is also referred to as "segment type" or "segtype".)
+
+LVs can be created with the following types:
+
+.SS raid0
+
+\&
+
+Also called striping, raid0 spreads LV data across multiple devices in
+units of stripe size.  This is used to increase performance.  LV data will
+be lost if any of the devices fail.
+
+.B lvcreate \-\-type raid0
+[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
+\fIVG\fP
+[\fIPVs\fP]
+
+.HP
+.B \-\-stripes
+specifies the number of devices to spread the LV across.
+
+.HP
+.B \-\-stripesize
+specifies the size of each stripe in kilobytes.  This is the amount of
+data that is written to one device before moving to the next.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+\fINumber\fP devices, one for each stripe.
+
+.SS raid1
+
+\&
+
+Also called mirroring, raid1 uses multiple devices to duplicate LV data.
+The LV data remains available if all but one of the devices fail.
+The minimum number of devices (i.e. sub LV pairs) required is 2.
+
+.B lvcreate \-\-type raid1
+[\fB\-\-mirrors\fP \fINumber\fP]
+\fIVG\fP
+[\fIPVs\fP]
+
+.HP
+.B \-\-mirrors
+specifies the number of mirror images in addition to the original LV
+image, e.g. \-\-mirrors 1 means there are two images of the data, the
+original and one mirror image.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+\fINumber\fP devices, one for each image.
+
+.SS raid4
+
+\&
+
+raid4 is a form of striping that uses an extra, first device dedicated to
+storing parity blocks.  The LV data remains available if one device fails.  The
+parity is used to recalculate data that is lost from a single device.  The
+minimum number of devices required is 3.
+
+.B lvcreate \-\-type raid4
+[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
+\fIVG\fP
+[\fIPVs\fP]
+
+.HP
+.B \-\-stripes
+specifies the number of devices to use for LV data.  This does not include
+the extra device lvm adds for storing parity blocks.  \fINumber\fP stripes
+requires \fINumber\fP+1 devices.  \fINumber\fP must be 2 or more.
+
+.HP
+.B \-\-stripesize
+specifies the size of each stripe in kilobytes.  This is the amount of
+data that is written to one device before moving to the next.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+\fINumber\fP+1 separate devices.
+
+raid4 is called non-rotating parity because the parity blocks are always
+stored on the same device.
+
+.SS raid5
+
+\&
+
+raid5 is a form of striping that uses an extra device for storing parity
+blocks.  LV data and parity blocks are stored on each device, typically in
+a rotating pattern for performance reasons.  The LV data remains available
+if one device fails.  The parity is used to recalculate data that is lost
+from a single device.  The minimum number of devices required is 3.
+
+.B lvcreate \-\-type raid5
+[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
+\fIVG\fP
+[\fIPVs\fP]
+
+.HP
+.B \-\-stripes
+specifies the number of devices to use for LV data.  This does not include
+the extra device lvm adds for storing parity blocks.  \fINumber\fP stripes
+requires \fINumber\fP+1 devices.  \fINumber\fP must be 2 or more.
+
+.HP
+.B \-\-stripesize
+specifies the size of each stripe in kilobytes.  This is the amount of
+data that is written to one device before moving to the next.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+\fINumber\fP+1 separate devices.
+
+raid5 is called rotating parity because the parity blocks are placed on
+different devices in a round-robin sequence.  There are variations of
+raid5 with different algorithms for placing the parity blocks.  The
+default variant is raid5_ls (raid5 left symmetric, which is a rotating
+parity 0 with data restart.)  See \fBRAID5 variants\fP below.
+
+.SS raid6
+
+\&
+
+raid6 is a form of striping like raid5, but uses two extra devices for
+parity blocks.  LV data and parity blocks are stored on each device, typically
+in a rotating pattern for perfomramce reasons.  The
+LV data remains available if up to two devices fail.  The parity is used
+to recalculate data that is lost from one or two devices.  The minimum
+number of devices required is 5.
+
+.B lvcreate \-\-type raid6
+[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
+\fIVG\fP
+[\fIPVs\fP]
+
+.HP
+.B \-\-stripes
+specifies the number of devices to use for LV data.  This does not include
+the extra two devices lvm adds for storing parity blocks.  \fINumber\fP
+stripes requires \fINumber\fP+2 devices.  \fINumber\fP must be 3 or more.
+
+.HP
+.B \-\-stripesize
+specifies the size of each stripe in kilobytes.  This is the amount of
+data that is written to one device before moving to the next.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+\fINumber\fP+2 separate devices.
+
+Like raid5, there are variations of raid6 with different algorithms for
+placing the parity blocks.  The default variant is raid6_zr (raid6 zero
+restart, aka left symmetric, which is a rotating parity 0 with data
+restart.)  See \fBRAID6 variants\fP below.
+
+.SS raid10
+
+\&
+
+raid10 is a combination of raid1 and raid0, striping data across mirrored
+devices.  LV data remains available if one or more devices remains in each
+mirror set.  The minimum number of devices required is 4.
+
+.B lvcreate \-\-type raid10
+.RS
+[\fB\-\-mirrors\fP \fINumberMirrors\fP]
+.br
+[\fB\-\-stripes\fP \fINumberStripes\fP \fB\-\-stripesize\fP \fISize\fP]
+.br
+\fIVG\fP
+[\fIPVs\fP]
+.RE
+
+.HP
+.B \-\-mirrors
+specifies the number of mirror images within each stripe.  e.g.
+\-\-mirrors 1 means there are two images of the data, the original and one
+mirror image.
+
+.HP
+.B \-\-stripes
+specifies the total number of devices to use in all raid1 images (not the
+number of raid1 devices to spread the LV across, even though that is the
+effective result).  The number of devices in each raid1 mirror will be
+NumberStripes/(NumberMirrors+1), e.g. mirrors 1 and stripes 4 will stripe
+data across two raid1 mirrors, where each mirror is devices.
+
+.HP
+.B \-\-stripesize
+specifies the size of each stripe in kilobytes.  This is the amount of
+data that is written to one device before moving to the next.
+.P
+
+\fIPVs\fP specifies the devices to use.  If not specified, lvm will choose
+the necessary devices.  Devices are used to create mirrors in the
+order listed, e.g. for mirrors 1, stripes 2, listing PV1 PV2 PV3 PV4
+results in mirrors PV1/PV2 and PV3/PV4.
+
+RAID10 is not mirroring on top of stripes, which would be RAID01, which is
+less tolerant of device failures.
+
+
+.SH Synchronization
+
+Synchronization makes all the devices in a RAID LV consistent with each
+other.
+
+In a RAID1 LV, all mirror images should have the same data.  When a new
+mirror image is added, or a mirror image is missing data, then images need
+to be synchronized.  Data blocks are copied from an existing image to a
+new or outdated image to make them match.
+
+In a RAID 4/5/6 LV, parity blocks and data blocks should match based on
+the parity calculation.  When the devices in a RAID LV change, the data
+and parity blocks can become inconsistent and need to be synchronized.
+Correct blocks are read, parity is calculated, and recalculated blocks are
+written.
+
+The RAID implementation keeps track of which parts of a RAID LV are
+synchronized.  This uses a bitmap saved in the RAID metadata.  The bitmap
+can exclude large parts of the LV from synchronization to reduce the
+amount of work.  Without this, the entire LV would need to be synchronized
+every time it was activated.  When a RAID LV is first created and
+activated the first synchronization is called initialization.
+
+Automatic synchronization happens when a RAID LV is activated, but it is
+usually partial because the bitmaps reduce the areas that are checked.
+A full sync may become necessary when devices in the RAID LV are changed.
+
+The synchronization status of a RAID LV is reported by the
+following command, where "image synced" means sync is complete:
+
+.B lvs -a -o name,sync_percent
+
+
+.SS Scrubbing
+
+Scrubbing is a full scan/synchronization of the RAID LV requested by a user.
+Scrubbing can find problems that are missed by partial synchronization.
+
+Scrubbing assumes that RAID metadata and bitmaps may be inaccurate, so it
+verifies all RAID metadata, LV data, and parity blocks.  Scrubbing can
+find inconsistencies caused by hardware errors or degradation.  These
+kinds of problems may be undetected by automatic synchronization which
+excludes areas outside of the RAID write-intent bitmap.
+
+The command to scrub a RAID LV can operate in two different modes:
+
+.B lvchange \-\-syncaction
+.BR check | repair
+.IR VG / LV
+
+.HP
+.B check
+Check mode is read\-only and only detects inconsistent areas in the RAID
+LV, it does not correct them.
+
+.HP
+.B repair
+Repair mode checks and writes corrected blocks to synchronize any
+inconsistent areas.
+
+.P
+
+Scrubbing can consume a lot of bandwidth and slow down application I/O on
+the RAID LV.  To control the I/O rate used for scrubbing, use:
+
+.HP
+.B \-\-maxrecoveryrate
+.BR \fIRate [ b | B | s | S | k | K | m | M | g | G ]
+.br
+Sets the maximum recovery rate for a RAID LV.  \fIRate\fP is specified as
+an amount per second for each device in the array.  If no suffix is given,
+then KiB/sec/device is assumed.  Setting the recovery rate to \fB0\fP
+means it will be unbounded.
+
+.HP
+.BR \-\-minrecoveryrate
+.BR \fIRate [ b | B | s | S | k | K | m | M | g | G ]
+.br
+Sets the minimum recovery rate for a RAID LV.  \fIRate\fP is specified as
+an amount per second for each device in the array.  If no suffix is given,
+then KiB/sec/device is assumed.  Setting the recovery rate to \fB0\fP
+means it will be unbounded.
+
+.P
+
+To display the current scrubbing in progress on an LV, including
+the syncaction mode and percent complete, run:
+
+.B lvs -a -o name,raid_sync_action,sync_percent
+
+After scrubbing is complete, to display the number of inconsistent blocks
+found, run:
+
+.B lvs -o name,raid_mismatch_count
+
+Also, if mismatches were found, the lvs attr field will display the letter
+"m" (mismatch) in the 9th position, e.g.
+
+.nf
+# lvs -o name,vgname,segtype,attr vg/lvol0
+  LV    VG   Type  Attr
+  lvol0 vg   raid1 Rwi-a-r-m-
+.fi
+
+
+.SS Scrubbing Limitations
+
+The \fBcheck\fP mode can only report the number of inconsistent blocks, it
+cannot report which blocks are inconsistent.  This makes it impossible to
+know which device has errors, or if the errors affect file system data,
+metadata or nothing at all.
+
+The \fBrepair\fP mode can make the RAID LV data consistent, but it does
+not know which data is correct.  The result may be consistent but
+incorrect data.  When two different blocks of data must be made
+consistent, it chooses the block from the device that would be used during
+RAID intialization.  However, if the PV holding corrupt data is known,
+lvchange \-\-rebuild can be used to reconstruct the data on the bad
+device.
+
+Future developments might include:
+
+Allowing a user to choose the correct version of data during repair.
+
+Using a majority of devices to determine the correct version of data to
+use in a three-way RAID1 or RAID6 LV.
+
+Using a checksumming device to pin-point when and where an error occurs,
+allowing it to be rewritten.
+
+
+.SH SubLVs
+
+An LV is often a combination of other hidden LVs called SubLVs.  The
+SubLVs either use physical devices, or are built from other SubLVs
+themselves.  SubLVs hold LV data blocks, RAID parity blocks, and RAID
+metadata.  SubLVs are generally hidden, so the lvs \-a option is required
+display them:
+
+.B lvs -a -o name,segtype,devices
+
+SubLV names begin with the visible LV name, and have an automatic suffix
+indicating its role:
+
+.IP \(bu 3
+SubLVs holding LV data or parity blocks have the suffix _rimage_#.
+These SubLVs are sometimes referred to as DataLVs.
+
+.IP \(bu 3
+SubLVs holding RAID metadata have the suffix _rmeta_#.  RAID metadata
+includes superblock information, RAID type, bitmap, and device health
+information.  These SubLVs are sometimes referred to as MetaLVs.
+
+.P
+
+SubLVs are an internal implementation detail of LVM.  The way they are
+used, constructed and named may change.
+
+The following examples show the SubLV arrangement for each of the basic
+RAID LV types, using the fewest number of devices allowed for each.
+
+.SS Examples
+
+.B raid0
+.br
+Each rimage SubLV holds a portion of LV data.  No parity is used.
+No RAID metadata is used.
+
+.nf
+lvcreate --type raid0 --stripes 2 --name lvr0 ...
+
+lvs -a -o name,segtype,devices
+  lvr0            raid0  lvr0_rimage_0(0),lvr0_rimage_1(0)
+  [lvr0_rimage_0] linear /dev/sda(...)
+  [lvr0_rimage_1] linear /dev/sdb(...)
+.fi
+
+.B raid1
+.br
+Each rimage SubLV holds a complete copy of LV data.  No parity is used.
+Each rmeta SubLV holds RAID metadata.
+
+.nf
+lvcreate --type raid1 --mirrors 1 --name lvr1 ...
+
+lvs -a -o name,segtype,devices
+  lvr1            raid1  lvr1_rimage_0(0),lvr1_rimage_1(0)
+  [lvr1_rimage_0] linear /dev/sda(...)
+  [lvr1_rimage_1] linear /dev/sdb(...)
+  [lvr1_rmeta_0]  linear /dev/sda(...)
+  [lvr1_rmeta_1]  linear /dev/sdb(...)
+.fi
+
+.B raid4
+.br
+Two rimage SubLVs each hold a portion of LV data and one rimage SubLV
+holds parity.  Each rmeta SubLV holds RAID metadata.
+
+.nf
+lvcreate --type raid4 --stripes 2 --name lvr4 ...
+
+lvs -a -o name,segtype,devices
+  lvr4            raid4  lvr4_rimage_0(0),\\
+                         lvr4_rimage_1(0),\\
+                         lvr4_rimage_2(0)
+  [lvr4_rimage_0] linear /dev/sda(...)
+  [lvr4_rimage_1] linear /dev/sdb(...)
+  [lvr4_rimage_2] linear /dev/sdc(...)
+  [lvr4_rmeta_0]  linear /dev/sda(...)
+  [lvr4_rmeta_1]  linear /dev/sdb(...)
+  [lvr4_rmeta_2]  linear /dev/sdc(...)
+.fi
+
+.B raid5
+.br
+Three rimage SubLVs each hold a portion of LV data and parity.
+Each rmeta SubLV holds RAID metadata.
+
+.nf
+lvcreate --type raid5 --stripes 2 --name lvr5 ...
+
+lvs -a -o name,segtype,devices
+  lvr5            raid5  lvr5_rimage_0(0),\\
+                         lvr5_rimage_1(0),\\
+                         lvr5_rimage_2(0)
+  [lvr5_rimage_0] linear /dev/sda(...)
+  [lvr5_rimage_1] linear /dev/sdb(...)
+  [lvr5_rimage_2] linear /dev/sdc(...)
+  [lvr5_rmeta_0]  linear /dev/sda(...)
+  [lvr5_rmeta_1]  linear /dev/sdb(...)
+  [lvr5_rmeta_2]  linear /dev/sdc(...)
+.fi
+
+.B raid6
+.br
+Six rimage SubLVs each hold a portion of LV data and parity.
+Each rmeta SubLV holds RAID metadata.
+
+.nf
+lvcreate --type raid6 --stripes 3 --name lvr6
+
+lvs -a -o name,segtype,devices
+  lvr6            raid6  lvr6_rimage_0(0),\\
+                         lvr6_rimage_1(0),\\
+                         lvr6_rimage_2(0),\\
+                         lvr6_rimage_3(0),\\
+                         lvr6_rimage_4(0),\\
+                         lvr6_rimage_5(0)
+  [lvr6_rimage_0] linear /dev/sda(...)
+  [lvr6_rimage_1] linear /dev/sdb(...)
+  [lvr6_rimage_2] linear /dev/sdc(...)
+  [lvr6_rimage_3] linear /dev/sdd(...)
+  [lvr6_rimage_4] linear /dev/sde(...)
+  [lvr6_rimage_5] linear /dev/sdf(...)
+  [lvr6_rmeta_0]  linear /dev/sda(...)
+  [lvr6_rmeta_1]  linear /dev/sdb(...)
+  [lvr6_rmeta_2]  linear /dev/sdc(...)
+  [lvr6_rmeta_3]  linear /dev/sdd(...)
+  [lvr6_rmeta_4]  linear /dev/sde(...)
+  [lvr6_rmeta_5]  linear /dev/sdf(...)
+
+.B raid10
+.br
+Four rimage SubLVs each hold a portion of LV data.  No parity is used.
+Each rmeta SubLV holds RAID metadata.
+
+.nf
+lvcreate --type raid10 --stripes 2 --mirrors 1 --name lvr10
+
+lvs -a -o name,segtype,devices
+  lvr10            raid10 lvr10_rimage_0(0),\\
+                          lvr10_rimage_1(0),\\
+                          lvr10_rimage_2(0),\\
+                          lvr10_rimage_3(0)
+  [lvr10_rimage_0] linear /dev/sda(...)
+  [lvr10_rimage_1] linear /dev/sdb(...)
+  [lvr10_rimage_2] linear /dev/sdc(...)
+  [lvr10_rimage_3] linear /dev/sdd(...)
+  [lvr10_rmeta_0]  linear /dev/sda(...)
+  [lvr10_rmeta_1]  linear /dev/sdb(...)
+  [lvr10_rmeta_2]  linear /dev/sdc(...)
+  [lvr10_rmeta_3]  linear /dev/sdd(...)
+.fi
+
+
+.SH Device Failure
+
+Physical devices in a RAID LV can fail or be lost for multiple reasons.
+A device could be disconnected, permanently failed, or temporarily
+disconnected.  The purpose of RAID LVs (levels 1 and higher) is to
+continue operating in a degraded mode, without losing LV data, even after
+a device fails.  The number of devices that can fail without the loss of
+LV data depends on the RAID level:
+
+.IP \[bu] 3
+RAID0 (striped) LVs cannot tolerate losing any devices.  LV data will be
+lost if any devices fail.
+
+.IP \[bu] 3
+RAID1 LVs can tolerate losing all but one device without LV data loss.
+
+.IP \[bu] 3
+RAID4 and RAID5 LVs can tolerate losing one device without LV data loss.
+
+.IP \[bu] 3
+RAID6 LVs can tolerate losing two devices without LV data loss.
+
+.IP \[bu] 3
+RAID10 is variable, and depends on which devices are lost.  It can
+tolerate losing all but one device in a single raid1 mirror without
+LV data loss.
+
+.P
+
+If a RAID LV is missing devices, or has other device-related problems, lvs
+reports this in the health_status (and attr) fields:
+
+.B lvs -o name,lv_health_status
+
+.B partial
+.br
+Devices are missing from the LV.  This is also indicated by the letter "p"
+(partial) in the 9th position of the lvs attr field.
+
+.B refresh needed
+.br
+A device was temporarily missing but has returned.  The LV needs to be
+refreshed to use the device again (which will usually require
+partial synchronization).  This is also indicated by the letter "r" (refresh
+needed) in the 9th position of the lvs attr field.  See
+\fBRefreshing an LV\fP.  This could also indicate a problem with the
+device, in which case it should be be replaced, see
+\fBReplacing Devices\fP.
+
+.B mismatches exist
+.br
+See
+.BR Scrubbing .
+
+Most commands will also print a warning if a device is missing, e.g.
+.br
+.nf
+WARNING: Device for PV uItL3Z-wBME-DQy0-... not found or rejected ...
+.fi
+
+This warning will go away if the device returns or is removed from the
+VG (see \fBvgreduce \-\-removemissing\fP).
+
+
+.SS Activating an LV with missing devices
+
+A RAID LV that is missing devices may be activated or not, depending on
+the "activation mode" used in lvchange:
+
+.B lvchange \-ay \-\-activationmode
+.RB { complete | degraded | partial }
+.IR VG / LV
+
+.B complete
+.br
+The LV is only activated if all devices are present.
+
+.B degraded
+.br
+The LV is activated with missing devices if the RAID level can
+tolerate the number of missing devices without LV data loss.
+
+.B partial
+.br
+The LV is always activated, even if portions of the LV data are missing
+because of the missing device(s).  This should only be used to perform
+recovery or repair operations.
+
+.BR lvm.conf (5)
+.B activation/activation_mode
+.br
+controls the activation mode when not specified by the command.
+
+The default value is printed by:
+.nf
+lvmconfig --type default activation/activation_mode
+.fi
+
+.SS Replacing Devices
+
+Devices in a RAID LV can be replaced with other devices in the VG.  When
+replacing devices that are no longer visible on the system, use lvconvert
+\-\-repair.  When replacing devices that are still visible, use lvconvert
+\-\-replace.  The repair command will attempt to restore the same number
+of data LVs that were previously in the LV.  The replace option can be
+repeated to replace multiple PVs.  Replacement devices can be optionally
+listed with either option.
+
+.B lvconvert \-\-repair
+.IR VG / LV
+[\fINewPVs\fP]
+
+.B lvconvert \-\-replace
+\fIOldPV\fP
+.IR VG / LV
+[\fINewPV\fP]
+
+.B lvconvert
+.B \-\-replace
+\fIOldPV1\fP
+.B \-\-replace
+\fIOldPV2\fP
+...
+.IR VG / LV
+[\fINewPVs\fP]
+
+New devices require synchronization with existing devices, see
+.BR Synchronization .
+
+.SS Refreshing an LV
+
+Refreshing a RAID LV clears any transient device failures (device was
+temporarily disconnected) and returns the LV to its fully redundant mode.
+Restoring a device will usually require at least partial synchronization
+(see \fBSynchronization\fP).  Failure to clear a transient failure results
+in the RAID LV operating in degraded mode until it is reactivated.  Use
+the lvchange command to refresh an LV:
+
+.B lvchange \-\-refresh
+.IR VG / LV
+
+.nf
+# lvs -o name,vgname,segtype,attr,size vg
+  LV    VG   Type  Attr       LSize
+  raid1 vg   raid1 Rwi-a-r-r- 100.00g
+
+# lvchange --refresh vg/raid1
+
+# lvs -o name,vgname,segtype,attr,size vg
+  LV    VG   Type  Attr       LSize
+  raid1 vg   raid1 Rwi-a-r--- 100.00g
+.fi
+
+.SS Automatic repair
+
+If a device in a RAID LV fails, device-mapper in the kernel notifies the
+.BR dmeventd (8)
+monitoring process (see \fBMonitoring\fP).
+dmeventd can be configured to automatically respond using:
+
+.BR lvm.conf (5)
+.B activation/raid_fault_policy
+
+Possible settings are:
+
+.B warn
+.br
+A warning is added to the system log indicating that a device has
+failed in the RAID LV.  It is left to the user to repair the LV, e.g.
+replace failed devices.
+
+.B allocate
+.br
+dmeventd automatically attempts to repair the LV using spare devices
+in the VG.  Note that even a transient failure is handled as a permanent
+failure; a new device is allocated and full synchronization is started.
+
+The specific command run by dmeventd to warn or repair is:
+.br
+.B lvconvert \-\-repair \-\-use\-policies
+.IR VG / LV
+
+
+.SS Corrupted Data
+
+Data on a device can be corrupted due to hardware errors, without the
+device ever being disconnected, and without any fault in the software.
+This should be rare, and can be detected (see \fBScrubbing\fP).
+
+
+.SS Rebuild specific PVs
+
+If specific PVs in a RAID LV are known to have corrupt data, the data on
+those PVs can be reconstructed with:
+
+.B lvchange \-\-rebuild PV
+.IR VG / LV
+
+The rebuild option can be repeated with different PVs to replace the data
+on multiple PVs.
+
+
+.SH Monitoring
+
+When a RAID LV is activated the \fBdmeventd\fP(8) process is started to
+monitor the health of the LV.  Various events detected in the kernel can
+cause a notification to be sent from device-mapper to the monitoring
+process, including device failures and synchronization completion (e.g.
+for initialization or scrubbing).
+
+The LVM configuration file contains options that affect how the monitoring
+process will respond to failure events (e.g. raid_fault_policy).  It is
+possible to turn on and off monitoring with lvchange, but it is not
+recommended to turn this off unless you have a thorough knowledge of the
+consequences.
+
+
+.SH Configuration Options
+
+There are a number of options in the LVM configuration file that affect
+the behavior of RAID LVs.  The tunable options are listed
+below.  A detailed description of each can be found in the LVM
+configuration file itself.
+.br
+        mirror_segtype_default
+.br
+        raid10_segtype_default
+.br
+        raid_region_size
+.br
+        raid_fault_policy
+.br
+        activation_mode
+
+
+.SH RAID1 Tuning
+
+A RAID1 LV can be tuned so that certain devices are avoided for reading
+while all devices are still written to.
+
+.B lvchange
+.BR \-\- [ raid ] writemostly
+.BR \fIPhysicalVolume [ : { y | n | t }]
+.IR VG / LV
+
+The specified device will be marked as "write mostly", which means that
+reading from this device will be avoided, and other devices will be
+preferred for reading (unless no other devices are available.)  This
+minimizes the I/O to the specified device.
+
+If the PV name has no suffix, the write mostly attribute is set.  If the
+PV name has the suffix \fB:n\fP, the write mostly attribute is cleared,
+and the suffix \fB:t\fP toggles the current setting.
+
+The write mostly option can be repeated on the command line to change
+multiple devices at once.
+
+To report the current write mostly setting, the lvs attr field will show
+the letter "w" in the 9th position when write mostly is set:
+
+.B lvs -a -o name,attr
+
+When a device is marked write mostly, the maximum number of outstanding
+writes to that device can be configured.  Once the maximum is reached,
+further writes become synchronous.  When synchronous, a write to the LV
+will not complete until writes to all the mirror images are complete.
+
+.B lvchange
+.BR \-\- [ raid ] writebehind
+.IR IOCount
+.IR VG / LV
+
+To report the current write behind setting, run:
+
+.B lvs -o name,raid_write_behind
+
+When write behind is not configured, or set to 0, all LV writes are
+synchronous.
+
+
+.SH RAID Takeover
+
+RAID takeover is converting a RAID LV from one RAID level to another, e.g.
+raid5 to raid6.  Changing the RAID level is usually done to increase or
+decrease resilience to device failures.  This is done using lvconvert and
+specifying the new RAID level as the LV type:
+
+.B lvconvert --type
+.I RaidLevel
+\fIVG\fP/\fILV\fP
+[\fIPVs\fP]
+
+The most common and recommended RAID takeover conversions are:
+
+.HP
+\fBlinear\fP to \fBraid1\fP
+.br
+Linear is a single image of LV data, and
+converting it to raid1 adds a mirror image which is a direct copy of the
+original linear image.
+
+.HP
+\fBstriped\fP/\fBraid0\fP to \fBraid4/5/6\fP
+.br
+Adding parity devices to a
+striped volume results in raid4/5/6.
+
+.P
+
+Unnatural conversions that are not recommended include converting between
+striped and non-striped types.  This is because file systems often
+optimize I/O patterns based on device striping values.  If those values
+change, it can decrease performance.
+
+Converting to a higher RAID level requires allocating new SubLVs to hold
+RAID metadata, and new SubLVs to hold parity blocks for LV data.
+Converting to a lower RAID level removes the SubLVs that are no longer
+needed.
+
+Conversion often requires full synchronization of the RAID LV (see
+\fBSynchronization\fP).  Converting to RAID1 requires copying all LV data
+blocks to a new image on a new device.  Converting to a parity RAID level
+requires reading all LV data blocks, calculating parity, and writing the
+new parity blocks.  Synchronization can take a long time and degrade
+performance (rate controls also apply to conversion, see
+\fB\-\-maxrecoveryrate\fP.)
+
+Warning: though it is possible to create \fBstriped\fP LVs  with up to 128 stripes,
+a maximum of 64 stripes can be converted to \fBraid0\fP, 63 to \fBraid4/5\fP and
+62 to \fBraid6\fP because of the added parity SubLVs.
+A \fBstriped\fP LV with a maximum of 32 stripes can be converted to \fBraid10\fP.
+
+.P
+
+The following takeover conversions are currently possible:
+.br
+.IP \(bu 3
+between striped and raid0.
+.IP \(bu 3
+between linear and raid1.
+.IP \(bu 3
+between mirror and raid1.
+.IP \(bu 3
+between 2-legged raid1 and raid4/5.
+.IP \(bu 3
+between striped/raid0 and raid4.
+.IP \(bu 3
+between striped/raid0 and raid5.
+.IP \(bu 3
+between striped/raid0 and raid6.
+.IP \(bu 3
+between raid4 and raid5.
+.IP \(bu 3
+between raid4/raid5 and raid6.
+.IP \(bu 3
+between striped/raid0 and raid10.
+
+.SS Examples
+
+1. Converting an LV from \fBlinear\fP to \fBraid1\fP.
+
+.nf
+# lvs -a -o name,segtype,size vg
+  LV   Type   LSize
+  lv   linear 300.00g
+
+# lvconvert --type raid1 --mirrors 1 vg/lv
+
+# lvs -a -o name,segtype,size vg
+  LV            Type   LSize
+  lv            raid1  300.00g
+  [lv_rimage_0] linear 300.00g
+  [lv_rimage_1] linear 300.00g
+  [lv_rmeta_0]  linear   3.00m
+  [lv_rmeta_1]  linear   3.00m
+.fi
+
+2. Converting an LV from \fBmirror\fP to \fBraid1\fP.
+
+.nf
+# lvs -a -o name,segtype,size vg
+  LV            Type   LSize
+  lv            mirror 100.00g
+  [lv_mimage_0] linear 100.00g
+  [lv_mimage_1] linear 100.00g
+  [lv_mlog]     linear   3.00m
+.IP \(bu 3
+between striped and raid4.
+
+.SS Examples
+
+1. Converting an LV from \fBlinear\fP to \fBraid1\fP.
+
+.nf
+# lvs -a -o name,segtype,size vg
+  LV   Type   LSize
+  lv   linear 300.00g
+
+# lvconvert --type raid1 --mirrors 1 vg/lv
+
+# lvs -a -o name,segtype,size vg
+  LV            Type   LSize
+  lv            raid1  300.00g
+  [lv_rimage_0] linear 300.00g
+  [lv_rimage_1] linear 300.00g
+  [lv_rmeta_0]  linear   3.00m
+  [lv_rmeta_1]  linear   3.00m
+.fi
+
+2. Converting an LV from \fBmirror\fP to \fBraid1\fP.
+
+.nf
+# lvs -a -o name,segtype,size vg
+  LV            Type   LSize
+  lv            mirror 100.00g
+  [lv_mimage_0] linear 100.00g
+  [lv_mimage_1] linear 100.00g
+  [lv_mlog]     linear   3.00m
+
+# lvconvert --type raid1 vg/lv
+
+# lvs -a -o name,segtype,size vg
+  LV            Type   LSize
+  lv            raid1  100.00g
+  [lv_rimage_0] linear 100.00g
+  [lv_rimage_1] linear 100.00g
+  [lv_rmeta_0]  linear   3.00m
+  [lv_rmeta_1]  linear   3.00m
+.fi
+
+3. Converting an LV from \fBlinear\fP to \fBraid1\fP (with 3 images).
+
+.nf
+Start with a linear LV:
+
+# lvcreate -L1G -n lv vg
+
+Convert the linear LV to raid1 with three images
+(original linear image plus 2 mirror images):
+
+# lvconvert --type raid1 --mirrors 2 vg/lv
+.fi
+
+4. Converting an LV from \fBstriped\fP (with 4 stripes) to \fBraid6_nc\fP.
+
+.nf
+Start with a striped LV:
+
+# lvcreate --stripes 4 -L64M -n lv vg
+
+Convert the striped LV to raid6_n_6:
+
+# lvconvert --type raid6 vg/lv
+
+# lvs -a -o lv_name,segtype,sync_percent,data_copies
+  LV            Type      Cpy%Sync #Cpy
+  lv            raid6_n_6 100.00      3
+  [lv_rimage_0] linear
+  [lv_rimage_1] linear
+  [lv_rimage_2] linear
+  [lv_rimage_3] linear
+  [lv_rimage_4] linear
+  [lv_rimage_5] linear
+  [lv_rmeta_0]  linear
+  [lv_rmeta_1]  linear
+  [lv_rmeta_2]  linear
+  [lv_rmeta_3]  linear
+  [lv_rmeta_4]  linear
+  [lv_rmeta_5]  linear
+.fi
+
+This convert begins by allocating MetaLVs (rmeta_#) for each of the
+existing stripe devices.  It then creates 2 additional MetaLV/DataLV pairs
+(rmeta_#/rimage_#) for dedicated raid6 parity.
+
+If rotating data/parity is required, such as with raid6_nr, it must be
+done by reshaping (see below).
+
+
+.SH RAID Reshaping
+
+RAID reshaping is changing attributes of a RAID LV while keeping the same
+RAID level.  This includes changing RAID layout, stripe size, or number of
+stripes.
+
+When changing the RAID layout or stripe size, no new SubLVs (MetaLVs or
+DataLVs) need to be allocated, but DataLVs are extended by a small amount
+(typically 1 extent).  The extra space allows blocks in a stripe to be
+updated safely, and not corrupted in case of a crash.  If a crash occurs,
+reshaping can just be restarted.
+
+(If blocks in a stripe were updated in place, a crash could leave them
+partially updated and corrupted.  Instead, an existing stripe is quiesced,
+read, changed in layout, and the new stripe written to free space.  Once
+that is done, the new stripe is unquiesced and used.)
+
+.SS Examples
+
+1. Converting raid6_n_6 to raid6_nr with rotating data/parity.
+
+This conversion naturally follows a previous conversion from striped/raid0
+to raid6_n_6 (shown above).  It completes the transition to a more
+traditional RAID6.
+
+.nf
+# lvs -o lv_name,segtype,sync_percent,data_copies
+  LV            Type      Cpy%Sync #Cpy
+  lv            raid6_n_6 100.00      3
+  [lv_rimage_0] linear
+  [lv_rimage_1] linear
+  [lv_rimage_2] linear
+  [lv_rimage_3] linear
+  [lv_rimage_4] linear
+  [lv_rimage_5] linear
+  [lv_rmeta_0]  linear
+  [lv_rmeta_1]  linear
+  [lv_rmeta_2]  linear
+  [lv_rmeta_3]  linear
+  [lv_rmeta_4]  linear
+  [lv_rmeta_5]  linear
+
+# lvconvert --type raid6_nr vg/lv
+
+# lvs -a -o lv_name,segtype,sync_percent,data_copies
+  LV            Type     Cpy%Sync #Cpy
+  lv            raid6_nr 100.00      3
+  [lv_rimage_0] linear
+  [lv_rimage_0] linear
+  [lv_rimage_1] linear
+  [lv_rimage_1] linear
+  [lv_rimage_2] linear
+  [lv_rimage_2] linear
+  [lv_rimage_3] linear
+  [lv_rimage_3] linear
+  [lv_rimage_4] linear
+  [lv_rimage_5] linear
+  [lv_rmeta_0]  linear
+  [lv_rmeta_1]  linear
+  [lv_rmeta_2]  linear
+  [lv_rmeta_3]  linear
+  [lv_rmeta_4]  linear
+  [lv_rmeta_5]  linear
+.fi
+
+The DataLVs are larger (additional segment in each) which provides space
+for out-of-place reshaping.  The result is:
+
+.nf
+# lvs -a -o lv_name,segtype,seg_pe_ranges,dataoffset
+  LV            Type     PE Ranges          DOff
+  lv            raid6_nr lv_rimage_0:0-32 \\
+                         lv_rimage_1:0-32 \\
+                         lv_rimage_2:0-32 \\
+                         lv_rimage_3:0-32
+  [lv_rimage_0] linear   /dev/sda:0-31      2048
+  [lv_rimage_0] linear   /dev/sda:33-33
+  [lv_rimage_1] linear   /dev/sdaa:0-31     2048
+  [lv_rimage_1] linear   /dev/sdaa:33-33
+  [lv_rimage_2] linear   /dev/sdab:1-33     2048
+  [lv_rimage_3] linear   /dev/sdac:1-33     2048
+  [lv_rmeta_0]  linear   /dev/sda:32-32
+  [lv_rmeta_1]  linear   /dev/sdaa:32-32
+  [lv_rmeta_2]  linear   /dev/sdab:0-0
+  [lv_rmeta_3]  linear   /dev/sdac:0-0
+.fi
+
+All segments with PE ranges '33-33' provide the out-of-place reshape space.
+The dataoffset column shows that the data was moved from initial offset 0 to
+2048 sectors on each component DataLV.
+
+For performance reasons the raid6_nr RaidLV can be restriped.
+Convert it from 3-way striped to 5-way-striped.
+
+.nf
+# lvconvert --stripes 5 -y tb/lv
+  Using default stripesize 64.00 KiB.
+  WARNING: Adding stripes to active logical volume tb/lv will grow it from 99 to 165 extents!
+  Run "lvresize -l99 tb/lv" to shrink it or use the additional capacity.
+  Logical volume tb/lv successfully converted.
+
+# lvs
+  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
+  root fedora -wi-ao----  15.00g
+  swap fedora -wi-ao----   3.99g
+  lv   tb     rwi-a-r-s- 652.00m                                    52.94
+
+# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV            Attr       Type     PE Ranges                                                                                   DOff
+  lv            rwi-a-r--- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33    0
+  [lv_rimage_0] iwi-aor--- linear   /dev/sda:0-32                                                                               0
+  [lv_rimage_0] iwi-aor--- linear   /dev/sda:34-34
+  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:0-32                                                                              0
+  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:34-34
+  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:0-32                                                                              0
+  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:34-34
+  [lv_rimage_3] iwi-aor--- linear   /dev/sdac:1-34                                                                              0
+  [lv_rimage_4] iwi-aor--- linear   /dev/sdad:1-34                                                                              0
+  [lv_rimage_5] iwi-aor--- linear   /dev/sdae:1-34                                                                              0
+  [lv_rimage_6] iwi-aor--- linear   /dev/sdaf:1-34                                                                              0
+  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
+  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
+  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
+  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
+  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
+  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
+  [lv_rmeta_6]  ewi-aor--- linear   /dev/sdaf:0-0
+.fi
+
+Stripes also can be removed from raid5 and 6.
+Convert the 5-way striped raid6_nr LV to 4-way-striped.
+The force option needs to be used, because removing stripes
+(i.e. image SubLVs) from a RaidLV will shrink its size.
+
+.nf
+# lvconvert --stripes 4 --force -y tb/lv
+  Using default stripesize 64.00 KiB.
+  WARNING: Removing stripes from active logical volume tb/lv will shrink it from 660.00 MiB to 528.00 MiB!
+  THIS MAY DESTROY (PARTS OF) YOUR DATA!
+  If that leaves the logical volume larger than 206 extents due to stripe rounding,
+  you may want to grow the content afterwards (filesystem etc.)
+  WARNING: too remove freed stripes after the conversion has finished, you have to run "lvconvert --stripes 4 tb/lv"
+  Logical volume tb/lv successfully converted.
+
+# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV            Attr       Type     PE Ranges                                                                                   DOff
+  lv            rwi-a-r-s- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33    0
+  [lv_rimage_0] Iwi-aor--- linear   /dev/sda:0-32                                                                               0
+  [lv_rimage_0] Iwi-aor--- linear   /dev/sda:34-34
+  [lv_rimage_1] Iwi-aor--- linear   /dev/sdaa:0-32                                                                              0
+  [lv_rimage_1] Iwi-aor--- linear   /dev/sdaa:34-34
+  [lv_rimage_2] Iwi-aor--- linear   /dev/sdab:0-32                                                                              0
+  [lv_rimage_2] Iwi-aor--- linear   /dev/sdab:34-34
+  [lv_rimage_3] Iwi-aor--- linear   /dev/sdac:1-34                                                                              0
+  [lv_rimage_4] Iwi-aor--- linear   /dev/sdad:1-34                                                                              0
+  [lv_rimage_5] Iwi-aor--- linear   /dev/sdae:1-34                                                                              0
+  [lv_rimage_6] Iwi-aor-R- linear   /dev/sdaf:1-34                                                                              0
+  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
+  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
+  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
+  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
+  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
+  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
+  [lv_rmeta_6]  ewi-aor-R- linear   /dev/sdaf:0-0
+.fi
+
+The 's' in column 9 of the attribute field shows the RaidLV is still reshaping.
+The 'R' in the same column of the attribute field shows the freed image Sub LVs which will need removing once the reshaping finished.
+
+.nf
+# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV   Attr       Type     PE Ranges                                                                                DOff
+  lv   rwi-a-r-R- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 lv_rimage_6:0-33 8192
+.fi
+
+Now that the reshape is finished the 'R' atribute on the RaidLV shows images can be removed.
+
+.nf
+# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV   Attr       Type     PE Ranges                                                                                 DOff
+  lv   rwi-a-r-R- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ...  lv_rimage_5:0-33 lv_rimage_6:0-33 8192
+.fi
+
+This is achieved by repeating the command ("lvconvert --stripes 4 tb/lv" would be sufficient).
+
+.nf
+# lvconvert --stripes 4 --force -y tb/lv
+  Using default stripesize 64.00 KiB.
+  Logical volume tb/lv successfully converted.
+
+# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV            Attr       Type     PE Ranges                                                               DOff
+  lv            rwi-a-r--- raid6_nr lv_rimage_0:0-33 lv_rimage_1:0-33 lv_rimage_2:0-33 ... lv_rimage_5:0-33 8192
+  [lv_rimage_0] iwi-aor--- linear   /dev/sda:0-32                                                           8192
+  [lv_rimage_0] iwi-aor--- linear   /dev/sda:34-34
+  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:0-32                                                          8192
+  [lv_rimage_1] iwi-aor--- linear   /dev/sdaa:34-34
+  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:0-32                                                          8192
+  [lv_rimage_2] iwi-aor--- linear   /dev/sdab:34-34
+  [lv_rimage_3] iwi-aor--- linear   /dev/sdac:1-34                                                          8192
+  [lv_rimage_4] iwi-aor--- linear   /dev/sdad:1-34                                                          8192
+  [lv_rimage_5] iwi-aor--- linear   /dev/sdae:1-34                                                          8192
+  [lv_rmeta_0]  ewi-aor--- linear   /dev/sda:33-33
+  [lv_rmeta_1]  ewi-aor--- linear   /dev/sdaa:33-33
+  [lv_rmeta_2]  ewi-aor--- linear   /dev/sdab:33-33
+  [lv_rmeta_3]  ewi-aor--- linear   /dev/sdac:0-0
+  [lv_rmeta_4]  ewi-aor--- linear   /dev/sdad:0-0
+  [lv_rmeta_5]  ewi-aor--- linear   /dev/sdae:0-0
+
+# lvs -a -o lv_name,attr,segtype,reshapelen tb
+  LV            Attr       Type     RSize
+  lv            rwi-a-r--- raid6_nr 24.00m
+  [lv_rimage_0] iwi-aor--- linear    4.00m
+  [lv_rimage_0] iwi-aor--- linear
+  [lv_rimage_1] iwi-aor--- linear    4.00m
+  [lv_rimage_1] iwi-aor--- linear
+  [lv_rimage_2] iwi-aor--- linear    4.00m
+  [lv_rimage_2] iwi-aor--- linear
+  [lv_rimage_3] iwi-aor--- linear    4.00m
+  [lv_rimage_4] iwi-aor--- linear    4.00m
+  [lv_rimage_5] iwi-aor--- linear    4.00m
+  [lv_rmeta_0]  ewi-aor--- linear
+  [lv_rmeta_1]  ewi-aor--- linear
+  [lv_rmeta_2]  ewi-aor--- linear
+  [lv_rmeta_3]  ewi-aor--- linear
+  [lv_rmeta_4]  ewi-aor--- linear
+  [lv_rmeta_5]  ewi-aor--- linear
+.fi
+
+If the reshape space shall be removed any lvconvert command not changing the layout can be used:
+
+.nf
+# lvconvert --stripes 4 tb/lv
+  Using default stripesize 64.00 KiB.
+  No change in RAID LV tb/lv layout, freeing reshape space.
+  Logical volume tb/lv successfully converted.
+
+# lvs -a -o lv_name,attr,segtype,reshapelen tb
+  LV            Attr       Type     RSize
+  lv            rwi-a-r--- raid6_nr    0
+  [lv_rimage_0] iwi-aor--- linear      0
+  [lv_rimage_0] iwi-aor--- linear
+  [lv_rimage_1] iwi-aor--- linear      0
+  [lv_rimage_1] iwi-aor--- linear
+  [lv_rimage_2] iwi-aor--- linear      0
+  [lv_rimage_2] iwi-aor--- linear
+  [lv_rimage_3] iwi-aor--- linear      0
+  [lv_rimage_4] iwi-aor--- linear      0
+  [lv_rimage_5] iwi-aor--- linear      0
+  [lv_rmeta_0]  ewi-aor--- linear
+  [lv_rmeta_1]  ewi-aor--- linear
+  [lv_rmeta_2]  ewi-aor--- linear
+  [lv_rmeta_3]  ewi-aor--- linear
+  [lv_rmeta_4]  ewi-aor--- linear
+  [lv_rmeta_5]  ewi-aor--- linear
+.fi
+
+In case the RaidLV should be converted to striped:
+
+.nf
+# lvconvert --type striped tb/lv
+  Unable to convert LV tb/lv from raid6_nr to striped.
+  Converting tb/lv from raid6_nr is directly possible to the following layouts:
+    raid6_nc
+    raid6_zr
+    raid6_la_6
+    raid6_ls_6
+    raid6_ra_6
+    raid6_rs_6
+    raid6_n_6
+
+# lvconvert --type raid6_n_6
+  Using default stripesize 64.00 KiB.
+  Converting raid6_nr LV tb/lv to raid6_n_6.
+Are you sure you want to convert raid6_nr LV tb/lv? [y/n]: y
+  Logical volume tb/lv successfully converted.
+
+# lvconvert -y --type striped tb/lv
+  Logical volume tb/lv successfully converted.
+
+[root at vm46 ~]# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV   Attr       Type    PE Ranges                                                      DOff
+  lv   -wi-a----- striped /dev/sda:2-32 /dev/sdaa:2-32 /dev/sdab:2-32 /dev/sdac:3-33
+  lv   -wi-a----- striped /dev/sda:34-35 /dev/sdaa:34-35 /dev/sdab:34-35 /dev/sdac:34-35
+.fi
+
+From striped we can convert to raid10
+
+.nf
+# lvconvert -y --type raid10 tb/lv
+  Using default stripesize 64.00 KiB.
+  Logical volume tb/lv successfully converted.
+
+# lvs -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  LV   Attr       Type   PE Ranges                                                                                   DOff
+  lv   rwi-a-r--- raid10 lv_rimage_0:0-32 lv_rimage_4:0-32 lv_rimage_1:0-32 ... lv_rimage_3:0-32 lv_rimage_7:0-32    0
+
+# lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset tb
+  WARNING: Cannot find matching striped segment for tb/lv_rimage_3.
+  LV            Attr       Type   PE Ranges                                                                                   DOff
+  lv            rwi-a-r--- raid10 lv_rimage_0:0-32 lv_rimage_4:0-32 lv_rimage_1:0-32 ... lv_rimage_3:0-32 lv_rimage_7:0-32    0
+  [lv_rimage_0] iwi-aor--- linear /dev/sda:2-32                                                                                                                              0
+  [lv_rimage_0] iwi-aor--- linear /dev/sda:34-35
+  [lv_rimage_1] iwi-aor--- linear /dev/sdaa:2-32                                                                                                                             0
+  [lv_rimage_1] iwi-aor--- linear /dev/sdaa:34-35
+  [lv_rimage_2] iwi-aor--- linear /dev/sdab:2-32                                                                                                                             0
+  [lv_rimage_2] iwi-aor--- linear /dev/sdab:34-35
+  [lv_rimage_3] iwi-XXr--- linear /dev/sdac:3-35                                                                                                                             0
+  [lv_rimage_4] iwi-aor--- linear /dev/sdad:1-33                                                                                                                             0
+  [lv_rimage_5] iwi-aor--- linear /dev/sdae:1-33                                                                                                                             0
+  [lv_rimage_6] iwi-aor--- linear /dev/sdaf:1-33                                                                                                                             0
+  [lv_rimage_7] iwi-aor--- linear /dev/sdag:1-33                                                                                                                             0
+  [lv_rmeta_0]  ewi-aor--- linear /dev/sda:0-0
+  [lv_rmeta_1]  ewi-aor--- linear /dev/sdaa:0-0
+  [lv_rmeta_2]  ewi-aor--- linear /dev/sdab:0-0
+  [lv_rmeta_3]  ewi-aor--- linear /dev/sdac:0-0
+  [lv_rmeta_4]  ewi-aor--- linear /dev/sdad:0-0
+  [lv_rmeta_5]  ewi-aor--- linear /dev/sdae:0-0
+  [lv_rmeta_6]  ewi-aor--- linear /dev/sdaf:0-0
+  [lv_rmeta_7]  ewi-aor--- linear /dev/sdag:0-0
+.fi
+
+raid10 allows to add stripes but can't remove them.
+
+
+A more elaborate example to convert from linear to striped
+with interim conversions to raid1 then raid5 followed
+by restripe (4 steps).
+
+We start with the linear LV.
+
+.nf
+# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
+  LV   Attr       LSize   Type   Cpy%Sync #DStr Stripe RSize Devices
+  lv   -wi-a----- 128.00m linear              1     0        /dev/sda(0)
+.fi
+
+Then convert it to a 2-way raid1.
+
+.nf
+# lvconvert -m1 vg/lv
+  Logical volume vg/lv successfully converted.
+
+# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
+  LV            Attr       LSize   Type   Cpy%Sync #DStr Stripe RSize Devices
+  lv            rwi-a-r--- 128.00m raid1  100.00       2     0        lv_rimage_0(0),lv_rimage_1(0)
+  [lv_rimage_0] iwi-aor--- 128.00m linear              1     0        /dev/sda(0)
+  [lv_rimage_1] iwi-aor--- 128.00m linear              1     0        /dev/sdhx(1)
+  [lv_rmeta_0]  ewi-aor---   4.00m linear              1     0        /dev/sda(32)
+  [lv_rmeta_1]  ewi-aor---   4.00m linear              1     0        /dev/sdhx(0)
+.fi
+
+Once the raid1 LV is fully synchronized we convert it to raid5_n (only 2-way raid1
+LVs can be converted to raid5).  We select raid5_n here because it has dedicated parity
+SubLVs at the end and can be converted to striped directly without any additional
+conversion.
+
+.nf
+# lvconvert -y --ty raid5_n vg/lv
+  Using default stripesize 64.00 KiB.
+  Logical volume vg/lv successfully converted.
+
+# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
+  LV            Attr       LSize   Type    Cpy%Sync #DStr Stripe RSize Devices
+  lv            rwi-a-r--- 128.00m raid5_n 100.00       1 64.00k     0 lv_rimage_0(0),lv_rimage_1(0)
+  [lv_rimage_0] iwi-aor--- 128.00m linear               1     0      0 /dev/sda(0)
+  [lv_rimage_1] iwi-aor--- 128.00m linear               1     0      0 /dev/sdhx(1)
+  [lv_rmeta_0]  ewi-aor---   4.00m linear               1     0        /dev/sda(32)
+  [lv_rmeta_1]  ewi-aor---   4.00m linear               1     0        /dev/sdhx(0)
+.fi
+
+Now we'll change the number of data stripes from 1 to 5 and request 128K stripe size
+in one command.  This will grow the size of the LV by a factor of 5 (we add 4 data stripes
+to the one given).  That additonal space can be used by e.g. growing any contained filesystem
+or the LV can be reduced in size after the reshaping conversion has finished.
+
+.nf
+# lvconvert --yes --stripesize 128k --stripes 5 vg/lv
+  Converting stripesize 64.00 KiB of raid5_n LV vg/lv to 128.00 KiB.
+  WARNING: Adding stripes to active logical volume vg/lv will grow it from 32 to 160 extents!
+  Run "lvresize -l32 vg/lv" to shrink it or use the additional capacity.
+  Logical volume vg/lv successfully converted.
+
+# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg
+  LV            Attr       LSize   Type    Cpy%Sync #DStr Stripe  RSize Devices
+  lv            rwi-a-r--- 640.00m raid5_n 100.00       5 128.00k     6 lv_rimage_0(0),lv_rimage_1(0),lv_rimage_2(0),lv_rimage_3(0),lv_rimage_4(0),lv_rimage_5(0)
+  [lv_rimage_0] iwi-aor--- 132.00m linear               1      0      1 /dev/sda(33)
+  [lv_rimage_0] iwi-aor--- 132.00m linear               1      0        /dev/sda(0)
+  [lv_rimage_1] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhx(33)
+  [lv_rimage_1] iwi-aor--- 132.00m linear               1      0        /dev/sdhx(1)
+  [lv_rimage_2] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhw(33)
+  [lv_rimage_2] iwi-aor--- 132.00m linear               1      0        /dev/sdhw(1)
+  [lv_rimage_3] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhv(33)
+  [lv_rimage_3] iwi-aor--- 132.00m linear               1      0        /dev/sdhv(1)
+  [lv_rimage_4] iwi-aor--- 132.00m linear               1      0      1 /dev/sdhu(33)
+  [lv_rimage_4] iwi-aor--- 132.00m linear               1      0        /dev/sdhu(1)
+  [lv_rimage_5] iwi-aor--- 132.00m linear               1      0      1 /dev/sdht(33)
+  [lv_rimage_5] iwi-aor--- 132.00m linear               1      0        /dev/sdht(1)
+  [lv_rmeta_0]  ewi-aor---   4.00m linear               1      0        /dev/sda(32)
+  [lv_rmeta_1]  ewi-aor---   4.00m linear               1      0        /dev/sdhx(0)
+  [lv_rmeta_2]  ewi-aor---   4.00m linear               1      0        /dev/sdhw(0)
+  [lv_rmeta_3]  ewi-aor---   4.00m linear               1      0        /dev/sdhv(0)
+  [lv_rmeta_4]  ewi-aor---   4.00m linear               1      0        /dev/sdhu(0)
+  [lv_rmeta_5]  ewi-aor---   4.00m linear               1      0        /dev/sdht(0)
+.fi
+
+Once the conversion has finished we can can convert to striped.
+
+.nf
+[root at vm46 ~]# lvconvert -y --ty striped vg/lv
+  Logical volume vg/lv successfully converted.
+
+[root at vm46 ~]# lvs -aoname,attr,size,segtype,syncpercent,datastripes,stripesize,reshapelenle,devices vg|sed 's/  *$//'
+  LV   Attr       LSize   Type    Cpy%Sync #DStr Stripe  RSize Devices
+  lv   -wi-a----- 640.00m striped              5 128.00k       /dev/sda(33),/dev/sdhx(33),/dev/sdhw(33),/dev/sdhv(33),/dev/sdhu(33)
+  lv   -wi-a----- 640.00m striped              5 128.00k       /dev/sda(0),/dev/sdhx(1),/dev/sdhw(1),/dev/sdhv(1),/dev/sdhu(1)
+.fi
+
+Reversing these steps wil convert a given striped LV to linear.
+
+Mind the fact that stripes are removed thus the capacity of the RaidLV will shrink.
+
+"lvconvert --stripes 1 vg/lv" for converting to 1 stripe will inform upfront about
+the reduced size to allow for resizing the content or growing the RaidLV before
+actually converting to 1 stripe.  The \fB\-\-force\fP option is needed to
+allow stripe removing conversions to prevent data loss.
+
+Of course any interim step can be the intended last one (e.g. striped -> raid1).
+..
+
+.SH RAID5 Variants
+
+raid5_ls
+.br
+\[bu]
+RAID5 left symmetric
+.br
+\[bu]
+Rotating parity N with data restart
+
+raid5_la
+.br
+\[bu]
+RAID5 left symmetric
+.br
+\[bu]
+Rotating parity N with data continuation
+
+raid5_rs
+.br
+\[bu]
+RAID5 right symmetric
+.br
+\[bu]
+Rotating parity 0 with data restart
+
+raid5_ra
+.br
+\[bu]
+RAID5 right asymmetric
+.br
+\[bu]
+Rotating parity 0 with data continuation
+
+raid5_n
+.br
+\[bu]
+RAID5 parity n
+.br
+\[bu]
+Dedicated parity device n used for striped/raid0 conversions
+\[bu]
+Used for RAID Takeover
+
+.SH RAID6 Variants
+
+raid6
+.br
+\[bu]
+RAID6 zero restart (aka left symmetric)
+.br
+\[bu]
+Rotating parity 0 with data restart
+.br
+\[bu]
+Same as raid6_zr
+
+raid6_zr
+.br
+\[bu]
+RAID6 zero restart (aka left symmetric)
+.br
+\[bu]
+Rotating parity 0 with data restart
+
+raid6_nr
+.br
+\[bu]
+RAID6 N restart (aka right symmetric)
+.br
+\[bu]
+Rotating parity N with data restart
+
+raid6_nc
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Rotating parity N with data continuation
+
+raid6_n_6
+.br
+\[bu]
+RAID6 last parity devices
+.br
+\[bu]
+Dedicated last parity devices used for striped/raid0 conversions
+\[bu]
+Used for RAID Takeover
+
+raid6_{ls,rs,la,ra}_6
+.br
+\[bu]
+RAID6 last parity device
+.br
+\[bu]
+Dedicated last parity device used for conversions from/to raid5_{ls,rs,la,ra}
+
+raid6_n_6
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Fixed P-Syndrome N-1 and Q-Syndrome N with striped data
+.br
+\[bu]
+Used for RAID Takeover
+
+raid6_ls_6
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Same as raid5_ls for N-1 disks with fixed Q-Syndrome N
+.br
+\[bu]
+Used for RAID Takeover
+
+raid6_la_6
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Same as raid5_la for N-1 disks with fixed Q-Syndrome N
+.br
+\[bu]
+Used forRAID Takeover
+
+raid6_rs_6
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Same as raid5_rs for N-1 disks with fixed Q-Syndrome N
+.br
+\[bu]
+Used for RAID Takeover
+
+raid6_ra_6
+.br
+\[bu]
+RAID6 N continue
+.br
+\[bu]
+Same as raid5_ra for N-1 disks with fixed Q-Syndrome N
+.br
+\[bu]
+Used for RAID Takeover
+
+
+.ig
+.SH RAID Duplication
+
+RAID LV conversion (takeover or reshaping) can be done out\-of\-place by
+copying the LV data onto new devices while changing the RAID properties.
+Copying avoids modifying the original LV but requires additional devices.
+Once the LV data has been copied/converted onto the new devices, there are
+multiple options:
+
+1. The RAID LV can be switched over to run from just the new devices, and
+the original copy of the data removed.  The converted LV then has the new
+RAID properties, and exists on new devices.  The old devices holding the
+original data can be removed or reused.
+
+2. The new copy of the data can be dropped, leaving the original RAID LV
+unchanged and using its original devices.
+
+3. The new copy of the data can be separated and used as a new independent
+LV, leaving the original RAID LV unchanged on its original devices.
+
+The command to start duplication is:
+
+.B lvconvert \-\-type
+.I RaidLevel
+[\fB\-\-stripes\fP \fINumber\fP \fB\-\-stripesize\fP \fISize\fP]
+.RS
+.B \-\-duplicate
+.IR VG / LV
+[\fIPVs\fP]
+.RE
+
+.HP
+.B \-\-duplicate
+.br
+Specifies that the LV conversion should be done out\-of\-place, copying
+LV data to new devices while converting.
+
+.HP
+.BR \-\-type , \-\-stripes , \-\-stripesize
+.br
+Specifies the RAID properties to use when creating the copy.
+
+.P
+\fIPVs\fP specifies the new devices to use.
+
+The steps in the duplication process:
+
+.IP \(bu 3
+LVM creates a new LV on new devices using the specified RAID properties
+(type, stripes, etc) and optionally specified devices.
+
+.IP \(bu 3
+LVM changes the visible RAID LV to type raid1, making the original LV the
+first raid1 image (SubLV 0), and the new LV the second raid1 image
+(SubLV 1).
+
+.IP \(bu 3
+The RAID1 synchronization process copies data from the original LV
+image (SubLV 0) to the new LV image (SubLV 1).
+
+.IP \(bu 3
+When synchronization is complete, the original and new LVs are
+mirror images of each other and can be separated.
+
+.P
+
+The duplication process retains both the original and new LVs (both
+SubLVs) until an explicit unduplicate command is run to separate them.  The
+unduplicate command specifies if the original LV should use the old
+devices (SubLV 0) or the new devices (SubLV 1).
+
+To make the RAID LV use the data on the old devices, and drop the copy on
+the new devices, specify the name of SubLV 0 (suffix _dup_0):
+
+.B lvconvert \-\-unduplicate
+.BI \-\-name
+.IB LV _dup_0
+.IR VG / LV
+
+To make the RAID LV use the data copy on the new devices, and drop the old
+devices, specify the name of SubLV 1 (suffix _dup_1):
+
+.B lvconvert \-\-unduplicate
+.BI \-\-name
+.IB LV _dup_1
+.IR VG / LV
+
+FIXME: To make the LV use the data on the original devices, but keep the
+data copy as a new LV, ...
+
+FIXME: include how splitmirrors can be used.
+
+
+.SH RAID1E
+
+TODO
+..
+
+.SH History
+
+The 2.6.38-rc1 version of the Linux kernel introduced a device-mapper
+target to interface with the software RAID (MD) personalities.  This
+provided device-mapper with RAID 4/5/6 capabilities and a larger
+development community.  Later, support for RAID1, RAID10, and RAID1E (RAID
+10 variants) were added.  Support for these new kernel RAID targets was
+added to LVM version 2.02.87.  The capabilities of the LVM \fBraid1\fP
+type have surpassed the old \fBmirror\fP type.  raid1 is now recommended
+instead of mirror.  raid1 became the default for mirroring in LVM version
+2.02.100.
+
diff --git a/man/lvmreport.7.in b/man/lvmreport.7.in
deleted file mode 100644
index 7a26401..0000000
--- a/man/lvmreport.7.in
+++ /dev/null
@@ -1,1810 +0,0 @@
-.TH "LVMREPORT" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmreport \(em LVM reporting and related features
-
-.SH DESCRIPTION
-LVM uses single reporting infrastructure that sets standard on LVM command's
-output and it provides wide range of configuration settings and command line
-options to customize report and filter the report's output.
-
-.SH Categorization based on reporting facility
-
-Based on functionality, commands which make use of the reporting infrastructure
-are divided in two groups:
-.IP \fBReport-oriented commands\fP
-These commands inform about current LVM state and their primary role is to
-display this information in compendious way. To make a distinction, we will
-name this report as \fBmain report\fP. The set of report-only commands include:
-pvs, vgs, lvs, pvdisplay, vgdisplay, lvdisplay, lvm devtypes, lvm fullreport.
-For further information about main report, see \fBmain report specifics\fP.
-.IP \fBProcessing-oriented commands\fP
-These commands are responsible for changing LVM state and they do not contain
-any main report as identified for report-oriented commands, they only perform
-some kind of processing. The set of processing-oriented commands includes:
-pvcreate, vgcreate, lvcreate, pvchange, vgchange, lvchange, pvremove, vgremove,
-lvremove, pvresize, vgextend, vgreduce, lvextend, lvreduce, lvresize, lvrename,
-pvscan, vgscan, lvscan, pvmove, vgcfgbackup, vgck, vgconvert, vgexport,
-vgimport, vgmknodes.
-
-.RE
-If enabled, so called \fBlog report\fP is either displayed solely
-(for processing-oriented commands) or in addition to main report
-(for report-oriented commands). The log report contains a log of operations,
-messages and per-object status with complete object identification collected
-during LVM command execution. See \fBlog report specifics\fP for more
-information about this report type.
-
-
-.SH Terms
-
-When describing reporting functionality and features in this text, we will
-use terms \fBrow\fP and \fBcolumn\fP. By row we mean series of values reported
-for single entity (for example single PV, VG or LV). Each value from the row
-then belongs to a column of certain type. The columns have \fBcolumn headings\fP
-which are short descriptions for the columns. The columns are referenced by
-\fBcolumn names\fP. Please note that this text is also using term \fBfield\fP
-interchangeably with the term \fBcolumn\fP. Most of the time the term columns
-is abbreviated as \fBcol\fP in configuration.
-
-.SH Common report configuration settings and command line options
-
-There are common configuration settings and command line options which apply
-to both \fBmain report\fP and \fBlog report\fP. Following lists contain all
-of them, separated into groups based on their use.
-
-.RS
-\fBCommon configuration settings:\fP
-
-.RS
-
-.IP \[bu] 3
-Changing report output format, composition and other output modifiers:
-.RS
-.IP - 3
-global/units
-.IP - 3
-global/suffix
-.IP - 3
-report/output_format
-.IP - 3
-report/compact_output
-.IP - 3
-report/compact_output_cols
-.IP - 3
-report/aligned
-.IP - 3
-report/headings
-.IP - 3
-report/separator
-.IP - 3
-report/list_item_separator
-.IP - 3
-report/prefixes
-.IP - 3
-report/quoted
-.IP - 3
-report/columns_as_rows
-.IP - 3
-report/binary_values_as_numeric
-.IP - 3
-report/time_format
-.IP - 3
-report/mark_hidden_devices
-.IP - 3
-report/two_word_unknown_device
-.RE
-
-.IP \[bu] 3
-Special settings
-.RS
-.IP - 3
-report/buffered
-.RE
-
-.RE
-
-.RE
-
-This document does not describe these settings in more detail - if you need
-detailed information, including values which are accepted for the settings,
-please run \fBlvmconfig --type default --withcomments <setting>\fP. There are
-more configuration settings in addition to the common set listed above, but
-they are specific to either \fBmain report\fP or \fBlog report\fP,
-see \fBmain report specifics\fP and \fBlog report specifics\fP for
-these settings. Besides configuring reports globally by using configuration
-settings, there are also command line options you can use to extend, override
-or further specify the report configuration.
-
-.RS
-\fBCommon command line options:\fP
-
-.RS
-
-.IP \[bu] 3
-Definition of the set set of fields to use
-.RS
-.IP - 3
---options|-o FieldSet
-.br
-Field set to use. See \fBmain report specifics\fP and
-\fBlog report specifics\fP for information about field sets configured with
-global configuratin settings that this option overrides.
-.IP - 3
---options|-o+ FieldSet
-.br
-Fields to include to current field set. See \fBmain report specifics\fP\ and
-\fBlog report specifics\fP for information about field sets configured with
-global configuration settings that this option extends.
-.IP - 3
---options|-o- FieldSet
-.br
-Fields to exclude from current field set. See \fBmain report specifics\fP and
-\fBlog report specifics\fP for information about field sets configured with
-global configuration settings that this option reduces.
-.IP - 3
---options|-o# FieldSet
-.br
-Compaction of unused fields. Overrides report/compact_output_cols configuration
-setting.
-.RE
-
-.IP \[bu] 3
-Sorting
-.RS
-.IP - 3
---sort|-O+ FieldSet
-.br
-Fields to sort by in ascending order. See \fBmain report specifics\fP and
-\fBlog report specifics\fP for information about field sets configured with
-global configuration settings that this option overrides.
-.IP - 3
---sort|-O- FieldSet
-.br
-Fields to sort by in descending order. See \fBmain report specifics\fP and
-\fBlog report specifics\fP for information about fields sets configured with
-global configuration settings that this options overrides.
-.RE
-
-.IP \[bu] 3
-Selection
-.RS
-.IP - 3
---select|-S Selection
-.br
-Define selection criteria for report output. For \fBlog report\fP, this also
-overrides log/command_log_selection configuration setting, see also
-\fBlog report specifics\fP.
-.RE
-
-.IP \[bu] 3
-Changing output format and composition
-.RS
-.IP - 3
---reportformat
-.br
-Overrides report/output_format configuration setting.
-.IP - 3
---aligned
-.br
-Overrides report/aligned configuration setting.
-.IP - 3
---binary
-.br
-Overrides report/binary_values_as_numeric configuration setting.
-.IP - 3
---nameprefixes
-.br
-Overrides report/prefixes configuration setting.
-.IP - 3
---noheadings
-.br
-Overrides report/noheadings configuration setting.
-.IP - 3
---nosuffix
-.br
-Overrides global/suffix configuration setting.
-.IP - 3
---rows
-.br
-Overrides report/columns_as_rows configuration setting.
-.IP - 3
---separator
-.br
-Overrides report/separator configuration setting.
-.IP - 3
---units
-.br
-Overrides global/units configuration setting.
-.IP - 3
---unquoted
-.br
-Overrides report/quoted configuration setting.
-.RE
-
-.IP \[bu] 3
-Special options
-.RS
-.IP - 3
---configreport \fBReportName\fP
-.br
-This defines the \fBReportName\fP for which any subsequent -o|--columns,
--O|--sort or -S|--select applies to. See also \fBmain report specifics\fP
-and \fBlog report specifics\fP for possible \fBReportName\fP values.
-.IP - 3
---logonly
-.br
-When an LVM command contains both \fBmain report\fP and \fBlog report\fP,
-this option suppresses the \fBmain report\fP output and it causes the
-\fBlog report\fP output to be displayed only.
-.IP - 3
---unbuffered
-.br
-Overrides report/bufffered configuration setting.
-.RE
-
-.RE
-
-.RE
-
-The \fBFieldSet\fP mentioned in the lists above is a set of field names where
-each field name is delimited by "," character. Field set definition, sorting
-and selection may be repeated on command line (-o+/-o- includes/excludes fields
-to/from current list, for all the other repeatable options, the last value
-typed for the option on the command line is used). The \fBSelection\fP
-is a string with \fBselection criteria\fP, see also \fBSelection\fP paragraph
-below for more information about constructing these criteria.
-
-
-.SH Main report specifics
-
-The \fBmain report\fP currently encompasses these distinct subtypes, referenced
-by their name - \fBReportName\fP as listed below. The command in parenthesis is
-representative command that uses the main report subtype by default.
-Each subtype has its own configuration setting for global field set definition
-as well as sort field definition (listed below each individual \fBReportName\fP):
-
-.RS
-
-.IP \[bu] 3
-\fBpv\fP representing report about Physical Volumes (\fBpvs\fP)
-.RS
-.IP - 3
-report/pvs_cols
-.IP - 3
-report/pvs_sort
-.RE
-
-.IP \[bu] 3
-\fBpvseg\fP representing report about Physical Volume Segments (\fBpvs --segments\fP)
-.RS
-.IP - 3
-report/pvseg_cols
-.IP - 3
-report/pvseg_sort
-.RE
-
-.IP \[bu] 3
-\fBvg\fP representing report about Volume Groups (\fBvgs\fP)
-.RS
-.IP - 3
-report/vgs_cols
-.IP - 3
-report/vgs_sort
-.RE
-
-.IP \[bu] 3
-\fBlv\fP representing report about Logical Volumes (\fBlvs\fP)
-.RS
-.IP - 3
-report/lvs_cols
-.IP - 3
-report/lvs_sort
-.RE
-
-.IP \[bu] 3
-\fBseg\fP representing report about Logical Volume Segments (\fBlvs --segments\fP)
-.RS
-.IP - 3
-report/segs_cols
-.IP - 3
-report/segs_sort
-.RE
-
-.IP \[bu] 3
-\fBfull\fP representing report combining all of the above as a whole (\fBlvm fullreport\fP)
-.RS
-.IP - 3
-report/pvs_cols_full
-.IP - 3
-report/pvs_sort_full
-.IP - 3
-report/pvsegs_cols_full
-.IP - 3
-report/pvseg_sort_full
-.IP - 3
-report/vgs_cols_full
-.IP - 3
-report/vgs_sort_full
-.IP - 3
-report/lvs_cols_full
-.IP - 3
-report/lvs_sort_full
-.IP - 3
-report/segs_cols_full
-.IP - 3
-report/segs_sort_full
-.RE
-
-.IP \[bu] 3
-\fBdevtype\fP representing report about device types (\fBlvm devtypes\fP)
-.RS
-.IP - 3
-report/devtypes_cols
-.IP - 3
-report/devtypes_sort
-.RE
-
-.RE
-
-Use \fBpvs, vgs, lvs -o help\fP or \fBlvm devtypes -o help\fP to get complete
-list of fields that you can use for main report. The list of fields in the
-help output is separated in groups based on which report type they belong to.
-Note that LVM can change final report type used if fields from different
-groups are combined together. Some of these combinations are not allowed in
-which case LVM will issue an error.
-
-For all main report subtypes except \fBfull\fP, it's not necessary to use
-\fB--configreport ReportName\fP to denote which report any subsequent
-\fB-o, -O or -S\fP option applies to as they always apply to the single main
-report type. Currently, \fBlvm fullreport\fP is the only command that
-includes more than one \fBmain report\fP subtype. Therefore, the --configreport
-is particularly suitable for the full report if you need to configure each of
-its subreports in a different way.
-
-
-.SH Log report specifics
-
-You can enable log report with \fBlog/report_command_log\fP configuration
-setting - this functionality is disabled by default. The \fBlog report\fP
-contains a log collected during LVM command execution and then the log is
-displayed just like any other report known from main report. There is only one
-log report subtype as shown below together with related configuration settings
-for fields, sorting and selection:
-
-.RS
-
-.IP \[bu] 3
-\fBlog\fP representing log report
-.RS
-.IP - 3
-log/command_log_cols
-.IP - 3
-log/command_log_sort
-.IP - 3
-log/command_log_selection
-.RE
-
-.RE
-
-You always need to use \fB--configreport log\fP together with \fB-o|--options,
--O|--sort or -S|--selection\fP to override configuration settings directly on
-command line for \fBlog report\fP. When compared to \fBmain report\fP, in
-addition to usual configuration settings for report fields and sorting, the
-\fBlog report\fP has also configuration option for selection -
-\fBreport/command_log_selection\fP. This configuration setting is provided for
-convenience so it's not necessary to use \fB-S|--select\fP on command line
-each time an LVM command is executed and we need the same selection criteria
-to be applied for \fBlog report\fP. Default selection criteria used for
-\fBlog report\fP are
-\fBlog/command_log_selection="!(log_type=status && message=success)"\fP.
-This means that, by default, \fBlog report\fP doesn't display status messages
-about successful operation and it displays only rows with error, warning,
-print-type messages and messages about failure states (for more information,
-see \fBlog report content\fP below).
-
-.B Log report coverage
-.br
-Currently, when running LVM commands directly (not in LVM shell), the log
-report covers command's \fBprocessing stage\fP which is the moment when LVM
-entities are iterated and processed one by one. It does not cover any command
-initialization nor command finalization stage. If there is any message issued
-out of log report's coverage range, such message goes directly to output,
-bypassing the \fBlog report\fP. By default, that is \fBstandard error output\fP
-for error and warning messages and \fBstandard output\fP for common print-like
-messages.
-
-When running LVM commands in \fBLVM shell\fP, the log report covers the whole
-LVM command's execution, including command's \fBprocessing\fP as well as
-\fBinitialization\fP and \fBfinalization stage\fP. So from this point of view,
-the log report coverage is complete for executed LVM commands. Note that there
-are still a few moments when LVM shell needs to initialize itself before it
-even enters the main loop in which it executes LVM commands. Also, there is a
-moment when \fBLVM shell\fP needs to prepare \fBlog report\fP properly for
-next command executed in the shell and then, after the command's run, the shell
-needs to display the log report for that recently executed command. If there
-is a failure or any other message issued during this time, the LVM will bypass
-\fBlog report\fP and display messages on output directly.
-
-For these reasons and for completeness, it's not possible to rely fully on
-\fBlog report\fP as the only indicator of LVM command's status and the only
-place where all messages issued during LVM command execution are collected.
-You always need to check whether the command has not failed out of log
-report's range by checking the non-report output too.
-
-To help with this, LVM can separate output which you can then redirect to
-any \fBcustom file descriptor\fP that you prepare before running an LVM
-command or LVM shell and then you make LVM to use these file descriptors
-for different kinds of output by defining environment variables with file
-descriptor numbers. See also \fBLVM_OUT_FD\fP, \fBLVM_ERR_FD\fP and
-\fBLVM_REPORT_FD\fP environment variable description in \fBlvm\fP(8)
-man page.
-
-Also note that, by default, reports use the same file descriptor as
-common print-like messages, which is \fBstandard output\fP. If you plan to
-use \fBlog report\fP in your scripts or any external tool, you should use
-\fBLVM_OUT_FD\fP, \fBLVM_ERR_FD\fP and \fBLVM_REPORT_FD\fP to separate all
-output types to different file descriptors. For example, with bash, that
-would be:
-
-.RS
-LVM_OUT_FD=3 LVM_ERR_FD=4 LVM_REPORT_FD=5 <lvm command> 3>out_file 4>err_file 5>report_file
-.RE
-
-Where the <lvm_command> is either direct LVM command or LVM shell.
-You can collect all three types of output in particular files then.
-
-.B Log report content
-.br
-Each item in the log report consists of these set of fields providing various
-information:
-
-.RS
-
-.IP \[bu] 3
-Basic information (mandatory):
-.RS
-.IP - 3
-log_seq_num
-.br
-Item sequence number. The sequence number is unique for each log item and it
-increases in the order of the log items as they appeared during LVM command
-execution.
-
-.IP - 3
-log_type
-.br
-Type of log for the item. Currently, these types are used:
-.RS
-.IP
-\fBstatus\fP for any status information that is logged
-.IP
-\fBprint\fP for any common message printed while the log is collected
-.IP
-\fBerror\fP for any error message printed while the log is collected
-.IP
-\fBwarn\fP for any warning message printed while the log is collected
-.RE
-
-.IP - 3
-log_context
-.br
-Context of the log for the item. Currently, two contexts are identified:
-.RS
-.IP
-\fBshell\fP for the log collected in the outermost code before and after
-executing concrete LVM commands
-.IP
-\fBprocessing\fP for the log collected while processing LVM entities during
-LVM command execution
-.RE
-
-.RE
-
-.IP \[bu] 3
-Message (mandatory):
-.RS
-.IP - 3
-log_message
-.br
-Any message associated with current item. For \fBstatus\fP log type,
-the message contains either \fBsuccess\fP or \fBfailure\fP denoting
-current state. For \fBprint\fP, \fBerror\fP and \fBwarn\fP log types,
-the message contains the exact message of that type that got issued.
-.RE
-
-.IP \[bu] 3
-Object information (used only if applicable):
-.RS
-.IP - 3
-log_object_type field
-.br
-Type of the object processed. Currently, these object types are recognized:
-.RS
-.IP
-\fBcmd\fP for command as a whole
-.IP
-\fBorphan\fP for processing group of PVs not in any VG yet
-.IP
-\fBpv\fP for PV processing
-.IP
-\fBlabel\fP for direct PV label processing (without VG metadata)
-.IP
-\fBvg\fP for VG processing
-.IP
-\fBlv\fP for LV processing
-.RE
-
-.IP - 3
-log_object_name
-.br
-Name of the object processed.
-
-.IP - 3
-log_object_id
-.br
-ID of the object processed.
-
-.IP - 3
-log_object_group
-.br
-A group where the processed object belongs to.
-
-.IP - 3
-log_object_group_id
-.br
-An ID of a group where the processed object belongs to.
-.RE
-
-.IP \[bu] 3
-Numeric status (used only if applicable)
-.RS
-.IP - 3
-log_errno
-.br
-Error number associated with current item.
-.IP - 3
-log_ret_code
-.br
-Rreturn code associated with current item.
-.RE
-
-.RE
-
-
-You can also run \fB<lvm_command> --configreport log -o help\fP to
-to display complete list of fields that you may use for the \fBlog report\fP.
-
-.SH Selection
-Selection is used for a report to display only rows that match
-\fBselection criteria\fP. All rows are displayed with the additional
-\fBselected\fP field (\fB-o selected\fP) displaying 1 if the row matches the
-\fISelection\fP and 0 otherwise. The \fBselection criteria\fP are a set of
-\fBstatements\fP combined by \fBlogical and grouping operators\fP.
-The \fBstatement\fP consists of a \fBfield\fP name for which a set of valid
-\fBvalues\fP is defined using \fBcomparison operators\fP. For complete list
-of fields names that you can use in selection, see the output of
-\fB<lvm_command> -S help\fP. The help output also contains type of values
-that each field displays enclosed in brackets.
-
-.B List of operators recognized in selection criteria
-.RS
-.IP \[bu] 3
-Comparison operators (cmp_op)
-.RS
-.IP
-\fB=~\fP matching regular expression.
-.IP
-\fB!~\fP not matching regular expression.
-.IP
-\fB= \fP equal to.
-.IP
-\fB!=\fP not equal to.
-.IP
-\fB>=\fP greater than or equal to.
-.IP
-\fB> \fP greater than
-.IP
-\fB<=\fP less than or equal to.
-.IP
-\fB< \fP less than.
-.RE
-
-.IP \[bu] 3
-Binary logical operators (cmp_log)
-.RS
-.IP
-\fB&&\fP all fields must match
-.IP
-\fB, \fP all fields must match
-.IP
-\fB||\fP at least one field must match
-.IP
-\fB# \fP at least one field must match
-.RE
-
-.IP \[bu] 3
-Unary logical operators
-.RS
-.IP
-\fB! \fP logical negation
-.RE
-
-.IP \[bu] 3
-Grouping operators
-.RS
-.IP
-\fB( \fP left parenthesis
-.IP
-\fB) \fP right parenthesis
-.IP
-\fB[ \fP list start
-.IP
-\fB] \fP list end
-.IP
-\fB{ \fP list subset start
-.IP
-\fB} \fP list subset end
-.RE
-
-.RE
-
-.B Field types and selection operands
-.br
-Field type restricts the set of operators and values that you may use with
-the field when defining selection criteria. You can see field type for each
-field if you run \fB<lvm command> -S help\fP where you can find the type name
-enclosed in square brackets. Currently, LVM recognizes these field types in
-reports:
-
-.RS
-.IP \[bu] 3
-\fBstring\fP for set of characters (for each string field type, you can use
-either string or regular expression - regex for the value used in selection
-criteria)
-.IP \[bu] 3
-\fBstring list\fP for set of strings
-.IP \[bu] 3
-\fBnumber\fP for integer value
-.IP \[bu] 3
-\fBsize\fP for integer or floating point number with size unit suffix
-(see also \fBlvcreate\fP(8) man page and description for "-L|--size"
-option for the list of recognized suffixes)
-.IP \[bu] 3
-\fBpercent\fP for floating point number with or without "%" suffix
-(e.g. 50 or 50%)
-.IP \[bu] 3
-\fBtime\fP for time values
-.RE
-
-When using \fBstring list\fP in selection criteria, there are several ways
-how LVM can match string list fields from report, depending on what list
-grouping operator is used and what item separator is used within that set
-of items. Also, note that order of items does not matter here.
-
-.RS
-.IP \[bu] 3
-\fBmatching the set strictly\fP where all items must match - use [ ], e.g.
-["a","b","c"]
-.IP \[bu] 3
-\fBmatching a subset of the set\fP - use { } with "," or "&&" as item
-delimiter, e.g. {"a","b","c"}
-.IP \[bu] 3
-\fBmatching an intersection with the set\fP - use { } with "#" or
-"||" as item delimiter, e.g. {"a" || "b" || "c"}
-.RE
-
-When using \fBtime\fP in your selection criteria, LVM can recognize various
-time formats using standard, absolute or freeform expressions. For examples
-demonstrating time expressions in selection criteria, see \fBEXAMPLES\fP section.
-
-.RS
-
-.IP \[bu] 3
-\fBStandard time format\fP
-
-.RS
-.IP - 3
-date
-.RS
-.IP
-YYYY-MM-DD
-.IP
-YYYY-MM, auto DD=1
-.IP
-YYYY, auto MM=01 and DD=01
-.RE
-
-.IP - 3
-time
-.RS
-.IP
-hh:mm:ss
-.IP
-hh:mm, auto ss=0
-.IP
-hh, auto mm=0, auto ss=0
-.RE
-
-.IP - 3
-timezone
-.RS
-.IP
-+hh:mm or -hh:mm
-.IP
-+hh or -hh
-.RE
-
-The full date/time specification is YYYY-MM-DD hh:mm:ss. Users are able
-to leave date/time parts from right to left. Whenever these parts are left out,
-a range is assumed automatically with second granularity. For example:
-
-.RS
-.IP
-"2015-07-07 9:51" means range of "2015-07-07 9:51:00" - "2015-07-07 9:51:59".
-.IP
-"2015-07" means range of "2015-07-01 0:00:00" - "2015-07-31 23:59:59"
-.IP
-"2015" means range of "2015-01-01 0:00:00" - "2015-12-31 23:59:59"
-.RE
-
-.RE
-
-.IP \[bu] 3
-\fBAbsolute time format\fP
-
-Absolute time is defined as number of seconds since the Epoch
-(1970:01:01 00:00 +00:00).
-
-.RS
-.IP - 3
- at seconds
-.RE
-
-.IP \[bu] 3
-\fBFreeform time format\fP
-.RS
-.IP - 3
-weekday names ("Sunday" - "Saturday" or abbreviated as "Sun" - "Sat")
-.IP - 3
-labels for points in time ("noon", "midnight")
-.IP - 3
-labels for a day relative to current day ("today", "yesterday")
-.IP - 3
-points back in time with relative offset from today (N is a number)
-.RS
-.IP
-"N" "seconds" / "minutes" / "hours" / "days" / "weeks" / "years" "ago"
-.IP
-"N" "secs" / "mins" / "hrs" ... "ago"
-.IP
-"N" "s" / "m" / "h" ... "ago"
-.RE
-.IP - 3
-time specification either in hh:mm:ss format or with AM/PM suffixes
-.IP - 3
-month names ("January" - "December" or abbreviated as "Jan" - "Dec")
-.RE
-
-.RE
-
-.B Informal grammar specification
-.RS
-.IP
-.BR STATEMENT " = " column " cmp_op " VALUE " | " \%STATEMENT " log_op " STATEMENT " | " \%(STATEMENT) " | " \%!(STATEMENT)
-.IP
-.BR VALUE " = " [VALUE " log_op " VALUE]
-.br
-For list-based types: string list. Matches strictly.
-The log_op must always be of one type within the whole list value.
-.IP
-.BR VALUE " = " {VALUE " log_op " VALUE}
-.br
-For list-based types: string list. Matches a subset.
-The log_op must always be of one type within the whole list value.
-.IP
-.BR VALUE " = " value
-.br
-For scalar types: number, size, percent, string (or string regex).
-.RE
-
-.SH EXAMPLES
-
-.SS Basic usage
-
-We start our examples with default configuration - \fBlvmconfig\fP(8) is
-helpful command to display configuration settings which are currently used,
-including all configuration related to reporting. We will use it throughout
-examples below to display current configuration.
-
-.nf
-# lvmconfig --type full global/units global/suffix \\
-   report/output_format  report/compact_output \\
-   report/compact_output_cols report/aligned \\
-   report/headings report/separator \\
-   report/list_item_separator report/prefixes \\
-   report/quoted report/columns_as_rows \\
-   report/binary_values_as_numeric report/time_format \\
-   report/mark_hidden_devices report/two_word_unknown_device \\
-   report/buffered
-units="h"
-suffix=1
-output_format="basic"
-compact_output=0
-compact_output_cols=""
-aligned=1
-headings=1
-separator=" "
-list_item_separator=","
-prefixes=0
-quoted=1
-columns_as_rows=0
-binary_values_as_numeric=0
-time_format="%Y-%m-%d %T %z"
-mark_hidden_devices=1
-two_word_unknown_device=0
-buffered=1
-.fi
-
-Also, we start with simple LVM layout with two PVs (/dev/sda, /dev/sdb),
-VG (vg) and two LVs (lvol0 and lvol1) in the VG. We display all possible
-reports as single commands here, see also \fBpvs\fP(8), \fBvgs\fP(8),
-\fBlvs\fP(8) man pages for more information. The field set for each report
-type is configured with configuration settings as we already mentioned in
-\fBmain report specifics\fP section in this man page.
-
-.nf
-# lvmconfig --type full report/pvs_cols report/pvs_sort \\
-   report/pvsegs_cols report/pvsegs_sort report/vgs_cols \\
-   report/vgs_sort report/lvs_cols report/lvs_sort \\
-   report/segs_cols report/segs_sort
-pvs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
-pvs_sort="pv_name"
-pvsegs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,
-             pvseg_start,pvseg_size"
-pvsegs_sort="pv_name,pvseg_start"
-vgs_cols="vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
-vgs_sort="vg_name"
-lvs_cols="lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,move_pv,
-          mirror_log,copy_percent,convert_lv"
-lvs_sort="vg_name,lv_name"
-segs_cols="lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
-segs_sort="vg_name,lv_name,seg_start"
-.fi
-
-.nf
-# pvs
-  PV         VG Fmt  Attr PSize   PFree 
-  /dev/sda   vg lvm2 a--  100.00m 88.00m
-  /dev/sdb   vg lvm2 a--  100.00m 92.00m
-
-# pvs --segments
-  PV         VG Fmt  Attr PSize   PFree  Start SSize
-  /dev/sda   vg lvm2 a--  100.00m 88.00m     0     1
-  /dev/sda   vg lvm2 a--  100.00m 88.00m     1     1
-  /dev/sda   vg lvm2 a--  100.00m 88.00m     2     1
-  /dev/sda   vg lvm2 a--  100.00m 88.00m     3    22
-  /dev/sdb   vg lvm2 a--  100.00m 92.00m     0     1
-  /dev/sdb   vg lvm2 a--  100.00m 92.00m     1     1
-  /dev/sdb   vg lvm2 a--  100.00m 92.00m     2    23
-
-# vgs
-  VG #PV #LV #SN Attr   VSize   VFree  
-  vg   2   2   0 wz--n- 200.00m 180.00m
-
-# lvs
-  LV    VG Attr       LSize Pool Origin Move Log Cpy%Sync Convert
-  lvol0 vg -wi-a----- 4.00m                                    
-  lvol1 vg rwi-a-r--- 4.00m                      100.00          
-
-# lvs --segments
-  LV    VG Attr       #Str Type   SSize
-  lvol0 vg -wi-a-----    1 linear 4.00m
-  lvol1 vg rwi-a-r---    2 raid1  4.00m
-.fi
-
-We will use \fBreport/lvs_cols\fP and \fBreport/lvs_sort\fP configuration
-settings to define our own list of fields to use and to sort by that is
-different from defaults. You can do this for other reports in same manner
-with \fBreport/{pvs,pvseg,vgs,seg}_{cols,sort}\fP configuration settings.
-Also note that in the example below, we don't display the "lv_time" field
-even though we're using it for sorting - this is allowed.
-
-.nf
-# lvmconfig --type full report/lvs_cols report/lvs_sort
-lvs_cols="lv_name,lv_size,origin,pool_lv,copy_percent"
-lvs_sort="-lv_time"
-
-# lvs
-  LV    LSize Origin Pool Cpy%Sync
-  lvol1 4.00m             100.00  
-  lvol0 4.00m  
-.fi
-
-You can use \fB-o|--options\fP command line option to override current
-configuration directly on command line.
-
-.nf
-# lvs -o lv_name,lv_size
-  LV    LSize
-  lvol1 4.00m
-  lvol0 4.00m
-
-# lvs -o+lv_layout
-  LV    LSize Origin Pool Cpy%Sync Layout    
-  lvol1 4.00m             100.00   raid,raid1
-  lvol0 4.00m                      linear    
-
-# lvs -o-origin
-  LV    LSize Pool Cpy%Sync
-  lvol1 4.00m      100.00  
-  lvol0 4.00m              
-
-# lvs -o lv_name,lv_size,origin -o+lv_layout -o-origin -O lv_name
-  LV    LSize Layout    
-  lvol0 4.00m linear    
-  lvol1 4.00m raid,raid1
-.fi
-
-You can obtain the same information with single command where all the
-information about PVs, PV segments, LVs and LV segments are obtained
-per VG under a single VG lock for consistency, see also \fBlvm fullreport\fP(8)
-man page for more information. The fullreport has its own configuration
-settings to define field sets to use, similar to individual reports as
-displayed above, but configuration settings have "_full" suffix now.
-This way, it's possible to configure different sets of fields to display
-and to sort by for individual reports as well as the full report.
-
-.nf
-# lvmconfig --type full report/pvs_cols_full \\
-   report/pvs_sort_full report/pvsegs_cols_full \\
-   report/pvsegs_sort_full report/vgs_cols_full \\
-   report/vgs_sort_full report/lvs_cols_full \\
-   report/lvs_sort_full report/segs_cols_full \\
-   report/segs_sort_full
-pvs_cols_full="pv_name,vg_name"
-pvs_sort_full="pv_name"
-pvsegs_cols_full="pv_name,pvseg_start,pvseg_size"
-pvsegs_sort_full="pv_uuid,pvseg_start"
-vgs_cols_full="vg_name"
-vgs_sort_full="vg_name"
-lvs_cols_full="lv_name,vg_name"
-lvs_sort_full="vg_name,lv_name"
-segs_cols_full="lv_name,seg_start,seg_size"
-segs_sort_full="lv_uuid,seg_start"
-.fi
-
-.nf
-# lvm fullreport
-  VG
-  vg
-  PV         VG
-  /dev/sda   vg
-  /dev/sdb   vg
-  LV    VG
-  lvol0 vg
-  lvol1 vg
-  PV         Start SSize
-  /dev/sda       0     1
-  /dev/sda       1     1
-  /dev/sda       2     1
-  /dev/sda       3    22
-  /dev/sdb       0     1
-  /dev/sdb       1     1
-  /dev/sdb       2    23
-  LV    Start SSize
-  lvol0    0  4.00m
-  lvol1    0  4.00m
-.fi
-
-.SS Automatic output compaction
-
-If you look at the lvs output above, you can see that the report also contains
-fields for which there is no information to display (e.g. the columns under
-"Origin" and "Pool" heading - the "origin" and "pool_lv" fields). LVM can
-automatically compact report output so such fields are not included in final
-output. To enable this feature and to compact all fields, use
-\fBreport/compact_output=1\fP in your configuration.
-
-.nf
-# lvmconfig --type full report/compact_output
-compact_output=1
-
-# lvs
-  LV    LSize Cpy%Sync
-  lvol1 4.00m 100.00  
-  lvol0 4.00m  
-
-# lvs vg/lvol0
-  LV    LSize 
-  lvol0 4.00m
-.fi
-
-Alternatively, you can define which fields should be compacted by configuring
-\fBreport/compact_output_cols\fP configuration setting (or \fB-o|--options #\fP
-command line option).
-
-.nf
-# lvmconfig --type full report/compact_output report/compact_output_cols
-compact_output=0
-compact_output_cols="origin"
-
-# lvs
-  LV    LSize Pool Cpy%Sync
-  lvol1 4.00m      100.00  
-  lvol0 4.00m    
-
-# lvs vg/lvol0
-  LV    LSize Pool 
-  lvol0 4.00m    
-
-# lvs -o#pool_lv        
-  LV    LSize Origin Cpy%Sync
-  lvol1 4.00m        100.00  
-  lvol0 4.00m                
-.fi
-
-We will use \fBreport/compact_output=1\fP for subsequent examples.
-
-.SS Further formatting options
-
-By default, LVM displays sizes in reports in human-readable form which means
-that the most suitable unit is used so it's easy to read. You can use
-\fBreport/units\fP configuration setting (or \fB--units\fP option directly
-on command line) and \fBreport/suffix\fP
-configuration setting (or \fB--nosuffix\fP command line option) to change this.
-
-.nf
-# lvs --units b --nosuffix
-  LV    LSize   Cpy%Sync
-  lvol1 4194304 100.00  
-  lvol0 4194304    
-.fi
-
-If you want to configure whether report headings are displayed or not, use
-\fBreport/headings\fP configuration settings (or \fB--noheadings\fP command
-line option).
-
-.nf
-# lvs --noheadings
-  lvol1 4.00m 100.00  
-  lvol0 4.00m     
-.fi
-
-In some cases, it may be useful to display report content as key=value pairs
-where key here is actually the field name. Use \fBreport/prefixes\fP
-configuration setting (or \fB--nameprefixes\fP command line option) to switch
-between standard output and the key=value output. The key=value pair is the
-output that is suitable for use in scripts and for other tools to parse easily.
-Usually, you also don't want to display headings with the output that has these
-key=value pairs.
-
-.nf
-# lvs --noheadings --nameprefixes
-  LVM2_LV_NAME='lvol1' LVM2_LV_SIZE='4.00m' LVM2_COPY_PERCENT='100.00'
-  LVM2_LV_NAME='lvol0' LVM2_LV_SIZE='4.00m' LVM2_COPY_PERCENT=''
-.fi
-
-To define whether quotation marks in key=value pairs should be used or not,
-use \fBreport/quoted\fP configuration setting (or \fB--unquoted\fP command
-line option).
-
-.nf
-# lvs --noheadings --nameprefixes --unquoted
-  LVM2_LV_NAME=lvol1 LVM2_LV_SIZE=4.00m LVM2_COPY_PERCENT=100.00
-  LVM2_LV_NAME=lvol0 LVM2_LV_SIZE=4.00m LVM2_COPY_PERCENT=
-.fi
-
-For easier parsing, you can even transpose the report so each column now
-becomes a row in the output. This is done with \fBreport/output_as_rows\fP
-configuration setting (or \fB--rows\fP command line option).
-
-.nf
-# lvs --noheadings --nameprefixes --unquoted --rows
-  LVM2_LV_NAME=lvol1 LVM2_LV_NAME=lvol0
-  LVM2_LV_SIZE=4.00m LVM2_LV_SIZE=4.00m
-  LVM2_COPY_PERCENT=100.00 LVM2_COPY_PERCENT=
-.fi
-
-Use \fBreport/separator\fP configuration setting (or \fB--separator\fP command
-line option) to define your own field separator to use.
-
-.nf
-# lvs --noheadings --nameprefixes --unquoted --separator " | "
-  LVM2_LV_NAME=lvol1 | LVM2_LV_SIZE=4.00m | LVM2_COPY_PERCENT=100.00
-  LVM2_LV_NAME=lvol0 | LVM2_LV_SIZE=4.00m | LVM2_COPY_PERCENT=
-.fi
-
-If you are using your own separator, the columns in the output are not aligned
-by default. Use \fBreport/aligned\fP configuration setting (or \fB--aligned\fP
-command line option) for LVM to add extra spaces in report to align the output
-properly.
-
-.nf
-# lvs --separator " | "
-  LV | LSize | Cpy%Sync
-  lvol1 | 4.00m | 100.00
-  lvol0 | 4.00m | 
-
-# lvs --separator " | " --aligned
-  LV    | LSize | Cpy%Sync
-  lvol1 | 4.00m | 100.00  
-  lvol0 | 4.00m |         
-.fi
-
-Let's display one one more field in addition ("lv_tags" in this example)
-for the lvs report output.
-
-.nf
-# lvs -o+lv_tags
-  LV    LSize Cpy%Sync LV Tags  
-  lvol1 4.00m 100.00            
-  lvol0 4.00m          tagA,tagB
-.fi
-
-The "LV Tags" column in the example above displays two list values,
-separated by "," character for LV lvol0. If you need different list item
-separator, use \fBreport/list_item_separator\fP configuration setting its
-definition.
-
-.nf
-# lvmconfig --type full report/list_item_separator
-list_item_separator=";"
-
-# lvs -o+tags
-  LV    LSize Cpy%Sync LV Tags  
-  lvol1 4.00m 100.00            
-  lvol0 4.00m          tagA;tagB
-.fi
-
-But let's still use the original "," character for list_item_separator
-for subsequent examples.
-
-Format for any of time values displayed in reports can be configured with
-\fBreport/time_format\fP configuretion setting. By default complete date
-and time is displayed, including timezone.
-
-.nf
-# lvmconfig --type full report/time_format
-time_format="%Y-%m-%d %T %z"
-
-# lvs -o+time
-  LV    LSize Cpy%Sync CTime                     
-  lvol1 4.00m 100.00   2016-08-29 12:53:36 +0200 
-  lvol0 4.00m          2016-08-29 10:15:17 +0200 
-.fi
-
-We can change time format in similar way as we do when using \fBdate\fP(1)
-command or \fBstrftime\fP(3) function
-(\fBlvmconfig --type default --withcomments report/time_format\fP will
-give you complete list of available formatting options). In the example
-below, we decided to use %s for number of seconds since Epoch (1970-01-01 UTC).
-
-.nf
-# lvmconfig --type full report/time_format
-time_format="%s"
-
-# lvs
-  LV    Attr       LSize Cpy%Sync LV Tags   CTime                     
-  lvol1 rwi-a-r--- 4.00m 100.00             1472468016                
-  lvol0 -wi-a----- 4.00m          tagA,tagB 1472458517     
-.fi
-
-The \fBlvs\fP does not display hidden LVs by default - to include these LVs
-in the output, you need to use \fB-a|--all\fP command line option. Names for
-these hidden LVs are displayed within square brackets.
-
-.nf
-# lvs -a
-  LV               LSize Cpy%Sync
-  lvol1            4.00m 100.00  
-  [lvol1_rimage_0] 4.00m         
-  [lvol1_rmeta_0]  4.00m         
-  [lvol1_rimage_1] 4.00m         
-  [lvol1_rmeta_1]  4.00m         
-  lvol0            4.00m      
-.fi
-
-You can configure LVM to display the square brackets for hidden LVs or not with
-\fBreport/mark_hidden_devices\fP configuration setting.
-
-.nf
-# lvmconfig --type full report/mark_hidden_devices
-mark_hidden_devices=0
-
-# lvs -a
-  LV             LSize Cpy%Sync
-  lvol1          4.00m 100.00  
-  lvol1_rimage_0 4.00m         
-  lvol1_rmeta_0  4.00m         
-  lvol1_rimage_1 4.00m         
-  lvol1_rmeta_1  4.00m         
-  lvol0          4.00m     
-.fi
-
-It's not recommended to use LV marks for hidden devices to decide whether the
-LV is the one to use by end users or not. Please, use "lv_role" field instead
-which can report whether the LV is "public" or "private". The private LVs are
-used by LVM only and they should not be accessed directly by end users.
-
-.nf
-# lvs -a -o+lv_role
-  LV             LSize Cpy%Sync Role                 
-  lvol1          4.00m 100.00   public               
-  lvol1_rimage_0 4.00m          private,raid,image   
-  lvol1_rmeta_0  4.00m          private,raid,metadata
-  lvol1_rimage_1 4.00m          private,raid,image   
-  lvol1_rmeta_1  4.00m          private,raid,metadata
-  lvol0          4.00m          public     
-.fi
-
-Some of the reporting fields that LVM reports are of binary nature. For such
-fields, it's either  possible to display word representation of the value
-(this is used by default) or numeric value (0/1 or -1 in case the value is
-undefined).
-
-.nf
-# lvs -o+lv_active_locally
-  LV    LSize Cpy%Sync ActLocal      
-  lvol1 4.00m 100.00   active locally
-  lvol0 4.00m          active locally
-.fi
-
-We can change the way how these binary values are displayed with
-\fBreport/binary_values_as_numeric\fP configuration setting.
-
-.nf
-# lvmconfig --type full report/binary_values_as_numeric
-binary_values_as_numeric=1
-
-# lvs -o+lv_active_locally
-  LV    LSize Cpy%Sync ActLocal  
-  lvol1 4.00m 100.00            1
-  lvol0 4.00m                   1
-.fi
-
-.SS Changing output format
-
-LVM can output reports in different formats - use \fBreport/output_format\fP
-configuration setting (or \fB--reportformat\fP command line option) to swith
-the report output format. Currently, LVM supports \fB"basic"\fP (all the examples
-we used above used this format) and \fB"JSON"\fP output format.
-
-.nf
-# lvs -o lv_name,lv_size --reportformat json
-  {
-      "report": [
-          {
-              "lv": [
-                  {"lv_name":"lvol1", "lv_size":"4.00m"},
-                  {"lv_name":"lvol0", "lv_size":"4.00m"}
-              ]
-          }
-      ]
-  }
-.fi
-
-Note that some configuration settings and command line options have no
-effect with certain report formats. For example, with \fBJSON\fP output,
-it doesn't have any meaning to use \fBreport/aligned\fP (\fB--aligned\fP),
-\fBreport/noheadings\fP (\fB--noheadings\fP), \fBreport/columns_as_rows\fP
-(\fB--rows\fP) or \fBreport/buffered\fP (\fB--unbuffered\fP). All these
-configuration settings and command line options are ignored if using the
-\fBJSON\fP report output format.
-
-.SS Selection
-
-If you need to select only specific rows from report, you can use LVM's
-report selection feature. If you call \fB<lvm_command> -S help\fP, you'll get
-quick help on selection. The help contains list of all fields that LVM
-can use in reports together with its type enclosed in square brackets.
-The example below contains a line from lvs -S help.
-
-.nf
-# lvs -S help
-    ...
-    lv_size                - Size of LV in current units. [size]
-    ...
-.fi
-
-This line tells you you that the "lv_size" field is of "size" type. If you
-look at the bottom of the help output, you can see section about
-"Selection operators" and its "Comparison operators".
-
-.nf
-# lvs -S help
- ...
-Selection operators
--------------------
-Comparison operators:
-   =~  - Matching regular expression. [regex]
-   !~  - Not matching regular expression. [regex]
-    =  - Equal to. [number, size, percent, string, string list, time]
-   !=  - Not equal to. [number, size, percent, string, string_list, time]
-   >=  - Greater than or equal to. [number, size, percent, time]
-    >  - Greater than. [number, size, percent, time]
-   <=  - Less than or equal to. [number, size, percent, time]
-    <  - Less than. [number, size, percent, time]
-since  - Since specified time (same as '>='). [time]
-after  - After specified time (same as '>'). [time]
-until  - Until specified time (same as '<='). [time]
-before  - Before specified time (same as '<'). [time]
- ...
-.fi
-
-Here you can match comparison operators that you may use with the "lv_size"
-field which is of type "size" - it's =, !=, >=, >, <= and <. You can find
-applicable comparison operators for other fields and other field types the
-same way.
-
-To demostrate selection functionality in LVM, we will create more LVs in
-addition to lvol0 and lvol1 we used in our previous examples.
-
-.nf
-# lvs -o name,size,origin,snap_percent,tags,time
-  LV    LSize Origin Snap%  LV Tags        CTime                     
-  lvol4 4.00m lvol2  24.61                 2016-09-09 16:57:44 +0200 
-  lvol3 4.00m lvol2  5.08                  2016-09-09 16:56:48 +0200 
-  lvol2 8.00m               tagA,tagC,tagD 2016-09-09 16:55:12 +0200 
-  lvol1 4.00m                              2016-08-29 12:53:36 +0200 
-  lvol0 4.00m               tagA,tagB      2016-08-29 10:15:17 +0200
-.fi
-
-When selecting size and percent fields, we don't need to use units.
-For sizes, default "m" (for MiB) is used - this is the same behaviour
-as already used for LVM commands when specifying sizes (e.g. lvcreate -L).
-For percent fields, "%" is assumed automatically if it's not specified.
-The example below also demonstrates how several criteria can be combined
-together.
-
-.nf
-# lvs -o name,size,snap_percent -S 'size=8m'
-  LV    LSize 
-  lvol2 8.00m
-
-# lvs -o name,size,snap_percent -S 'size=8'
-  LV    LSize 
-  lvol2 8.00m
-
-# lvs -o name,size,snap_percent -S 'size < 5000k'
-  LV    LSize Snap% 
-  lvol4 4.00m 24.61 
-  lvol3 4.00m 5.08  
-  lvol1 4.00m       
-  lvol0 4.00m 
-
-# lvs -o name,size,snap_percent -S 'size < 5000k && snap_percent > 20'
-  LV    LSize Snap% 
-  lvol4 4.00m 24.61 
-
-# lvs -o name,size,snap_percent \\
-    -S '(size < 5000k && snap_percent > 20%) || name=lvol2'
-  LV    LSize Snap% 
-  lvol4 4.00m 24.61 
-  lvol2 8.00m       
-.fi
-
-You can also use selection together with processing-oriented commands.
-
-.nf
-# lvchange --addtag test -S 'size < 5000k'
-  Logical volume vg/lvol1 changed.
-  Logical volume vg/lvol0 changed.
-  Logical volume vg/lvol3 changed.
-  Logical volume vg/lvol4 changed.
-
-# lvchange --deltag test -S 'tags = test'
-  Logical volume vg/lvol1 changed.
-  Logical volume vg/lvol0 changed.
-  Logical volume vg/lvol3 changed.
-  Logical volume vg/lvol4 changed.
-.fi
-
-LVM can recognize more complex values used in selection criteria for
-string list and time field types. For string lists, you can match
-whole list strictly, its subset or intersection. Let's take "lv_tags"
-field as an example - we select only rows which contain "tagA" within
-tags field. We're using { } to denote that we're interested in subset
-that matches. If the subset has only one item, we can leave out { }.
-
-.nf
-# lvs -o name,tags -S 'tags={tagA}'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-  lvol0 tagA,tagB   
-  
-# lvs -o name,tags -S 'tags=tagA'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-  lvol0 tagA,tagB   
-.fi
-
-Depending on whether we use "&&" (or ",") or "||" ( or "#") as delimiter
-for items in the set we define in selection criterion for string list,
-we either match subset ("&&" or ",") or even intersection ("||" or "#").
-
-.nf
-# lvs -o name,tags -S 'tags={tagA,tagC,tagD}'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-
-# lvs -o name,tags -S 'tags={tagA || tagC || tagD}'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-  lvol0 tagA,tagB     
-.fi
-
-To match the complete set, use [ ] with "&&" (or ",") as delimiter for items.
-Also note that the order in which we define items in the set is not relevant.
-
-.nf
-# lvs -o name,tags -S 'tags=[tagA]'                
-
-# lvs -o name,tags -S 'tags=[tagB,tagA]'
-  LV    LV Tags  
-  lvol0 tagA,tagB
-.fi
-
-If you use [ ] with "||" (or "#"), this is exactly the same as using { }.
-
-.nf
-# lvs -o name,tags -S 'tags=[tagA || tagC || tagD]'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-  lvol0 tagA,tagB  
-.fi
-
-To match a set with no items, use "" to denote this (note that we have
-output compaction enabled so the "LV Tags" column is not displayed in
-the example below because it's blank and so it gets compacted).
-
-.nf
-# lvs -o name,tags -S 'tags=""'
-  LV    
-  lvol4
-  lvol3
-  lvol1
-
-# lvs -o name,tags -S 'tags!=""'
-  LV    LV Tags       
-  lvol2 tagA,tagC,tagD
-  lvol0 tagA,tagB  
-.fi
-
-When doing selection based on time fields, we can use either standard,
-absolute or freeform time expressions in selection criteria. Examples below
-are using standard forms.
-
-.nf
-# lvs -o name,time
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time -S 'time since "2016-09-01"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-
-# lvs -o name,time -S 'time since "2016-09-09 16:56"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-
-# lvs -o name,time -S 'time since "2016-09-09 16:57:30"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-
-# lvs -o name,time \\ 
-    -S 'time since "2016-08-29" && time until "2016-09-09 16:55:12"'
-  LV    CTime                     
-  lvol2 2016-09-09 16:55:12 +0200 
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time \\
-    -S 'time since "2016-08-29" && time before "2016-09-09 16:55:12"'
-  LV    CTime                     
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-.fi
-
-Time operators have synonyms: ">=" for since, "<=" for until,
-">" for "after" and "<" for "before".
-
-.nf
-# lvs -o name,time \\
-    -S 'time >= "2016-08-29" && time <= "2016-09-09 16:55:30"'
-  LV    CTime                     
-  lvol2 2016-09-09 16:55:12 +0200 
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time \\
-    -S 'time since "2016-08-29" && time < "2016-09-09 16:55:12"'
-  LV    CTime                     
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-.fi
-
-Example below demonstrates using absolute time expression.
-
-.nf
-# lvs -o name,time --config report/time_format="%s"
-  LV    CTime                     
-  lvol4 1473433064                
-  lvol3 1473433008                
-  lvol2 1473432912                
-  lvol1 1472468016                
-  lvol0 1472458517  
-
-# lvs -o name,time -S 'time since @1473433008'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-.fi
-
-Examples below demonstrates using freeform time expressions.
-
-.nf
-# lvs -o name,time -S 'time since "2 weeks ago"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time -S 'time since "1 week ago"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-
-# lvs -o name,time -S 'time since "2 weeks ago"'
-  LV    CTime                     
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time -S 'time before "1 week ago"'
-  LV    CTime                     
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-
-# lvs -o name,time -S 'time since "68 hours ago"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-
-# lvs -o name,time -S 'time since "1 year 3 months ago"'
-  LV    CTime                     
-  lvol4 2016-09-09 16:57:44 +0200 
-  lvol3 2016-09-09 16:56:48 +0200 
-  lvol2 2016-09-09 16:55:12 +0200 
-  lvol1 2016-08-29 12:53:36 +0200 
-  lvol0 2016-08-29 10:15:17 +0200 
-.fi
-
-.SS Command log reporting
-
-As described in \fBcategorization based on reporting facility\fP section
-at the beginning of this document, both \fBreport-oriented\fP and
-\fBprocessing-oriented\fP LVM commands can report the command log if
-this is enabled with \fBlog/report_command_log\fP configuration setting.
-Just like any other report, we can set the set of fields to display
-(\fBlog/command_log_cols\fP) and to sort by (\fBlog/command_log_sort\fP)
-for this report.
-
-.nf
-# lvmconfig --type full log/report_command_log log/command_log_cols \\
-   log/command_log_sort log/command_log_selection
-report_command_log=1
-command_log_cols="log_seq_num,log_type,log_context,log_object_type,
-                  log_object_name,log_object_group,log_message,
-                  log_errno,log_ret_code"
-command_log_sort="log_seq_num"
-command_log_selection="!(log_type=status && message=success)"
-
-
-# lvs
-  Logical Volume
-  ==============
-  LV    LSize Cpy%Sync
-  lvol1 4.00m 100.00  
-  lvol0 4.00m         
-  
-  Command Log
-  ===========
-  Seq LogType Context ObjType ObjName ObjGrp  Msg     Errno RetCode
-.fi
-
-As you can see, the command log is empty (it contains only field names).
-By default, LVM uses selection on the command log report and this case
-no row matched the selection criteria, see also \fBlog report specifics\fP
-section in this document for more information. We're displaying complete
-log report in the example below where we can see that both LVs lvol0 and
-lvol1 were successfully processed as well as the VG vg they are part of.
-
-.nf
-# lvmconfig --type full log/command_log_selection
-command_log_selection="all"
-
-# lvs
-  Logical Volume
-  ==============
-  LV    LSize Cpy%Sync
-  lvol1 4.00m 100.00  
-  lvol0 4.00m         
-  
-  Command Log
-  ===========
-  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
-    1 status  processing lv      lvol0   vg      success     0       1
-    2 status  processing lv      lvol1   vg      success     0       1
-    3 status  processing vg      vg              success     0       1
-
-# lvchange -an vg/lvol1
-  Command Log
-  ===========
-  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
-    1 status  processing lv      lvol1   vg      success     0       1
-    2 status  processing vg      vg              success     0       1
-.fi
-
-.SS Handling multiple reports per single command
-
-To configure the log report directly on command line, we need to use
-\fB--configreport\fP option before we start any \fB-o|--options\fP,
-\fB-O|--sort\fP or \fB-S|--select\fP that is targeted for log report.
-
-.nf
-# lvs -o lv_name,lv_size --configreport log -o log_object_type, \\
-   log_object_name,log_message,log_ret_code
-  Logical Volume
-  ==============
-  LV    LSize
-  lvol1 4.00m
-  lvol0 4.00m
-  
-  Command Log
-  ===========
-  ObjType ObjName Msg     RetCode
-  lv      lvol0   success       1
-  lv      lvol1   success       1
-  vg      vg      success       1
-.fi
-
-The \fBlvm fullreport\fP, with or without log report, consists of several
-reports - the \fB--configreport\fP is also used to target particular
-subreport here.
-
-Below is an extended example with \fBlvm fullreport\fP to illustrate
-combination of various options. The report output is in JSON format.
-Also, we configure "vg", "pvseg", "seg" and "log" subreport to contain
-only specified fields. For the "pvseg" subreport, we're intested only
-in PV names having "sda" in their name. For the "log" subreport we're
-intested only in log lines related to either "lvol0" object or object
-having "sda" in its name. Also, for the log subreport we define ordering
-to be based on "log_object_type" field.
-
-.nf
-# lvm fullreport --reportformat json \\
-   --configreport vg -o vg_name,vg_size \\
-   --configreport pvseg -o pv_name,pvseg_start \\
-                        -S 'pv_name=~sda' \\
-   --configreport seg -o lv_name,seg_start \\
-   --configreport log -o log_object_type,log_object_name \\
-                      -O log_object_type \\
-                      -S 'log_object_name=lvol0 || \\
-                          log_object_name=~sda'
-  {
-      "report": [
-          {
-              "vg": [
-                  {"vg_name":"vg", "vg_size":"200.00m"}
-              ]
-              ,
-              "pv": [
-                  {"pv_name":"/dev/sda", "vg_name":"vg"},
-                  {"pv_name":"/dev/sdb", "vg_name":"vg"}
-              ]
-              ,
-              "lv": [
-                  {"lv_name":"lvol0", "vg_name":"vg"},
-                  {"lv_name":"lvol1", "vg_name":"vg"}
-              ]
-              ,
-              "pvseg": [
-                  {"pv_name":"/dev/sda", "pvseg_start":"0"},
-                  {"pv_name":"/dev/sda", "pvseg_start":"1"},
-                  {"pv_name":"/dev/sda", "pvseg_start":"2"},
-                  {"pv_name":"/dev/sda", "pvseg_start":"3"}
-              ]
-              ,
-              "seg": [
-                  {"lv_name":"lvol0", "seg_start":"0 "},
-                  {"lv_name":"lvol1", "seg_start":"0 "}
-              ]
-          }
-      ]
-      ,
-      "log": [
-          {"log_object_type":"lv", "log_object_name":"lvol0"},
-          {"log_object_type":"lv", "log_object_name":"lvol0"},
-          {"log_object_type":"pv", "log_object_name":"/dev/sda"},
-          {"log_object_type":"pv", "log_object_name":"/dev/sda"},
-      ]
-  }
-.fi
-
-.SS Report extensions for LVM shell
-
-As already stated in \fBlog report coverage\fP paragraph under
-\fBlog report specifics\fP in this documentation, when using \fBLVM shell\fP
-the \fBlog report\fP coverage is wider. There's also special command
-designed to query last command's log report in the \fBLVM shell\fP -
-the \fBlastlog\fP command.
-
-The example below illustrates a situation where we called lvs command.
-After that, we inspected the log report with the \fBlastlog\fP, without
-any selection so all the log report is displayed on output. Then we called
-\fBlastlog\fP further, giving various selection criteria. Then we ran
-unknown LVM command "abc" for which the log report displays appropriate
-failure state.
-
-.nf
-# lvm
-lvm> lvs
-  Logical Volume
-  ==============
-  LV    LSize Cpy%Sync
-  lvol1 4.00m 100.00  
-  lvol0 4.00m         
-  
-  Command Log
-  ===========
-  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
-    1 status  processing lv      lvol0   vg      success     0       1
-    2 status  processing lv      lvol1   vg      success     0       1
-    3 status  processing vg      vg              success     0       1
-    4 status  shell      cmd     lvs             success     0       1
-
-lvm> lastlog    
-  Command Log
-  ===========
-  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
-    1 status  processing lv      lvol0   vg      success     0       1
-    2 status  processing lv      lvol1   vg      success     0       1
-    3 status  processing vg      vg              success     0       1
-    4 status  shell      cmd     lvs             success     0       1
-
-lvm> lastlog -S log_object_type=lv
-  Command Log
-  ===========
-  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
-    1 status  processing lv      lvol0   vg      success     0       1
-    2 status  processing lv      lvol1   vg      success     0       1
-
-lvm> lastlog -S log_context=shell
-  Command Log
-  ===========
-  Seq LogType Context ObjType ObjName ObjGrp  Msg     Errno RetCode
-    4 status  shell   cmd     lvs             success     0       1
-
-lvm> abc
-  Command Log
-  ===========
-  Seq LogType Context ObjType ObjName ObjGrp  Msg                                 Errno RetCode
-    1 error   shell   cmd     abc             No such command 'abc'.  Try 'help'.    -1       0
-    2 status  shell   cmd     abc             failure                                -1       2
-.fi
-
-.SH SEE ALSO
-\fBlvm\fP (8),
-\fBlvmconfig\fP (8),
-\fBlvm fullreport\fP (8)
diff --git a/man/lvmreport.7_main b/man/lvmreport.7_main
new file mode 100644
index 0000000..7a26401
--- /dev/null
+++ b/man/lvmreport.7_main
@@ -0,0 +1,1810 @@
+.TH "LVMREPORT" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmreport \(em LVM reporting and related features
+
+.SH DESCRIPTION
+LVM uses single reporting infrastructure that sets standard on LVM command's
+output and it provides wide range of configuration settings and command line
+options to customize report and filter the report's output.
+
+.SH Categorization based on reporting facility
+
+Based on functionality, commands which make use of the reporting infrastructure
+are divided in two groups:
+.IP \fBReport-oriented commands\fP
+These commands inform about current LVM state and their primary role is to
+display this information in compendious way. To make a distinction, we will
+name this report as \fBmain report\fP. The set of report-only commands include:
+pvs, vgs, lvs, pvdisplay, vgdisplay, lvdisplay, lvm devtypes, lvm fullreport.
+For further information about main report, see \fBmain report specifics\fP.
+.IP \fBProcessing-oriented commands\fP
+These commands are responsible for changing LVM state and they do not contain
+any main report as identified for report-oriented commands, they only perform
+some kind of processing. The set of processing-oriented commands includes:
+pvcreate, vgcreate, lvcreate, pvchange, vgchange, lvchange, pvremove, vgremove,
+lvremove, pvresize, vgextend, vgreduce, lvextend, lvreduce, lvresize, lvrename,
+pvscan, vgscan, lvscan, pvmove, vgcfgbackup, vgck, vgconvert, vgexport,
+vgimport, vgmknodes.
+
+.RE
+If enabled, so called \fBlog report\fP is either displayed solely
+(for processing-oriented commands) or in addition to main report
+(for report-oriented commands). The log report contains a log of operations,
+messages and per-object status with complete object identification collected
+during LVM command execution. See \fBlog report specifics\fP for more
+information about this report type.
+
+
+.SH Terms
+
+When describing reporting functionality and features in this text, we will
+use terms \fBrow\fP and \fBcolumn\fP. By row we mean series of values reported
+for single entity (for example single PV, VG or LV). Each value from the row
+then belongs to a column of certain type. The columns have \fBcolumn headings\fP
+which are short descriptions for the columns. The columns are referenced by
+\fBcolumn names\fP. Please note that this text is also using term \fBfield\fP
+interchangeably with the term \fBcolumn\fP. Most of the time the term columns
+is abbreviated as \fBcol\fP in configuration.
+
+.SH Common report configuration settings and command line options
+
+There are common configuration settings and command line options which apply
+to both \fBmain report\fP and \fBlog report\fP. Following lists contain all
+of them, separated into groups based on their use.
+
+.RS
+\fBCommon configuration settings:\fP
+
+.RS
+
+.IP \[bu] 3
+Changing report output format, composition and other output modifiers:
+.RS
+.IP - 3
+global/units
+.IP - 3
+global/suffix
+.IP - 3
+report/output_format
+.IP - 3
+report/compact_output
+.IP - 3
+report/compact_output_cols
+.IP - 3
+report/aligned
+.IP - 3
+report/headings
+.IP - 3
+report/separator
+.IP - 3
+report/list_item_separator
+.IP - 3
+report/prefixes
+.IP - 3
+report/quoted
+.IP - 3
+report/columns_as_rows
+.IP - 3
+report/binary_values_as_numeric
+.IP - 3
+report/time_format
+.IP - 3
+report/mark_hidden_devices
+.IP - 3
+report/two_word_unknown_device
+.RE
+
+.IP \[bu] 3
+Special settings
+.RS
+.IP - 3
+report/buffered
+.RE
+
+.RE
+
+.RE
+
+This document does not describe these settings in more detail - if you need
+detailed information, including values which are accepted for the settings,
+please run \fBlvmconfig --type default --withcomments <setting>\fP. There are
+more configuration settings in addition to the common set listed above, but
+they are specific to either \fBmain report\fP or \fBlog report\fP,
+see \fBmain report specifics\fP and \fBlog report specifics\fP for
+these settings. Besides configuring reports globally by using configuration
+settings, there are also command line options you can use to extend, override
+or further specify the report configuration.
+
+.RS
+\fBCommon command line options:\fP
+
+.RS
+
+.IP \[bu] 3
+Definition of the set set of fields to use
+.RS
+.IP - 3
+--options|-o FieldSet
+.br
+Field set to use. See \fBmain report specifics\fP and
+\fBlog report specifics\fP for information about field sets configured with
+global configuratin settings that this option overrides.
+.IP - 3
+--options|-o+ FieldSet
+.br
+Fields to include to current field set. See \fBmain report specifics\fP\ and
+\fBlog report specifics\fP for information about field sets configured with
+global configuration settings that this option extends.
+.IP - 3
+--options|-o- FieldSet
+.br
+Fields to exclude from current field set. See \fBmain report specifics\fP and
+\fBlog report specifics\fP for information about field sets configured with
+global configuration settings that this option reduces.
+.IP - 3
+--options|-o# FieldSet
+.br
+Compaction of unused fields. Overrides report/compact_output_cols configuration
+setting.
+.RE
+
+.IP \[bu] 3
+Sorting
+.RS
+.IP - 3
+--sort|-O+ FieldSet
+.br
+Fields to sort by in ascending order. See \fBmain report specifics\fP and
+\fBlog report specifics\fP for information about field sets configured with
+global configuration settings that this option overrides.
+.IP - 3
+--sort|-O- FieldSet
+.br
+Fields to sort by in descending order. See \fBmain report specifics\fP and
+\fBlog report specifics\fP for information about fields sets configured with
+global configuration settings that this options overrides.
+.RE
+
+.IP \[bu] 3
+Selection
+.RS
+.IP - 3
+--select|-S Selection
+.br
+Define selection criteria for report output. For \fBlog report\fP, this also
+overrides log/command_log_selection configuration setting, see also
+\fBlog report specifics\fP.
+.RE
+
+.IP \[bu] 3
+Changing output format and composition
+.RS
+.IP - 3
+--reportformat
+.br
+Overrides report/output_format configuration setting.
+.IP - 3
+--aligned
+.br
+Overrides report/aligned configuration setting.
+.IP - 3
+--binary
+.br
+Overrides report/binary_values_as_numeric configuration setting.
+.IP - 3
+--nameprefixes
+.br
+Overrides report/prefixes configuration setting.
+.IP - 3
+--noheadings
+.br
+Overrides report/noheadings configuration setting.
+.IP - 3
+--nosuffix
+.br
+Overrides global/suffix configuration setting.
+.IP - 3
+--rows
+.br
+Overrides report/columns_as_rows configuration setting.
+.IP - 3
+--separator
+.br
+Overrides report/separator configuration setting.
+.IP - 3
+--units
+.br
+Overrides global/units configuration setting.
+.IP - 3
+--unquoted
+.br
+Overrides report/quoted configuration setting.
+.RE
+
+.IP \[bu] 3
+Special options
+.RS
+.IP - 3
+--configreport \fBReportName\fP
+.br
+This defines the \fBReportName\fP for which any subsequent -o|--columns,
+-O|--sort or -S|--select applies to. See also \fBmain report specifics\fP
+and \fBlog report specifics\fP for possible \fBReportName\fP values.
+.IP - 3
+--logonly
+.br
+When an LVM command contains both \fBmain report\fP and \fBlog report\fP,
+this option suppresses the \fBmain report\fP output and it causes the
+\fBlog report\fP output to be displayed only.
+.IP - 3
+--unbuffered
+.br
+Overrides report/bufffered configuration setting.
+.RE
+
+.RE
+
+.RE
+
+The \fBFieldSet\fP mentioned in the lists above is a set of field names where
+each field name is delimited by "," character. Field set definition, sorting
+and selection may be repeated on command line (-o+/-o- includes/excludes fields
+to/from current list, for all the other repeatable options, the last value
+typed for the option on the command line is used). The \fBSelection\fP
+is a string with \fBselection criteria\fP, see also \fBSelection\fP paragraph
+below for more information about constructing these criteria.
+
+
+.SH Main report specifics
+
+The \fBmain report\fP currently encompasses these distinct subtypes, referenced
+by their name - \fBReportName\fP as listed below. The command in parenthesis is
+representative command that uses the main report subtype by default.
+Each subtype has its own configuration setting for global field set definition
+as well as sort field definition (listed below each individual \fBReportName\fP):
+
+.RS
+
+.IP \[bu] 3
+\fBpv\fP representing report about Physical Volumes (\fBpvs\fP)
+.RS
+.IP - 3
+report/pvs_cols
+.IP - 3
+report/pvs_sort
+.RE
+
+.IP \[bu] 3
+\fBpvseg\fP representing report about Physical Volume Segments (\fBpvs --segments\fP)
+.RS
+.IP - 3
+report/pvseg_cols
+.IP - 3
+report/pvseg_sort
+.RE
+
+.IP \[bu] 3
+\fBvg\fP representing report about Volume Groups (\fBvgs\fP)
+.RS
+.IP - 3
+report/vgs_cols
+.IP - 3
+report/vgs_sort
+.RE
+
+.IP \[bu] 3
+\fBlv\fP representing report about Logical Volumes (\fBlvs\fP)
+.RS
+.IP - 3
+report/lvs_cols
+.IP - 3
+report/lvs_sort
+.RE
+
+.IP \[bu] 3
+\fBseg\fP representing report about Logical Volume Segments (\fBlvs --segments\fP)
+.RS
+.IP - 3
+report/segs_cols
+.IP - 3
+report/segs_sort
+.RE
+
+.IP \[bu] 3
+\fBfull\fP representing report combining all of the above as a whole (\fBlvm fullreport\fP)
+.RS
+.IP - 3
+report/pvs_cols_full
+.IP - 3
+report/pvs_sort_full
+.IP - 3
+report/pvsegs_cols_full
+.IP - 3
+report/pvseg_sort_full
+.IP - 3
+report/vgs_cols_full
+.IP - 3
+report/vgs_sort_full
+.IP - 3
+report/lvs_cols_full
+.IP - 3
+report/lvs_sort_full
+.IP - 3
+report/segs_cols_full
+.IP - 3
+report/segs_sort_full
+.RE
+
+.IP \[bu] 3
+\fBdevtype\fP representing report about device types (\fBlvm devtypes\fP)
+.RS
+.IP - 3
+report/devtypes_cols
+.IP - 3
+report/devtypes_sort
+.RE
+
+.RE
+
+Use \fBpvs, vgs, lvs -o help\fP or \fBlvm devtypes -o help\fP to get complete
+list of fields that you can use for main report. The list of fields in the
+help output is separated in groups based on which report type they belong to.
+Note that LVM can change final report type used if fields from different
+groups are combined together. Some of these combinations are not allowed in
+which case LVM will issue an error.
+
+For all main report subtypes except \fBfull\fP, it's not necessary to use
+\fB--configreport ReportName\fP to denote which report any subsequent
+\fB-o, -O or -S\fP option applies to as they always apply to the single main
+report type. Currently, \fBlvm fullreport\fP is the only command that
+includes more than one \fBmain report\fP subtype. Therefore, the --configreport
+is particularly suitable for the full report if you need to configure each of
+its subreports in a different way.
+
+
+.SH Log report specifics
+
+You can enable log report with \fBlog/report_command_log\fP configuration
+setting - this functionality is disabled by default. The \fBlog report\fP
+contains a log collected during LVM command execution and then the log is
+displayed just like any other report known from main report. There is only one
+log report subtype as shown below together with related configuration settings
+for fields, sorting and selection:
+
+.RS
+
+.IP \[bu] 3
+\fBlog\fP representing log report
+.RS
+.IP - 3
+log/command_log_cols
+.IP - 3
+log/command_log_sort
+.IP - 3
+log/command_log_selection
+.RE
+
+.RE
+
+You always need to use \fB--configreport log\fP together with \fB-o|--options,
+-O|--sort or -S|--selection\fP to override configuration settings directly on
+command line for \fBlog report\fP. When compared to \fBmain report\fP, in
+addition to usual configuration settings for report fields and sorting, the
+\fBlog report\fP has also configuration option for selection -
+\fBreport/command_log_selection\fP. This configuration setting is provided for
+convenience so it's not necessary to use \fB-S|--select\fP on command line
+each time an LVM command is executed and we need the same selection criteria
+to be applied for \fBlog report\fP. Default selection criteria used for
+\fBlog report\fP are
+\fBlog/command_log_selection="!(log_type=status && message=success)"\fP.
+This means that, by default, \fBlog report\fP doesn't display status messages
+about successful operation and it displays only rows with error, warning,
+print-type messages and messages about failure states (for more information,
+see \fBlog report content\fP below).
+
+.B Log report coverage
+.br
+Currently, when running LVM commands directly (not in LVM shell), the log
+report covers command's \fBprocessing stage\fP which is the moment when LVM
+entities are iterated and processed one by one. It does not cover any command
+initialization nor command finalization stage. If there is any message issued
+out of log report's coverage range, such message goes directly to output,
+bypassing the \fBlog report\fP. By default, that is \fBstandard error output\fP
+for error and warning messages and \fBstandard output\fP for common print-like
+messages.
+
+When running LVM commands in \fBLVM shell\fP, the log report covers the whole
+LVM command's execution, including command's \fBprocessing\fP as well as
+\fBinitialization\fP and \fBfinalization stage\fP. So from this point of view,
+the log report coverage is complete for executed LVM commands. Note that there
+are still a few moments when LVM shell needs to initialize itself before it
+even enters the main loop in which it executes LVM commands. Also, there is a
+moment when \fBLVM shell\fP needs to prepare \fBlog report\fP properly for
+next command executed in the shell and then, after the command's run, the shell
+needs to display the log report for that recently executed command. If there
+is a failure or any other message issued during this time, the LVM will bypass
+\fBlog report\fP and display messages on output directly.
+
+For these reasons and for completeness, it's not possible to rely fully on
+\fBlog report\fP as the only indicator of LVM command's status and the only
+place where all messages issued during LVM command execution are collected.
+You always need to check whether the command has not failed out of log
+report's range by checking the non-report output too.
+
+To help with this, LVM can separate output which you can then redirect to
+any \fBcustom file descriptor\fP that you prepare before running an LVM
+command or LVM shell and then you make LVM to use these file descriptors
+for different kinds of output by defining environment variables with file
+descriptor numbers. See also \fBLVM_OUT_FD\fP, \fBLVM_ERR_FD\fP and
+\fBLVM_REPORT_FD\fP environment variable description in \fBlvm\fP(8)
+man page.
+
+Also note that, by default, reports use the same file descriptor as
+common print-like messages, which is \fBstandard output\fP. If you plan to
+use \fBlog report\fP in your scripts or any external tool, you should use
+\fBLVM_OUT_FD\fP, \fBLVM_ERR_FD\fP and \fBLVM_REPORT_FD\fP to separate all
+output types to different file descriptors. For example, with bash, that
+would be:
+
+.RS
+LVM_OUT_FD=3 LVM_ERR_FD=4 LVM_REPORT_FD=5 <lvm command> 3>out_file 4>err_file 5>report_file
+.RE
+
+Where the <lvm_command> is either direct LVM command or LVM shell.
+You can collect all three types of output in particular files then.
+
+.B Log report content
+.br
+Each item in the log report consists of these set of fields providing various
+information:
+
+.RS
+
+.IP \[bu] 3
+Basic information (mandatory):
+.RS
+.IP - 3
+log_seq_num
+.br
+Item sequence number. The sequence number is unique for each log item and it
+increases in the order of the log items as they appeared during LVM command
+execution.
+
+.IP - 3
+log_type
+.br
+Type of log for the item. Currently, these types are used:
+.RS
+.IP
+\fBstatus\fP for any status information that is logged
+.IP
+\fBprint\fP for any common message printed while the log is collected
+.IP
+\fBerror\fP for any error message printed while the log is collected
+.IP
+\fBwarn\fP for any warning message printed while the log is collected
+.RE
+
+.IP - 3
+log_context
+.br
+Context of the log for the item. Currently, two contexts are identified:
+.RS
+.IP
+\fBshell\fP for the log collected in the outermost code before and after
+executing concrete LVM commands
+.IP
+\fBprocessing\fP for the log collected while processing LVM entities during
+LVM command execution
+.RE
+
+.RE
+
+.IP \[bu] 3
+Message (mandatory):
+.RS
+.IP - 3
+log_message
+.br
+Any message associated with current item. For \fBstatus\fP log type,
+the message contains either \fBsuccess\fP or \fBfailure\fP denoting
+current state. For \fBprint\fP, \fBerror\fP and \fBwarn\fP log types,
+the message contains the exact message of that type that got issued.
+.RE
+
+.IP \[bu] 3
+Object information (used only if applicable):
+.RS
+.IP - 3
+log_object_type field
+.br
+Type of the object processed. Currently, these object types are recognized:
+.RS
+.IP
+\fBcmd\fP for command as a whole
+.IP
+\fBorphan\fP for processing group of PVs not in any VG yet
+.IP
+\fBpv\fP for PV processing
+.IP
+\fBlabel\fP for direct PV label processing (without VG metadata)
+.IP
+\fBvg\fP for VG processing
+.IP
+\fBlv\fP for LV processing
+.RE
+
+.IP - 3
+log_object_name
+.br
+Name of the object processed.
+
+.IP - 3
+log_object_id
+.br
+ID of the object processed.
+
+.IP - 3
+log_object_group
+.br
+A group where the processed object belongs to.
+
+.IP - 3
+log_object_group_id
+.br
+An ID of a group where the processed object belongs to.
+.RE
+
+.IP \[bu] 3
+Numeric status (used only if applicable)
+.RS
+.IP - 3
+log_errno
+.br
+Error number associated with current item.
+.IP - 3
+log_ret_code
+.br
+Rreturn code associated with current item.
+.RE
+
+.RE
+
+
+You can also run \fB<lvm_command> --configreport log -o help\fP to
+to display complete list of fields that you may use for the \fBlog report\fP.
+
+.SH Selection
+Selection is used for a report to display only rows that match
+\fBselection criteria\fP. All rows are displayed with the additional
+\fBselected\fP field (\fB-o selected\fP) displaying 1 if the row matches the
+\fISelection\fP and 0 otherwise. The \fBselection criteria\fP are a set of
+\fBstatements\fP combined by \fBlogical and grouping operators\fP.
+The \fBstatement\fP consists of a \fBfield\fP name for which a set of valid
+\fBvalues\fP is defined using \fBcomparison operators\fP. For complete list
+of fields names that you can use in selection, see the output of
+\fB<lvm_command> -S help\fP. The help output also contains type of values
+that each field displays enclosed in brackets.
+
+.B List of operators recognized in selection criteria
+.RS
+.IP \[bu] 3
+Comparison operators (cmp_op)
+.RS
+.IP
+\fB=~\fP matching regular expression.
+.IP
+\fB!~\fP not matching regular expression.
+.IP
+\fB= \fP equal to.
+.IP
+\fB!=\fP not equal to.
+.IP
+\fB>=\fP greater than or equal to.
+.IP
+\fB> \fP greater than
+.IP
+\fB<=\fP less than or equal to.
+.IP
+\fB< \fP less than.
+.RE
+
+.IP \[bu] 3
+Binary logical operators (cmp_log)
+.RS
+.IP
+\fB&&\fP all fields must match
+.IP
+\fB, \fP all fields must match
+.IP
+\fB||\fP at least one field must match
+.IP
+\fB# \fP at least one field must match
+.RE
+
+.IP \[bu] 3
+Unary logical operators
+.RS
+.IP
+\fB! \fP logical negation
+.RE
+
+.IP \[bu] 3
+Grouping operators
+.RS
+.IP
+\fB( \fP left parenthesis
+.IP
+\fB) \fP right parenthesis
+.IP
+\fB[ \fP list start
+.IP
+\fB] \fP list end
+.IP
+\fB{ \fP list subset start
+.IP
+\fB} \fP list subset end
+.RE
+
+.RE
+
+.B Field types and selection operands
+.br
+Field type restricts the set of operators and values that you may use with
+the field when defining selection criteria. You can see field type for each
+field if you run \fB<lvm command> -S help\fP where you can find the type name
+enclosed in square brackets. Currently, LVM recognizes these field types in
+reports:
+
+.RS
+.IP \[bu] 3
+\fBstring\fP for set of characters (for each string field type, you can use
+either string or regular expression - regex for the value used in selection
+criteria)
+.IP \[bu] 3
+\fBstring list\fP for set of strings
+.IP \[bu] 3
+\fBnumber\fP for integer value
+.IP \[bu] 3
+\fBsize\fP for integer or floating point number with size unit suffix
+(see also \fBlvcreate\fP(8) man page and description for "-L|--size"
+option for the list of recognized suffixes)
+.IP \[bu] 3
+\fBpercent\fP for floating point number with or without "%" suffix
+(e.g. 50 or 50%)
+.IP \[bu] 3
+\fBtime\fP for time values
+.RE
+
+When using \fBstring list\fP in selection criteria, there are several ways
+how LVM can match string list fields from report, depending on what list
+grouping operator is used and what item separator is used within that set
+of items. Also, note that order of items does not matter here.
+
+.RS
+.IP \[bu] 3
+\fBmatching the set strictly\fP where all items must match - use [ ], e.g.
+["a","b","c"]
+.IP \[bu] 3
+\fBmatching a subset of the set\fP - use { } with "," or "&&" as item
+delimiter, e.g. {"a","b","c"}
+.IP \[bu] 3
+\fBmatching an intersection with the set\fP - use { } with "#" or
+"||" as item delimiter, e.g. {"a" || "b" || "c"}
+.RE
+
+When using \fBtime\fP in your selection criteria, LVM can recognize various
+time formats using standard, absolute or freeform expressions. For examples
+demonstrating time expressions in selection criteria, see \fBEXAMPLES\fP section.
+
+.RS
+
+.IP \[bu] 3
+\fBStandard time format\fP
+
+.RS
+.IP - 3
+date
+.RS
+.IP
+YYYY-MM-DD
+.IP
+YYYY-MM, auto DD=1
+.IP
+YYYY, auto MM=01 and DD=01
+.RE
+
+.IP - 3
+time
+.RS
+.IP
+hh:mm:ss
+.IP
+hh:mm, auto ss=0
+.IP
+hh, auto mm=0, auto ss=0
+.RE
+
+.IP - 3
+timezone
+.RS
+.IP
++hh:mm or -hh:mm
+.IP
++hh or -hh
+.RE
+
+The full date/time specification is YYYY-MM-DD hh:mm:ss. Users are able
+to leave date/time parts from right to left. Whenever these parts are left out,
+a range is assumed automatically with second granularity. For example:
+
+.RS
+.IP
+"2015-07-07 9:51" means range of "2015-07-07 9:51:00" - "2015-07-07 9:51:59".
+.IP
+"2015-07" means range of "2015-07-01 0:00:00" - "2015-07-31 23:59:59"
+.IP
+"2015" means range of "2015-01-01 0:00:00" - "2015-12-31 23:59:59"
+.RE
+
+.RE
+
+.IP \[bu] 3
+\fBAbsolute time format\fP
+
+Absolute time is defined as number of seconds since the Epoch
+(1970:01:01 00:00 +00:00).
+
+.RS
+.IP - 3
+ at seconds
+.RE
+
+.IP \[bu] 3
+\fBFreeform time format\fP
+.RS
+.IP - 3
+weekday names ("Sunday" - "Saturday" or abbreviated as "Sun" - "Sat")
+.IP - 3
+labels for points in time ("noon", "midnight")
+.IP - 3
+labels for a day relative to current day ("today", "yesterday")
+.IP - 3
+points back in time with relative offset from today (N is a number)
+.RS
+.IP
+"N" "seconds" / "minutes" / "hours" / "days" / "weeks" / "years" "ago"
+.IP
+"N" "secs" / "mins" / "hrs" ... "ago"
+.IP
+"N" "s" / "m" / "h" ... "ago"
+.RE
+.IP - 3
+time specification either in hh:mm:ss format or with AM/PM suffixes
+.IP - 3
+month names ("January" - "December" or abbreviated as "Jan" - "Dec")
+.RE
+
+.RE
+
+.B Informal grammar specification
+.RS
+.IP
+.BR STATEMENT " = " column " cmp_op " VALUE " | " \%STATEMENT " log_op " STATEMENT " | " \%(STATEMENT) " | " \%!(STATEMENT)
+.IP
+.BR VALUE " = " [VALUE " log_op " VALUE]
+.br
+For list-based types: string list. Matches strictly.
+The log_op must always be of one type within the whole list value.
+.IP
+.BR VALUE " = " {VALUE " log_op " VALUE}
+.br
+For list-based types: string list. Matches a subset.
+The log_op must always be of one type within the whole list value.
+.IP
+.BR VALUE " = " value
+.br
+For scalar types: number, size, percent, string (or string regex).
+.RE
+
+.SH EXAMPLES
+
+.SS Basic usage
+
+We start our examples with default configuration - \fBlvmconfig\fP(8) is
+helpful command to display configuration settings which are currently used,
+including all configuration related to reporting. We will use it throughout
+examples below to display current configuration.
+
+.nf
+# lvmconfig --type full global/units global/suffix \\
+   report/output_format  report/compact_output \\
+   report/compact_output_cols report/aligned \\
+   report/headings report/separator \\
+   report/list_item_separator report/prefixes \\
+   report/quoted report/columns_as_rows \\
+   report/binary_values_as_numeric report/time_format \\
+   report/mark_hidden_devices report/two_word_unknown_device \\
+   report/buffered
+units="h"
+suffix=1
+output_format="basic"
+compact_output=0
+compact_output_cols=""
+aligned=1
+headings=1
+separator=" "
+list_item_separator=","
+prefixes=0
+quoted=1
+columns_as_rows=0
+binary_values_as_numeric=0
+time_format="%Y-%m-%d %T %z"
+mark_hidden_devices=1
+two_word_unknown_device=0
+buffered=1
+.fi
+
+Also, we start with simple LVM layout with two PVs (/dev/sda, /dev/sdb),
+VG (vg) and two LVs (lvol0 and lvol1) in the VG. We display all possible
+reports as single commands here, see also \fBpvs\fP(8), \fBvgs\fP(8),
+\fBlvs\fP(8) man pages for more information. The field set for each report
+type is configured with configuration settings as we already mentioned in
+\fBmain report specifics\fP section in this man page.
+
+.nf
+# lvmconfig --type full report/pvs_cols report/pvs_sort \\
+   report/pvsegs_cols report/pvsegs_sort report/vgs_cols \\
+   report/vgs_sort report/lvs_cols report/lvs_sort \\
+   report/segs_cols report/segs_sort
+pvs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
+pvs_sort="pv_name"
+pvsegs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,
+             pvseg_start,pvseg_size"
+pvsegs_sort="pv_name,pvseg_start"
+vgs_cols="vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
+vgs_sort="vg_name"
+lvs_cols="lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,move_pv,
+          mirror_log,copy_percent,convert_lv"
+lvs_sort="vg_name,lv_name"
+segs_cols="lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
+segs_sort="vg_name,lv_name,seg_start"
+.fi
+
+.nf
+# pvs
+  PV         VG Fmt  Attr PSize   PFree 
+  /dev/sda   vg lvm2 a--  100.00m 88.00m
+  /dev/sdb   vg lvm2 a--  100.00m 92.00m
+
+# pvs --segments
+  PV         VG Fmt  Attr PSize   PFree  Start SSize
+  /dev/sda   vg lvm2 a--  100.00m 88.00m     0     1
+  /dev/sda   vg lvm2 a--  100.00m 88.00m     1     1
+  /dev/sda   vg lvm2 a--  100.00m 88.00m     2     1
+  /dev/sda   vg lvm2 a--  100.00m 88.00m     3    22
+  /dev/sdb   vg lvm2 a--  100.00m 92.00m     0     1
+  /dev/sdb   vg lvm2 a--  100.00m 92.00m     1     1
+  /dev/sdb   vg lvm2 a--  100.00m 92.00m     2    23
+
+# vgs
+  VG #PV #LV #SN Attr   VSize   VFree  
+  vg   2   2   0 wz--n- 200.00m 180.00m
+
+# lvs
+  LV    VG Attr       LSize Pool Origin Move Log Cpy%Sync Convert
+  lvol0 vg -wi-a----- 4.00m                                    
+  lvol1 vg rwi-a-r--- 4.00m                      100.00          
+
+# lvs --segments
+  LV    VG Attr       #Str Type   SSize
+  lvol0 vg -wi-a-----    1 linear 4.00m
+  lvol1 vg rwi-a-r---    2 raid1  4.00m
+.fi
+
+We will use \fBreport/lvs_cols\fP and \fBreport/lvs_sort\fP configuration
+settings to define our own list of fields to use and to sort by that is
+different from defaults. You can do this for other reports in same manner
+with \fBreport/{pvs,pvseg,vgs,seg}_{cols,sort}\fP configuration settings.
+Also note that in the example below, we don't display the "lv_time" field
+even though we're using it for sorting - this is allowed.
+
+.nf
+# lvmconfig --type full report/lvs_cols report/lvs_sort
+lvs_cols="lv_name,lv_size,origin,pool_lv,copy_percent"
+lvs_sort="-lv_time"
+
+# lvs
+  LV    LSize Origin Pool Cpy%Sync
+  lvol1 4.00m             100.00  
+  lvol0 4.00m  
+.fi
+
+You can use \fB-o|--options\fP command line option to override current
+configuration directly on command line.
+
+.nf
+# lvs -o lv_name,lv_size
+  LV    LSize
+  lvol1 4.00m
+  lvol0 4.00m
+
+# lvs -o+lv_layout
+  LV    LSize Origin Pool Cpy%Sync Layout    
+  lvol1 4.00m             100.00   raid,raid1
+  lvol0 4.00m                      linear    
+
+# lvs -o-origin
+  LV    LSize Pool Cpy%Sync
+  lvol1 4.00m      100.00  
+  lvol0 4.00m              
+
+# lvs -o lv_name,lv_size,origin -o+lv_layout -o-origin -O lv_name
+  LV    LSize Layout    
+  lvol0 4.00m linear    
+  lvol1 4.00m raid,raid1
+.fi
+
+You can obtain the same information with single command where all the
+information about PVs, PV segments, LVs and LV segments are obtained
+per VG under a single VG lock for consistency, see also \fBlvm fullreport\fP(8)
+man page for more information. The fullreport has its own configuration
+settings to define field sets to use, similar to individual reports as
+displayed above, but configuration settings have "_full" suffix now.
+This way, it's possible to configure different sets of fields to display
+and to sort by for individual reports as well as the full report.
+
+.nf
+# lvmconfig --type full report/pvs_cols_full \\
+   report/pvs_sort_full report/pvsegs_cols_full \\
+   report/pvsegs_sort_full report/vgs_cols_full \\
+   report/vgs_sort_full report/lvs_cols_full \\
+   report/lvs_sort_full report/segs_cols_full \\
+   report/segs_sort_full
+pvs_cols_full="pv_name,vg_name"
+pvs_sort_full="pv_name"
+pvsegs_cols_full="pv_name,pvseg_start,pvseg_size"
+pvsegs_sort_full="pv_uuid,pvseg_start"
+vgs_cols_full="vg_name"
+vgs_sort_full="vg_name"
+lvs_cols_full="lv_name,vg_name"
+lvs_sort_full="vg_name,lv_name"
+segs_cols_full="lv_name,seg_start,seg_size"
+segs_sort_full="lv_uuid,seg_start"
+.fi
+
+.nf
+# lvm fullreport
+  VG
+  vg
+  PV         VG
+  /dev/sda   vg
+  /dev/sdb   vg
+  LV    VG
+  lvol0 vg
+  lvol1 vg
+  PV         Start SSize
+  /dev/sda       0     1
+  /dev/sda       1     1
+  /dev/sda       2     1
+  /dev/sda       3    22
+  /dev/sdb       0     1
+  /dev/sdb       1     1
+  /dev/sdb       2    23
+  LV    Start SSize
+  lvol0    0  4.00m
+  lvol1    0  4.00m
+.fi
+
+.SS Automatic output compaction
+
+If you look at the lvs output above, you can see that the report also contains
+fields for which there is no information to display (e.g. the columns under
+"Origin" and "Pool" heading - the "origin" and "pool_lv" fields). LVM can
+automatically compact report output so such fields are not included in final
+output. To enable this feature and to compact all fields, use
+\fBreport/compact_output=1\fP in your configuration.
+
+.nf
+# lvmconfig --type full report/compact_output
+compact_output=1
+
+# lvs
+  LV    LSize Cpy%Sync
+  lvol1 4.00m 100.00  
+  lvol0 4.00m  
+
+# lvs vg/lvol0
+  LV    LSize 
+  lvol0 4.00m
+.fi
+
+Alternatively, you can define which fields should be compacted by configuring
+\fBreport/compact_output_cols\fP configuration setting (or \fB-o|--options #\fP
+command line option).
+
+.nf
+# lvmconfig --type full report/compact_output report/compact_output_cols
+compact_output=0
+compact_output_cols="origin"
+
+# lvs
+  LV    LSize Pool Cpy%Sync
+  lvol1 4.00m      100.00  
+  lvol0 4.00m    
+
+# lvs vg/lvol0
+  LV    LSize Pool 
+  lvol0 4.00m    
+
+# lvs -o#pool_lv        
+  LV    LSize Origin Cpy%Sync
+  lvol1 4.00m        100.00  
+  lvol0 4.00m                
+.fi
+
+We will use \fBreport/compact_output=1\fP for subsequent examples.
+
+.SS Further formatting options
+
+By default, LVM displays sizes in reports in human-readable form which means
+that the most suitable unit is used so it's easy to read. You can use
+\fBreport/units\fP configuration setting (or \fB--units\fP option directly
+on command line) and \fBreport/suffix\fP
+configuration setting (or \fB--nosuffix\fP command line option) to change this.
+
+.nf
+# lvs --units b --nosuffix
+  LV    LSize   Cpy%Sync
+  lvol1 4194304 100.00  
+  lvol0 4194304    
+.fi
+
+If you want to configure whether report headings are displayed or not, use
+\fBreport/headings\fP configuration settings (or \fB--noheadings\fP command
+line option).
+
+.nf
+# lvs --noheadings
+  lvol1 4.00m 100.00  
+  lvol0 4.00m     
+.fi
+
+In some cases, it may be useful to display report content as key=value pairs
+where key here is actually the field name. Use \fBreport/prefixes\fP
+configuration setting (or \fB--nameprefixes\fP command line option) to switch
+between standard output and the key=value output. The key=value pair is the
+output that is suitable for use in scripts and for other tools to parse easily.
+Usually, you also don't want to display headings with the output that has these
+key=value pairs.
+
+.nf
+# lvs --noheadings --nameprefixes
+  LVM2_LV_NAME='lvol1' LVM2_LV_SIZE='4.00m' LVM2_COPY_PERCENT='100.00'
+  LVM2_LV_NAME='lvol0' LVM2_LV_SIZE='4.00m' LVM2_COPY_PERCENT=''
+.fi
+
+To define whether quotation marks in key=value pairs should be used or not,
+use \fBreport/quoted\fP configuration setting (or \fB--unquoted\fP command
+line option).
+
+.nf
+# lvs --noheadings --nameprefixes --unquoted
+  LVM2_LV_NAME=lvol1 LVM2_LV_SIZE=4.00m LVM2_COPY_PERCENT=100.00
+  LVM2_LV_NAME=lvol0 LVM2_LV_SIZE=4.00m LVM2_COPY_PERCENT=
+.fi
+
+For easier parsing, you can even transpose the report so each column now
+becomes a row in the output. This is done with \fBreport/output_as_rows\fP
+configuration setting (or \fB--rows\fP command line option).
+
+.nf
+# lvs --noheadings --nameprefixes --unquoted --rows
+  LVM2_LV_NAME=lvol1 LVM2_LV_NAME=lvol0
+  LVM2_LV_SIZE=4.00m LVM2_LV_SIZE=4.00m
+  LVM2_COPY_PERCENT=100.00 LVM2_COPY_PERCENT=
+.fi
+
+Use \fBreport/separator\fP configuration setting (or \fB--separator\fP command
+line option) to define your own field separator to use.
+
+.nf
+# lvs --noheadings --nameprefixes --unquoted --separator " | "
+  LVM2_LV_NAME=lvol1 | LVM2_LV_SIZE=4.00m | LVM2_COPY_PERCENT=100.00
+  LVM2_LV_NAME=lvol0 | LVM2_LV_SIZE=4.00m | LVM2_COPY_PERCENT=
+.fi
+
+If you are using your own separator, the columns in the output are not aligned
+by default. Use \fBreport/aligned\fP configuration setting (or \fB--aligned\fP
+command line option) for LVM to add extra spaces in report to align the output
+properly.
+
+.nf
+# lvs --separator " | "
+  LV | LSize | Cpy%Sync
+  lvol1 | 4.00m | 100.00
+  lvol0 | 4.00m | 
+
+# lvs --separator " | " --aligned
+  LV    | LSize | Cpy%Sync
+  lvol1 | 4.00m | 100.00  
+  lvol0 | 4.00m |         
+.fi
+
+Let's display one one more field in addition ("lv_tags" in this example)
+for the lvs report output.
+
+.nf
+# lvs -o+lv_tags
+  LV    LSize Cpy%Sync LV Tags  
+  lvol1 4.00m 100.00            
+  lvol0 4.00m          tagA,tagB
+.fi
+
+The "LV Tags" column in the example above displays two list values,
+separated by "," character for LV lvol0. If you need different list item
+separator, use \fBreport/list_item_separator\fP configuration setting its
+definition.
+
+.nf
+# lvmconfig --type full report/list_item_separator
+list_item_separator=";"
+
+# lvs -o+tags
+  LV    LSize Cpy%Sync LV Tags  
+  lvol1 4.00m 100.00            
+  lvol0 4.00m          tagA;tagB
+.fi
+
+But let's still use the original "," character for list_item_separator
+for subsequent examples.
+
+Format for any of time values displayed in reports can be configured with
+\fBreport/time_format\fP configuretion setting. By default complete date
+and time is displayed, including timezone.
+
+.nf
+# lvmconfig --type full report/time_format
+time_format="%Y-%m-%d %T %z"
+
+# lvs -o+time
+  LV    LSize Cpy%Sync CTime                     
+  lvol1 4.00m 100.00   2016-08-29 12:53:36 +0200 
+  lvol0 4.00m          2016-08-29 10:15:17 +0200 
+.fi
+
+We can change time format in similar way as we do when using \fBdate\fP(1)
+command or \fBstrftime\fP(3) function
+(\fBlvmconfig --type default --withcomments report/time_format\fP will
+give you complete list of available formatting options). In the example
+below, we decided to use %s for number of seconds since Epoch (1970-01-01 UTC).
+
+.nf
+# lvmconfig --type full report/time_format
+time_format="%s"
+
+# lvs
+  LV    Attr       LSize Cpy%Sync LV Tags   CTime                     
+  lvol1 rwi-a-r--- 4.00m 100.00             1472468016                
+  lvol0 -wi-a----- 4.00m          tagA,tagB 1472458517     
+.fi
+
+The \fBlvs\fP does not display hidden LVs by default - to include these LVs
+in the output, you need to use \fB-a|--all\fP command line option. Names for
+these hidden LVs are displayed within square brackets.
+
+.nf
+# lvs -a
+  LV               LSize Cpy%Sync
+  lvol1            4.00m 100.00  
+  [lvol1_rimage_0] 4.00m         
+  [lvol1_rmeta_0]  4.00m         
+  [lvol1_rimage_1] 4.00m         
+  [lvol1_rmeta_1]  4.00m         
+  lvol0            4.00m      
+.fi
+
+You can configure LVM to display the square brackets for hidden LVs or not with
+\fBreport/mark_hidden_devices\fP configuration setting.
+
+.nf
+# lvmconfig --type full report/mark_hidden_devices
+mark_hidden_devices=0
+
+# lvs -a
+  LV             LSize Cpy%Sync
+  lvol1          4.00m 100.00  
+  lvol1_rimage_0 4.00m         
+  lvol1_rmeta_0  4.00m         
+  lvol1_rimage_1 4.00m         
+  lvol1_rmeta_1  4.00m         
+  lvol0          4.00m     
+.fi
+
+It's not recommended to use LV marks for hidden devices to decide whether the
+LV is the one to use by end users or not. Please, use "lv_role" field instead
+which can report whether the LV is "public" or "private". The private LVs are
+used by LVM only and they should not be accessed directly by end users.
+
+.nf
+# lvs -a -o+lv_role
+  LV             LSize Cpy%Sync Role                 
+  lvol1          4.00m 100.00   public               
+  lvol1_rimage_0 4.00m          private,raid,image   
+  lvol1_rmeta_0  4.00m          private,raid,metadata
+  lvol1_rimage_1 4.00m          private,raid,image   
+  lvol1_rmeta_1  4.00m          private,raid,metadata
+  lvol0          4.00m          public     
+.fi
+
+Some of the reporting fields that LVM reports are of binary nature. For such
+fields, it's either  possible to display word representation of the value
+(this is used by default) or numeric value (0/1 or -1 in case the value is
+undefined).
+
+.nf
+# lvs -o+lv_active_locally
+  LV    LSize Cpy%Sync ActLocal      
+  lvol1 4.00m 100.00   active locally
+  lvol0 4.00m          active locally
+.fi
+
+We can change the way how these binary values are displayed with
+\fBreport/binary_values_as_numeric\fP configuration setting.
+
+.nf
+# lvmconfig --type full report/binary_values_as_numeric
+binary_values_as_numeric=1
+
+# lvs -o+lv_active_locally
+  LV    LSize Cpy%Sync ActLocal  
+  lvol1 4.00m 100.00            1
+  lvol0 4.00m                   1
+.fi
+
+.SS Changing output format
+
+LVM can output reports in different formats - use \fBreport/output_format\fP
+configuration setting (or \fB--reportformat\fP command line option) to swith
+the report output format. Currently, LVM supports \fB"basic"\fP (all the examples
+we used above used this format) and \fB"JSON"\fP output format.
+
+.nf
+# lvs -o lv_name,lv_size --reportformat json
+  {
+      "report": [
+          {
+              "lv": [
+                  {"lv_name":"lvol1", "lv_size":"4.00m"},
+                  {"lv_name":"lvol0", "lv_size":"4.00m"}
+              ]
+          }
+      ]
+  }
+.fi
+
+Note that some configuration settings and command line options have no
+effect with certain report formats. For example, with \fBJSON\fP output,
+it doesn't have any meaning to use \fBreport/aligned\fP (\fB--aligned\fP),
+\fBreport/noheadings\fP (\fB--noheadings\fP), \fBreport/columns_as_rows\fP
+(\fB--rows\fP) or \fBreport/buffered\fP (\fB--unbuffered\fP). All these
+configuration settings and command line options are ignored if using the
+\fBJSON\fP report output format.
+
+.SS Selection
+
+If you need to select only specific rows from report, you can use LVM's
+report selection feature. If you call \fB<lvm_command> -S help\fP, you'll get
+quick help on selection. The help contains list of all fields that LVM
+can use in reports together with its type enclosed in square brackets.
+The example below contains a line from lvs -S help.
+
+.nf
+# lvs -S help
+    ...
+    lv_size                - Size of LV in current units. [size]
+    ...
+.fi
+
+This line tells you you that the "lv_size" field is of "size" type. If you
+look at the bottom of the help output, you can see section about
+"Selection operators" and its "Comparison operators".
+
+.nf
+# lvs -S help
+ ...
+Selection operators
+-------------------
+Comparison operators:
+   =~  - Matching regular expression. [regex]
+   !~  - Not matching regular expression. [regex]
+    =  - Equal to. [number, size, percent, string, string list, time]
+   !=  - Not equal to. [number, size, percent, string, string_list, time]
+   >=  - Greater than or equal to. [number, size, percent, time]
+    >  - Greater than. [number, size, percent, time]
+   <=  - Less than or equal to. [number, size, percent, time]
+    <  - Less than. [number, size, percent, time]
+since  - Since specified time (same as '>='). [time]
+after  - After specified time (same as '>'). [time]
+until  - Until specified time (same as '<='). [time]
+before  - Before specified time (same as '<'). [time]
+ ...
+.fi
+
+Here you can match comparison operators that you may use with the "lv_size"
+field which is of type "size" - it's =, !=, >=, >, <= and <. You can find
+applicable comparison operators for other fields and other field types the
+same way.
+
+To demostrate selection functionality in LVM, we will create more LVs in
+addition to lvol0 and lvol1 we used in our previous examples.
+
+.nf
+# lvs -o name,size,origin,snap_percent,tags,time
+  LV    LSize Origin Snap%  LV Tags        CTime                     
+  lvol4 4.00m lvol2  24.61                 2016-09-09 16:57:44 +0200 
+  lvol3 4.00m lvol2  5.08                  2016-09-09 16:56:48 +0200 
+  lvol2 8.00m               tagA,tagC,tagD 2016-09-09 16:55:12 +0200 
+  lvol1 4.00m                              2016-08-29 12:53:36 +0200 
+  lvol0 4.00m               tagA,tagB      2016-08-29 10:15:17 +0200
+.fi
+
+When selecting size and percent fields, we don't need to use units.
+For sizes, default "m" (for MiB) is used - this is the same behaviour
+as already used for LVM commands when specifying sizes (e.g. lvcreate -L).
+For percent fields, "%" is assumed automatically if it's not specified.
+The example below also demonstrates how several criteria can be combined
+together.
+
+.nf
+# lvs -o name,size,snap_percent -S 'size=8m'
+  LV    LSize 
+  lvol2 8.00m
+
+# lvs -o name,size,snap_percent -S 'size=8'
+  LV    LSize 
+  lvol2 8.00m
+
+# lvs -o name,size,snap_percent -S 'size < 5000k'
+  LV    LSize Snap% 
+  lvol4 4.00m 24.61 
+  lvol3 4.00m 5.08  
+  lvol1 4.00m       
+  lvol0 4.00m 
+
+# lvs -o name,size,snap_percent -S 'size < 5000k && snap_percent > 20'
+  LV    LSize Snap% 
+  lvol4 4.00m 24.61 
+
+# lvs -o name,size,snap_percent \\
+    -S '(size < 5000k && snap_percent > 20%) || name=lvol2'
+  LV    LSize Snap% 
+  lvol4 4.00m 24.61 
+  lvol2 8.00m       
+.fi
+
+You can also use selection together with processing-oriented commands.
+
+.nf
+# lvchange --addtag test -S 'size < 5000k'
+  Logical volume vg/lvol1 changed.
+  Logical volume vg/lvol0 changed.
+  Logical volume vg/lvol3 changed.
+  Logical volume vg/lvol4 changed.
+
+# lvchange --deltag test -S 'tags = test'
+  Logical volume vg/lvol1 changed.
+  Logical volume vg/lvol0 changed.
+  Logical volume vg/lvol3 changed.
+  Logical volume vg/lvol4 changed.
+.fi
+
+LVM can recognize more complex values used in selection criteria for
+string list and time field types. For string lists, you can match
+whole list strictly, its subset or intersection. Let's take "lv_tags"
+field as an example - we select only rows which contain "tagA" within
+tags field. We're using { } to denote that we're interested in subset
+that matches. If the subset has only one item, we can leave out { }.
+
+.nf
+# lvs -o name,tags -S 'tags={tagA}'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+  lvol0 tagA,tagB   
+  
+# lvs -o name,tags -S 'tags=tagA'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+  lvol0 tagA,tagB   
+.fi
+
+Depending on whether we use "&&" (or ",") or "||" ( or "#") as delimiter
+for items in the set we define in selection criterion for string list,
+we either match subset ("&&" or ",") or even intersection ("||" or "#").
+
+.nf
+# lvs -o name,tags -S 'tags={tagA,tagC,tagD}'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+
+# lvs -o name,tags -S 'tags={tagA || tagC || tagD}'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+  lvol0 tagA,tagB     
+.fi
+
+To match the complete set, use [ ] with "&&" (or ",") as delimiter for items.
+Also note that the order in which we define items in the set is not relevant.
+
+.nf
+# lvs -o name,tags -S 'tags=[tagA]'                
+
+# lvs -o name,tags -S 'tags=[tagB,tagA]'
+  LV    LV Tags  
+  lvol0 tagA,tagB
+.fi
+
+If you use [ ] with "||" (or "#"), this is exactly the same as using { }.
+
+.nf
+# lvs -o name,tags -S 'tags=[tagA || tagC || tagD]'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+  lvol0 tagA,tagB  
+.fi
+
+To match a set with no items, use "" to denote this (note that we have
+output compaction enabled so the "LV Tags" column is not displayed in
+the example below because it's blank and so it gets compacted).
+
+.nf
+# lvs -o name,tags -S 'tags=""'
+  LV    
+  lvol4
+  lvol3
+  lvol1
+
+# lvs -o name,tags -S 'tags!=""'
+  LV    LV Tags       
+  lvol2 tagA,tagC,tagD
+  lvol0 tagA,tagB  
+.fi
+
+When doing selection based on time fields, we can use either standard,
+absolute or freeform time expressions in selection criteria. Examples below
+are using standard forms.
+
+.nf
+# lvs -o name,time
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time -S 'time since "2016-09-01"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+
+# lvs -o name,time -S 'time since "2016-09-09 16:56"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+
+# lvs -o name,time -S 'time since "2016-09-09 16:57:30"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+
+# lvs -o name,time \\ 
+    -S 'time since "2016-08-29" && time until "2016-09-09 16:55:12"'
+  LV    CTime                     
+  lvol2 2016-09-09 16:55:12 +0200 
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time \\
+    -S 'time since "2016-08-29" && time before "2016-09-09 16:55:12"'
+  LV    CTime                     
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+.fi
+
+Time operators have synonyms: ">=" for since, "<=" for until,
+">" for "after" and "<" for "before".
+
+.nf
+# lvs -o name,time \\
+    -S 'time >= "2016-08-29" && time <= "2016-09-09 16:55:30"'
+  LV    CTime                     
+  lvol2 2016-09-09 16:55:12 +0200 
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time \\
+    -S 'time since "2016-08-29" && time < "2016-09-09 16:55:12"'
+  LV    CTime                     
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+.fi
+
+Example below demonstrates using absolute time expression.
+
+.nf
+# lvs -o name,time --config report/time_format="%s"
+  LV    CTime                     
+  lvol4 1473433064                
+  lvol3 1473433008                
+  lvol2 1473432912                
+  lvol1 1472468016                
+  lvol0 1472458517  
+
+# lvs -o name,time -S 'time since @1473433008'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+.fi
+
+Examples below demonstrates using freeform time expressions.
+
+.nf
+# lvs -o name,time -S 'time since "2 weeks ago"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time -S 'time since "1 week ago"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+
+# lvs -o name,time -S 'time since "2 weeks ago"'
+  LV    CTime                     
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time -S 'time before "1 week ago"'
+  LV    CTime                     
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+
+# lvs -o name,time -S 'time since "68 hours ago"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+
+# lvs -o name,time -S 'time since "1 year 3 months ago"'
+  LV    CTime                     
+  lvol4 2016-09-09 16:57:44 +0200 
+  lvol3 2016-09-09 16:56:48 +0200 
+  lvol2 2016-09-09 16:55:12 +0200 
+  lvol1 2016-08-29 12:53:36 +0200 
+  lvol0 2016-08-29 10:15:17 +0200 
+.fi
+
+.SS Command log reporting
+
+As described in \fBcategorization based on reporting facility\fP section
+at the beginning of this document, both \fBreport-oriented\fP and
+\fBprocessing-oriented\fP LVM commands can report the command log if
+this is enabled with \fBlog/report_command_log\fP configuration setting.
+Just like any other report, we can set the set of fields to display
+(\fBlog/command_log_cols\fP) and to sort by (\fBlog/command_log_sort\fP)
+for this report.
+
+.nf
+# lvmconfig --type full log/report_command_log log/command_log_cols \\
+   log/command_log_sort log/command_log_selection
+report_command_log=1
+command_log_cols="log_seq_num,log_type,log_context,log_object_type,
+                  log_object_name,log_object_group,log_message,
+                  log_errno,log_ret_code"
+command_log_sort="log_seq_num"
+command_log_selection="!(log_type=status && message=success)"
+
+
+# lvs
+  Logical Volume
+  ==============
+  LV    LSize Cpy%Sync
+  lvol1 4.00m 100.00  
+  lvol0 4.00m         
+  
+  Command Log
+  ===========
+  Seq LogType Context ObjType ObjName ObjGrp  Msg     Errno RetCode
+.fi
+
+As you can see, the command log is empty (it contains only field names).
+By default, LVM uses selection on the command log report and this case
+no row matched the selection criteria, see also \fBlog report specifics\fP
+section in this document for more information. We're displaying complete
+log report in the example below where we can see that both LVs lvol0 and
+lvol1 were successfully processed as well as the VG vg they are part of.
+
+.nf
+# lvmconfig --type full log/command_log_selection
+command_log_selection="all"
+
+# lvs
+  Logical Volume
+  ==============
+  LV    LSize Cpy%Sync
+  lvol1 4.00m 100.00  
+  lvol0 4.00m         
+  
+  Command Log
+  ===========
+  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
+    1 status  processing lv      lvol0   vg      success     0       1
+    2 status  processing lv      lvol1   vg      success     0       1
+    3 status  processing vg      vg              success     0       1
+
+# lvchange -an vg/lvol1
+  Command Log
+  ===========
+  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
+    1 status  processing lv      lvol1   vg      success     0       1
+    2 status  processing vg      vg              success     0       1
+.fi
+
+.SS Handling multiple reports per single command
+
+To configure the log report directly on command line, we need to use
+\fB--configreport\fP option before we start any \fB-o|--options\fP,
+\fB-O|--sort\fP or \fB-S|--select\fP that is targeted for log report.
+
+.nf
+# lvs -o lv_name,lv_size --configreport log -o log_object_type, \\
+   log_object_name,log_message,log_ret_code
+  Logical Volume
+  ==============
+  LV    LSize
+  lvol1 4.00m
+  lvol0 4.00m
+  
+  Command Log
+  ===========
+  ObjType ObjName Msg     RetCode
+  lv      lvol0   success       1
+  lv      lvol1   success       1
+  vg      vg      success       1
+.fi
+
+The \fBlvm fullreport\fP, with or without log report, consists of several
+reports - the \fB--configreport\fP is also used to target particular
+subreport here.
+
+Below is an extended example with \fBlvm fullreport\fP to illustrate
+combination of various options. The report output is in JSON format.
+Also, we configure "vg", "pvseg", "seg" and "log" subreport to contain
+only specified fields. For the "pvseg" subreport, we're intested only
+in PV names having "sda" in their name. For the "log" subreport we're
+intested only in log lines related to either "lvol0" object or object
+having "sda" in its name. Also, for the log subreport we define ordering
+to be based on "log_object_type" field.
+
+.nf
+# lvm fullreport --reportformat json \\
+   --configreport vg -o vg_name,vg_size \\
+   --configreport pvseg -o pv_name,pvseg_start \\
+                        -S 'pv_name=~sda' \\
+   --configreport seg -o lv_name,seg_start \\
+   --configreport log -o log_object_type,log_object_name \\
+                      -O log_object_type \\
+                      -S 'log_object_name=lvol0 || \\
+                          log_object_name=~sda'
+  {
+      "report": [
+          {
+              "vg": [
+                  {"vg_name":"vg", "vg_size":"200.00m"}
+              ]
+              ,
+              "pv": [
+                  {"pv_name":"/dev/sda", "vg_name":"vg"},
+                  {"pv_name":"/dev/sdb", "vg_name":"vg"}
+              ]
+              ,
+              "lv": [
+                  {"lv_name":"lvol0", "vg_name":"vg"},
+                  {"lv_name":"lvol1", "vg_name":"vg"}
+              ]
+              ,
+              "pvseg": [
+                  {"pv_name":"/dev/sda", "pvseg_start":"0"},
+                  {"pv_name":"/dev/sda", "pvseg_start":"1"},
+                  {"pv_name":"/dev/sda", "pvseg_start":"2"},
+                  {"pv_name":"/dev/sda", "pvseg_start":"3"}
+              ]
+              ,
+              "seg": [
+                  {"lv_name":"lvol0", "seg_start":"0 "},
+                  {"lv_name":"lvol1", "seg_start":"0 "}
+              ]
+          }
+      ]
+      ,
+      "log": [
+          {"log_object_type":"lv", "log_object_name":"lvol0"},
+          {"log_object_type":"lv", "log_object_name":"lvol0"},
+          {"log_object_type":"pv", "log_object_name":"/dev/sda"},
+          {"log_object_type":"pv", "log_object_name":"/dev/sda"},
+      ]
+  }
+.fi
+
+.SS Report extensions for LVM shell
+
+As already stated in \fBlog report coverage\fP paragraph under
+\fBlog report specifics\fP in this documentation, when using \fBLVM shell\fP
+the \fBlog report\fP coverage is wider. There's also special command
+designed to query last command's log report in the \fBLVM shell\fP -
+the \fBlastlog\fP command.
+
+The example below illustrates a situation where we called lvs command.
+After that, we inspected the log report with the \fBlastlog\fP, without
+any selection so all the log report is displayed on output. Then we called
+\fBlastlog\fP further, giving various selection criteria. Then we ran
+unknown LVM command "abc" for which the log report displays appropriate
+failure state.
+
+.nf
+# lvm
+lvm> lvs
+  Logical Volume
+  ==============
+  LV    LSize Cpy%Sync
+  lvol1 4.00m 100.00  
+  lvol0 4.00m         
+  
+  Command Log
+  ===========
+  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
+    1 status  processing lv      lvol0   vg      success     0       1
+    2 status  processing lv      lvol1   vg      success     0       1
+    3 status  processing vg      vg              success     0       1
+    4 status  shell      cmd     lvs             success     0       1
+
+lvm> lastlog    
+  Command Log
+  ===========
+  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
+    1 status  processing lv      lvol0   vg      success     0       1
+    2 status  processing lv      lvol1   vg      success     0       1
+    3 status  processing vg      vg              success     0       1
+    4 status  shell      cmd     lvs             success     0       1
+
+lvm> lastlog -S log_object_type=lv
+  Command Log
+  ===========
+  Seq LogType Context    ObjType ObjName ObjGrp  Msg     Errno RetCode
+    1 status  processing lv      lvol0   vg      success     0       1
+    2 status  processing lv      lvol1   vg      success     0       1
+
+lvm> lastlog -S log_context=shell
+  Command Log
+  ===========
+  Seq LogType Context ObjType ObjName ObjGrp  Msg     Errno RetCode
+    4 status  shell   cmd     lvs             success     0       1
+
+lvm> abc
+  Command Log
+  ===========
+  Seq LogType Context ObjType ObjName ObjGrp  Msg                                 Errno RetCode
+    1 error   shell   cmd     abc             No such command 'abc'.  Try 'help'.    -1       0
+    2 status  shell   cmd     abc             failure                                -1       2
+.fi
+
+.SH SEE ALSO
+\fBlvm\fP (8),
+\fBlvmconfig\fP (8),
+\fBlvm fullreport\fP (8)
diff --git a/man/lvmsadc.8.des b/man/lvmsadc.8.des
deleted file mode 100644
index e4cfd8d..0000000
--- a/man/lvmsadc.8.des
+++ /dev/null
@@ -1,3 +0,0 @@
-lvmsadc is not currently supported in LVM. The device-mapper statistics
-facility provides similar performance metrics using the \fBdmstats(8)\fP
-command.
diff --git a/man/lvmsadc.8_des b/man/lvmsadc.8_des
new file mode 100644
index 0000000..e4cfd8d
--- /dev/null
+++ b/man/lvmsadc.8_des
@@ -0,0 +1,3 @@
+lvmsadc is not currently supported in LVM. The device-mapper statistics
+facility provides similar performance metrics using the \fBdmstats(8)\fP
+command.
diff --git a/man/lvmsadc.8_end b/man/lvmsadc.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvmsadc.8_pregen b/man/lvmsadc.8_pregen
new file mode 100644
index 0000000..6ee5e3e
--- /dev/null
+++ b/man/lvmsadc.8_pregen
@@ -0,0 +1,280 @@
+.TH LVMSADC 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvmsadc \- Collect activity data
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvmsadc\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvmsadc is not currently supported in LVM. The device-mapper statistics
+facility provides similar performance metrics using the \fBdmstats(8)\fP
+command.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvmsadc\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvmsar.8.des b/man/lvmsar.8.des
deleted file mode 100644
index 3177506..0000000
--- a/man/lvmsar.8.des
+++ /dev/null
@@ -1,3 +0,0 @@
-lvmsar is not currently supported in LVM. The device-mapper statistics
-facility provides similar performance metrics using the \fBdmstats(8)\fP
-command.
diff --git a/man/lvmsar.8_des b/man/lvmsar.8_des
new file mode 100644
index 0000000..3177506
--- /dev/null
+++ b/man/lvmsar.8_des
@@ -0,0 +1,3 @@
+lvmsar is not currently supported in LVM. The device-mapper statistics
+facility provides similar performance metrics using the \fBdmstats(8)\fP
+command.
diff --git a/man/lvmsar.8_end b/man/lvmsar.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvmsar.8_pregen b/man/lvmsar.8_pregen
new file mode 100644
index 0000000..f0f57c8
--- /dev/null
+++ b/man/lvmsar.8_pregen
@@ -0,0 +1,296 @@
+.TH LVMSAR 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvmsar \- Create activity report
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvmsar\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvmsar is not currently supported in LVM. The device-mapper statistics
+facility provides similar performance metrics using the \fBdmstats(8)\fP
+command.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvmsar\fP
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--full\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--stdin\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--full\fP.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--stdin\fP.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvmsystemid.7.in b/man/lvmsystemid.7.in
deleted file mode 100644
index 3aea996..0000000
--- a/man/lvmsystemid.7.in
+++ /dev/null
@@ -1,354 +0,0 @@
-.TH "LVMSYSTEMID" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmsystemid \(em LVM system ID
-
-.SH DESCRIPTION
-
-Local VGs may exist on shared storage where they are visible to multiple
-hosts.  These VGs are intended to be used by only a single machine, even
-though they are visible to many.  A system_id identifying a single host
-can be assigned to a VG to indicate the VGs owner.  The VG owner can use
-the VG as usual, and all other hosts will ignore it.  This protects the VG
-from accidental use by other hosts.
-
-The system_id is not a dynamic property, and can only be changed in very
-limited circumstances (see vgexport and vgimport).  Even limited changes
-to the VG system_id are not perfectly reflected across hosts.  A more
-coherent view of shared storage requires using an inter-host locking
-system to coordinate access and update caches.
-
-The system_id is a string uniquely identifying a host.  It can be manually
-set to a custom value or it can be assigned automatically by lvm using a
-unique identifier already available on the host, e.g. machine-id or uname.
-
-In vgcreate, the local system_id is saved in the new VG metadata.  The
-local host owns the new VG, and other hosts cannot use it.
-
-A VG without a system_id can be used by any host, and a VG with a
-system_id can only be used by a host with a matching system_id.  A
-.B foreign VG
-is a VG with a system_id as viewed by a host with a system_id
-that does not match the VGs system_id.  (Or from a host without a
-system_id.)
-
-Valid system_id characters are the same as valid VG name characters.  If a
-system_id contains invalid characters, those characters are omitted and
-remaining characters are used.  If a system_id is longer than the maximum
-name length, the characters up to the maximum length are used.  The
-maximum length of a system_id is 128 characters.
-
-.SS Limitations and warnings
-
-To benefit fully from system_id, all hosts must have system_id set, and
-VGs must have system_id set.  A VG on shared storage can be damaged or
-destroyed in some cases which the user must be careful to avoid.
-
-.IP \[bu] 2
-A VG without a system_id can be used without restriction from any host,
-even from hosts that have a system_id.  Many VGs will not have a system_id
-and are unprotected.  Verify that a VG has a system_id by running the
-command 'vgs -o+systemid'
-
-A VG will not have a system_id if it was created before this feature was
-added to lvm, or if it was created by a host that did not have a system_id
-defined.  A system_id can be assigned to these VGs by using vgchange
---systemid (see below).
-
-.IP \[bu] 2
-Two hosts should not be assigned the same system_id.  Doing so defeats
-the purpose of the system_id which is to distinguish different hosts.
-
-.IP \[bu] 2
-Orphan PVs (or unused devices) on shared storage are completely
-unprotected by the system_id feature.  Commands that use these PVs, such
-as vgcreate or vgextend, are not prevented from performing conflicting
-operations and corrupting the PVs.  See the
-.B orphans
-section for more information.
-
-.IP \[bu] 2
-A host using an old version of lvm without the system_id feature will not
-recognize a new system_id in VGs from other hosts.  Even though the old
-version of lvm is not blocked from reading a VG with a system_id, it is
-blocked from writing to the VG (or its LVs).  The new system_id changes
-the write mode of a VG, making it appear read-only to previous lvm
-versions.
-
-This also means that if a host downgrades its version of lvm, it would
-lose access to any VGs it had created with a system_id.  To avoid this,
-the system_id should be removed from VGs before downgrading to an lvm
-version without the system_id feature.
-
-.P
-
-.SS Types of VG access
-
-A local VG is meant to be used by a single host.
-.br
-A shared or clustered VG is meant to be used by multiple hosts.
-.br
-These can be further distinguished as:
-
-.B Unrestricted:
-A local VG that has no system_id.  This VG type is unprotected and
-accessible to any host.
-
-.B Owned:
-A local VG that has a system_id set, as viewed from the one host with a
-matching system_id (the owner).  This VG type is by definition acessible.
-
-.B Foreign:
-A local VG that has a system_id set, as viewed from any host with an
-unmatching system_id (or no system_id).  It is owned by another host.
-This VG type is by definition not accessible.
-
-.B Exported:
-A local VG that has been exported with vgexport and has no system_id.
-This VG type can only be accessed by vgimport which will change it to
-owned.
-
-.B Shared:
-A shared or "lockd" VG has lock_type set and no system_id.
-A shared VG is meant to be used on shared storage from multiple hosts,
-and is only accessible to hosts using lvmlockd. Applicable only if LVM
-is compiled with lockd support.
-
-.B Clustered:
-A clustered or "clvm" VG has the clustered flag set and no system_id.
-A clustered VG is meant to be used on shared storage from multiple hosts,
-and is only accessible to hosts using clvmd.
-
-.SS system_id_source
-
-A host's own system_id can be defined in a number of ways.  lvm.conf
-global/system_id_source defines the method lvm will use to find the local
-system_id:
-
-.TP
-.B none
-.br
-
-lvm will not use a system_id.  lvm is allowed to access VGs without a
-system_id, and will create new VGs without a system_id.  An undefined
-system_id_source is equivalent to none.
-
-.I lvm.conf
-.nf
-global {
-    system_id_source = "none"
-}
-.fi
-
-.TP
-.B machineid
-.br
-
-The content of /etc/machine-id is used as the system_id if available.
-See
-.BR machine-id (5)
-and
-.BR systemd-machine-id-setup (1)
-to check if machine-id is available on the host.
-
-.I lvm.conf
-.nf
-global {
-    system_id_source = "machineid"
-}
-.fi
-
-.TP
-.B uname
-.br
-
-The string utsname.nodename from
-.BR uname (2)
-is used as the system_id.  A uname beginning with "localhost"
-is ignored and equivalent to none.
-
-.I lvm.conf
-.nf
-global {
-    system_id_source = "uname"
-}
-.fi
-
-.TP
-.B lvmlocal
-.br
-
-The system_id is defined in lvmlocal.conf local/system_id.
-
-.I lvm.conf
-.nf
-global {
-    system_id_source = "lvmlocal"
-}
-.fi
-
-.I lvmlocal.conf
-.nf
-local {
-    system_id = "example_name"
-}
-.fi
-
-.TP
-.B file
-.br
-
-The system_id is defined in a file specified by lvm.conf
-global/system_id_file.
-
-.I lvm.conf
-.nf
-global {
-    system_id_source = "file"
-    system_id_file = "/path/to/file"
-}
-.fi
-
-.LP
-
-Changing system_id_source will often cause the system_id to change, which
-may prevent the host from using VGs that it previously used (see
-extra_system_ids below to handle this.)
-
-If a system_id_source other than none fails to resolve a system_id, the
-host will be allowed to access VGs with no system_id, but will not be
-allowed to access VGs with a defined system_id.
-
-.SS extra_system_ids
-
-In some cases, it may be useful for a host to access VGs with different
-system_id's, e.g. if a host's system_id changes, and it wants to use VGs
-that it created with its old system_id.  To allow a host to access VGs
-with other system_id's, those other system_id's can be listed in
-lvmlocal.conf local/extra_system_ids.
-
-.I lvmlocal.conf
-.nf
-local {
-    extra_system_ids = [ "my_other_name" ]
-}
-.fi
-
-.SS vgcreate
-
-In vgcreate, the host running the command assigns its own system_id to the
-new VG.  To override this and set another system_id:
-
-.B vgcreate --systemid
-.I SystemID VG Devices
-
-Overriding the system_id makes it possible for a host to create a VG that
-it may not be able to use.  Another host with a system_id matching the one
-specified may not recognize the new VG without manually rescanning
-devices.
-
-If the --systemid argument is an empty string (""), the VG is created with
-no system_id, making it accessible to other hosts (see warnings above.)
-
-.SS report/display
-
-The system_id of a VG is displayed with the "systemid" reporting option.
-
-Report/display commands ignore foreign VGs by default.  To report foreign
-VGs, the --foreign option can be used.  This causes the VGs to be read
-from disk.  Because lvmetad caching is not used, this option can cause
-poor performance.
-
-.B vgs --foreign -o+systemid
-
-When a host with no system_id sees foreign VGs, it warns about them as
-they are skipped.  The host should be assigned a system_id, after which
-standard reporting commands will silently ignore foreign VGs.
-
-.SS vgexport/vgimport
-
-vgexport clears the system_id.
-
-Other hosts will continue to see a newly exported VG as foreign because of
-local caching (when lvmetad is used).  Manually updating the local lvmetad
-cache with pvscan --cache will allow a host to recognize the newly
-exported VG.
-
-vgimport sets the VG system_id to the local system_id as determined by
-lvm.conf system_id_source.  vgimport automatically scans storage for
-newly exported VGs.
-
-After vgimport, the exporting host will continue to see the VG as
-exported, and not owned by the new host.  Manually updating the local
-cache with pvscan --cache will allow a host to recognize the newly
-imported VG as foreign.
-
-.SS vgchange
-
-A host can change the system_id of its own VGs, but the command requires
-confirmation because the host may lose access to the VG being changed:
-
-.B vgchange --systemid
-.I SystemID VG
-
-The system_id can be removed from a VG by specifying an empty string ("")
-as the new system_id.  This makes the VG accessible to other hosts (see
-warnings above.)
-
-A host cannot directly change the system_id of a foreign VG.
-
-To move a VG from one host to another, vgexport and vgimport should be
-used.
-
-To forcibly gain ownership of a foreign VG, a host can add the foreign
-system_id to its extra_system_ids list, change the system_id of the
-foreign VG to its own, and remove the foreign system_id from its
-extra_system_ids list.
-
-.SS shared VGs
-
-A shared/lockd VG has no system_id set, allowing multiple hosts to
-use it via lvmlockd.  Changing a VG to a lockd type will clear the
-existing system_id. Applicable only if LVM is compiled with lockd
-support.
-
-.SS clustered VGs
-
-A clustered/clvm VG has no system_id set, allowing multiple hosts to
-use it via clvmd.  Changing a VG to clustered will clear the existing
-system_id.  Changing a VG to not clustered will set the system_id to the
-host running the vgchange command.
-
-.SS creation_host
-
-In vgcreate, the VG metadata field creation_host is set by default to the
-host's uname.  The creation_host cannot be changed, and is not used to
-control access.  When system_id_source is "uname", the system_id and
-creation_host will be the same.
-
-.SS orphans
-
-Orphan PVs are unused devices; they are not currently used in any VG.
-Because of this, they are not protected by a system_id, and any host can
-use them.  Coordination of changes to orphan PVs is beyond the scope of
-system_id.  The same is true of any block device that is not a PV.
-
-The effects of this are especially evident when lvm uses lvmetad caching.
-For example, if multiple hosts see an orphan PV, and one host creates a VG
-using the orphan, the other hosts will continue to report the PV as an
-orphan.  Nothing would automatically prevent the other hosts from using
-the newly allocated PV and corrupting it.  If the other hosts run a
-command to rescan devices, and update lvmetad, they would then recognize
-that the PV has been used by another host.  A command that rescans devices
-could be pvscan --cache, or vgs --foreign.
-
-.SH SEE ALSO
-.BR vgcreate (8),
-.BR vgchange (8),
-.BR vgimport (8),
-.BR vgexport (8),
-.BR lvm.conf (5),
-.BR machine-id (5),
-.BR uname (2),
-.BR vgs (8)
-
diff --git a/man/lvmsystemid.7_main b/man/lvmsystemid.7_main
new file mode 100644
index 0000000..3aea996
--- /dev/null
+++ b/man/lvmsystemid.7_main
@@ -0,0 +1,354 @@
+.TH "LVMSYSTEMID" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmsystemid \(em LVM system ID
+
+.SH DESCRIPTION
+
+Local VGs may exist on shared storage where they are visible to multiple
+hosts.  These VGs are intended to be used by only a single machine, even
+though they are visible to many.  A system_id identifying a single host
+can be assigned to a VG to indicate the VGs owner.  The VG owner can use
+the VG as usual, and all other hosts will ignore it.  This protects the VG
+from accidental use by other hosts.
+
+The system_id is not a dynamic property, and can only be changed in very
+limited circumstances (see vgexport and vgimport).  Even limited changes
+to the VG system_id are not perfectly reflected across hosts.  A more
+coherent view of shared storage requires using an inter-host locking
+system to coordinate access and update caches.
+
+The system_id is a string uniquely identifying a host.  It can be manually
+set to a custom value or it can be assigned automatically by lvm using a
+unique identifier already available on the host, e.g. machine-id or uname.
+
+In vgcreate, the local system_id is saved in the new VG metadata.  The
+local host owns the new VG, and other hosts cannot use it.
+
+A VG without a system_id can be used by any host, and a VG with a
+system_id can only be used by a host with a matching system_id.  A
+.B foreign VG
+is a VG with a system_id as viewed by a host with a system_id
+that does not match the VGs system_id.  (Or from a host without a
+system_id.)
+
+Valid system_id characters are the same as valid VG name characters.  If a
+system_id contains invalid characters, those characters are omitted and
+remaining characters are used.  If a system_id is longer than the maximum
+name length, the characters up to the maximum length are used.  The
+maximum length of a system_id is 128 characters.
+
+.SS Limitations and warnings
+
+To benefit fully from system_id, all hosts must have system_id set, and
+VGs must have system_id set.  A VG on shared storage can be damaged or
+destroyed in some cases which the user must be careful to avoid.
+
+.IP \[bu] 2
+A VG without a system_id can be used without restriction from any host,
+even from hosts that have a system_id.  Many VGs will not have a system_id
+and are unprotected.  Verify that a VG has a system_id by running the
+command 'vgs -o+systemid'
+
+A VG will not have a system_id if it was created before this feature was
+added to lvm, or if it was created by a host that did not have a system_id
+defined.  A system_id can be assigned to these VGs by using vgchange
+--systemid (see below).
+
+.IP \[bu] 2
+Two hosts should not be assigned the same system_id.  Doing so defeats
+the purpose of the system_id which is to distinguish different hosts.
+
+.IP \[bu] 2
+Orphan PVs (or unused devices) on shared storage are completely
+unprotected by the system_id feature.  Commands that use these PVs, such
+as vgcreate or vgextend, are not prevented from performing conflicting
+operations and corrupting the PVs.  See the
+.B orphans
+section for more information.
+
+.IP \[bu] 2
+A host using an old version of lvm without the system_id feature will not
+recognize a new system_id in VGs from other hosts.  Even though the old
+version of lvm is not blocked from reading a VG with a system_id, it is
+blocked from writing to the VG (or its LVs).  The new system_id changes
+the write mode of a VG, making it appear read-only to previous lvm
+versions.
+
+This also means that if a host downgrades its version of lvm, it would
+lose access to any VGs it had created with a system_id.  To avoid this,
+the system_id should be removed from VGs before downgrading to an lvm
+version without the system_id feature.
+
+.P
+
+.SS Types of VG access
+
+A local VG is meant to be used by a single host.
+.br
+A shared or clustered VG is meant to be used by multiple hosts.
+.br
+These can be further distinguished as:
+
+.B Unrestricted:
+A local VG that has no system_id.  This VG type is unprotected and
+accessible to any host.
+
+.B Owned:
+A local VG that has a system_id set, as viewed from the one host with a
+matching system_id (the owner).  This VG type is by definition acessible.
+
+.B Foreign:
+A local VG that has a system_id set, as viewed from any host with an
+unmatching system_id (or no system_id).  It is owned by another host.
+This VG type is by definition not accessible.
+
+.B Exported:
+A local VG that has been exported with vgexport and has no system_id.
+This VG type can only be accessed by vgimport which will change it to
+owned.
+
+.B Shared:
+A shared or "lockd" VG has lock_type set and no system_id.
+A shared VG is meant to be used on shared storage from multiple hosts,
+and is only accessible to hosts using lvmlockd. Applicable only if LVM
+is compiled with lockd support.
+
+.B Clustered:
+A clustered or "clvm" VG has the clustered flag set and no system_id.
+A clustered VG is meant to be used on shared storage from multiple hosts,
+and is only accessible to hosts using clvmd.
+
+.SS system_id_source
+
+A host's own system_id can be defined in a number of ways.  lvm.conf
+global/system_id_source defines the method lvm will use to find the local
+system_id:
+
+.TP
+.B none
+.br
+
+lvm will not use a system_id.  lvm is allowed to access VGs without a
+system_id, and will create new VGs without a system_id.  An undefined
+system_id_source is equivalent to none.
+
+.I lvm.conf
+.nf
+global {
+    system_id_source = "none"
+}
+.fi
+
+.TP
+.B machineid
+.br
+
+The content of /etc/machine-id is used as the system_id if available.
+See
+.BR machine-id (5)
+and
+.BR systemd-machine-id-setup (1)
+to check if machine-id is available on the host.
+
+.I lvm.conf
+.nf
+global {
+    system_id_source = "machineid"
+}
+.fi
+
+.TP
+.B uname
+.br
+
+The string utsname.nodename from
+.BR uname (2)
+is used as the system_id.  A uname beginning with "localhost"
+is ignored and equivalent to none.
+
+.I lvm.conf
+.nf
+global {
+    system_id_source = "uname"
+}
+.fi
+
+.TP
+.B lvmlocal
+.br
+
+The system_id is defined in lvmlocal.conf local/system_id.
+
+.I lvm.conf
+.nf
+global {
+    system_id_source = "lvmlocal"
+}
+.fi
+
+.I lvmlocal.conf
+.nf
+local {
+    system_id = "example_name"
+}
+.fi
+
+.TP
+.B file
+.br
+
+The system_id is defined in a file specified by lvm.conf
+global/system_id_file.
+
+.I lvm.conf
+.nf
+global {
+    system_id_source = "file"
+    system_id_file = "/path/to/file"
+}
+.fi
+
+.LP
+
+Changing system_id_source will often cause the system_id to change, which
+may prevent the host from using VGs that it previously used (see
+extra_system_ids below to handle this.)
+
+If a system_id_source other than none fails to resolve a system_id, the
+host will be allowed to access VGs with no system_id, but will not be
+allowed to access VGs with a defined system_id.
+
+.SS extra_system_ids
+
+In some cases, it may be useful for a host to access VGs with different
+system_id's, e.g. if a host's system_id changes, and it wants to use VGs
+that it created with its old system_id.  To allow a host to access VGs
+with other system_id's, those other system_id's can be listed in
+lvmlocal.conf local/extra_system_ids.
+
+.I lvmlocal.conf
+.nf
+local {
+    extra_system_ids = [ "my_other_name" ]
+}
+.fi
+
+.SS vgcreate
+
+In vgcreate, the host running the command assigns its own system_id to the
+new VG.  To override this and set another system_id:
+
+.B vgcreate --systemid
+.I SystemID VG Devices
+
+Overriding the system_id makes it possible for a host to create a VG that
+it may not be able to use.  Another host with a system_id matching the one
+specified may not recognize the new VG without manually rescanning
+devices.
+
+If the --systemid argument is an empty string (""), the VG is created with
+no system_id, making it accessible to other hosts (see warnings above.)
+
+.SS report/display
+
+The system_id of a VG is displayed with the "systemid" reporting option.
+
+Report/display commands ignore foreign VGs by default.  To report foreign
+VGs, the --foreign option can be used.  This causes the VGs to be read
+from disk.  Because lvmetad caching is not used, this option can cause
+poor performance.
+
+.B vgs --foreign -o+systemid
+
+When a host with no system_id sees foreign VGs, it warns about them as
+they are skipped.  The host should be assigned a system_id, after which
+standard reporting commands will silently ignore foreign VGs.
+
+.SS vgexport/vgimport
+
+vgexport clears the system_id.
+
+Other hosts will continue to see a newly exported VG as foreign because of
+local caching (when lvmetad is used).  Manually updating the local lvmetad
+cache with pvscan --cache will allow a host to recognize the newly
+exported VG.
+
+vgimport sets the VG system_id to the local system_id as determined by
+lvm.conf system_id_source.  vgimport automatically scans storage for
+newly exported VGs.
+
+After vgimport, the exporting host will continue to see the VG as
+exported, and not owned by the new host.  Manually updating the local
+cache with pvscan --cache will allow a host to recognize the newly
+imported VG as foreign.
+
+.SS vgchange
+
+A host can change the system_id of its own VGs, but the command requires
+confirmation because the host may lose access to the VG being changed:
+
+.B vgchange --systemid
+.I SystemID VG
+
+The system_id can be removed from a VG by specifying an empty string ("")
+as the new system_id.  This makes the VG accessible to other hosts (see
+warnings above.)
+
+A host cannot directly change the system_id of a foreign VG.
+
+To move a VG from one host to another, vgexport and vgimport should be
+used.
+
+To forcibly gain ownership of a foreign VG, a host can add the foreign
+system_id to its extra_system_ids list, change the system_id of the
+foreign VG to its own, and remove the foreign system_id from its
+extra_system_ids list.
+
+.SS shared VGs
+
+A shared/lockd VG has no system_id set, allowing multiple hosts to
+use it via lvmlockd.  Changing a VG to a lockd type will clear the
+existing system_id. Applicable only if LVM is compiled with lockd
+support.
+
+.SS clustered VGs
+
+A clustered/clvm VG has no system_id set, allowing multiple hosts to
+use it via clvmd.  Changing a VG to clustered will clear the existing
+system_id.  Changing a VG to not clustered will set the system_id to the
+host running the vgchange command.
+
+.SS creation_host
+
+In vgcreate, the VG metadata field creation_host is set by default to the
+host's uname.  The creation_host cannot be changed, and is not used to
+control access.  When system_id_source is "uname", the system_id and
+creation_host will be the same.
+
+.SS orphans
+
+Orphan PVs are unused devices; they are not currently used in any VG.
+Because of this, they are not protected by a system_id, and any host can
+use them.  Coordination of changes to orphan PVs is beyond the scope of
+system_id.  The same is true of any block device that is not a PV.
+
+The effects of this are especially evident when lvm uses lvmetad caching.
+For example, if multiple hosts see an orphan PV, and one host creates a VG
+using the orphan, the other hosts will continue to report the PV as an
+orphan.  Nothing would automatically prevent the other hosts from using
+the newly allocated PV and corrupting it.  If the other hosts run a
+command to rescan devices, and update lvmetad, they would then recognize
+that the PV has been used by another host.  A command that rescans devices
+could be pvscan --cache, or vgs --foreign.
+
+.SH SEE ALSO
+.BR vgcreate (8),
+.BR vgchange (8),
+.BR vgimport (8),
+.BR vgexport (8),
+.BR lvm.conf (5),
+.BR machine-id (5),
+.BR uname (2),
+.BR vgs (8)
+
diff --git a/man/lvmthin.7.in b/man/lvmthin.7.in
deleted file mode 100644
index f6f8548..0000000
--- a/man/lvmthin.7.in
+++ /dev/null
@@ -1,1359 +0,0 @@
-.TH "LVMTHIN" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
-
-.SH NAME
-lvmthin \(em LVM thin provisioning
-
-.SH DESCRIPTION
-
-Blocks in a standard logical volume are allocated when the LV is created,
-but blocks in a thin provisioned logical volume are allocated as they are
-written.  Because of this, a thin provisioned LV is given a virtual size,
-and can then be much larger than physically available storage.  The amount
-of physical storage provided for thin provisioned LVs can be increased
-later as the need arises.
-
-Blocks in a standard LV are allocated (during creation) from the VG, but
-blocks in a thin LV are allocated (during use) from a special "thin pool
-LV".  The thin pool LV contains blocks of physical storage, and blocks in
-thin LVs just reference blocks in the thin pool LV.
-
-A thin pool LV must be created before thin LVs can be created within it.
-A thin pool LV is created by combining two standard LVs: a large data LV
-that will hold blocks for thin LVs, and a metadata LV that will hold
-metadata.  The metadata tracks which data blocks belong to each thin LV.
-
-Snapshots of thin LVs are efficient because the data blocks common to a
-thin LV and any of its snapshots are shared.  Snapshots may be taken of
-thin LVs or of other thin snapshots.  Blocks common to recursive snapshots
-are also shared in the thin pool.  There is no limit to or degradation
-from sequences of snapshots.
-
-As thin LVs or snapshot LVs are written to, they consume data blocks in
-the thin pool.  As free data blocks in the pool decrease, more free blocks
-may need to be supplied.  This is done by extending the thin pool data LV
-with additional physical space from the VG.  Removing thin LVs or
-snapshots from the thin pool can also free blocks in the thin pool.
-However, removing LVs is not always an effective way of freeing space in a
-thin pool because the amount is limited to the number of blocks not shared
-with other LVs in the pool.
-
-Incremental block allocation from thin pools can cause thin LVs to become
-fragmented.  Standard LVs generally avoid this problem by allocating all
-the blocks at once during creation.
-
-
-.SH Thin Terms
-
-.TP
-ThinDataLV
-.br
-thin data LV
-.br
-large LV created in a VG
-.br
-used by thin pool to store ThinLV blocks
-
-.TP
-ThinMetaLV
-.br
-thin metadata LV
-.br
-small LV created in a VG
-.br
-used by thin pool to track data block usage
-
-.TP
-ThinPoolLV
-.br
-thin pool LV
-.br
-combination of ThinDataLV and ThinMetaLV
-.br
-contains ThinLVs and SnapLVs
-
-.TP
-ThinLV
-.br
-thin LV
-.br
-created from ThinPoolLV
-.br
-appears blank after creation
-
-.TP
-SnapLV
-.br
-snapshot LV
-.br
-created from ThinPoolLV
-.br
-appears as a snapshot of another LV after creation
-
-
-
-.SH Thin Usage
-
-The primary method for using lvm thin provisioning:
-
-.SS 1. create ThinDataLV
-
-Create an LV that will hold thin pool data.
-
-.B lvcreate \-n ThinDataLV \-L LargeSize VG
-
-.I Example
-.br
-# lvcreate \-n pool0 \-L 10G vg
-
-.SS 2. create ThinMetaLV
-
-Create an LV that will hold thin pool metadata.
-
-.B lvcreate \-n ThinMetaLV \-L SmallSize VG
-
-.I Example
-.br
-# lvcreate \-n pool0meta \-L 1G vg
-
-# lvs
-  LV        VG Attr       LSize
-  pool0     vg -wi-a----- 10.00g
-  pool0meta vg -wi-a----- 1.00g
-
-.SS 3. create ThinPoolLV
-
-.nf
-Combine the data and metadata LVs into a thin pool LV.
-ThinDataLV is renamed to hidden ThinPoolLV_tdata.
-ThinMetaLV is renamed to hidden ThinPoolLV_tmeta.
-The new ThinPoolLV takes the previous name of ThinDataLV.
-.fi
-
-.B lvconvert \-\-type thin-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
-
-.I Example
-.br
-# lvconvert \-\-type thin-pool \-\-poolmetadata vg/pool0meta vg/pool0
-
-# lvs vg/pool0
-  LV    VG Attr       LSize  Pool Origin Data% Meta%
-  pool0 vg twi-a-tz-- 10.00g      0.00   0.00
-
-# lvs \-a
-  LV            VG Attr       LSize
-  pool0         vg twi-a-tz-- 10.00g
-  [pool0_tdata] vg Twi-ao---- 10.00g
-  [pool0_tmeta] vg ewi-ao---- 1.00g
-
-.SS 4. create ThinLV
-
-.nf
-Create a new thin LV from the thin pool LV.
-The thin LV is created with a virtual size.
-Multiple new thin LVs may be created in the thin pool.
-Thin LV names must be unique in the VG.
-The '--type thin' option is inferred from the virtual size option.
-The --thinpool argument specifies which thin pool will
-contain the ThinLV.
-.fi
-
-.B lvcreate \-n ThinLV \-V VirtualSize \-\-thinpool ThinPoolLV VG
-
-.I Example
-.br
-Create a thin LV in a thin pool:
-.br
-# lvcreate \-n thin1 \-V 1T \-\-thinpool pool0 vg
-
-Create another thin LV in the same thin pool:
-.br
-# lvcreate \-n thin2 \-V 1T \-\-thinpool pool0 vg
-
-# lvs vg/thin1 vg/thin2
-  LV    VG Attr       LSize Pool  Origin Data%
-  thin1 vg Vwi-a-tz-- 1.00t pool0        0.00
-  thin2 vg Vwi-a-tz-- 1.00t pool0        0.00
-
-.SS 5. create SnapLV
-
-Create snapshots of an existing ThinLV or SnapLV.
-.br
-Do not specify
-.BR \-L ", " \-\-size
-when creating a thin snapshot.
-.br
-A size argument will cause an old COW snapshot to be created.
-
-.B lvcreate \-n SnapLV \-\-snapshot VG/ThinLV
-.br
-.B lvcreate \-n SnapLV \-\-snapshot VG/PrevSnapLV
-
-.I Example
-.br
-Create first snapshot of an existing ThinLV:
-.br
-# lvcreate \-n thin1s1 \-s vg/thin1
-
-Create second snapshot of the same ThinLV:
-.br
-# lvcreate \-n thin1s2 \-s vg/thin1
-
-Create a snapshot of the first snapshot:
-.br
-# lvcreate \-n thin1s1s1 \-s vg/thin1s1
-
-# lvs vg/thin1s1 vg/thin1s2 vg/thin1s1s1
-  LV        VG Attr       LSize Pool  Origin
-  thin1s1   vg Vwi---tz-k 1.00t pool0 thin1
-  thin1s2   vg Vwi---tz-k 1.00t pool0 thin1
-  thin1s1s1 vg Vwi---tz-k 1.00t pool0 thin1s1
-
-.SS 6. activate SnapLV
-
-Thin snapshots are created with the persistent "activation skip"
-flag, indicated by the "k" attribute.  Use \-K with lvchange
-or vgchange to activate thin snapshots with the "k" attribute.
-
-.B lvchange \-ay \-K VG/SnapLV
-
-.I Example
-.br
-# lvchange \-ay \-K vg/thin1s1
-
-# lvs vg/thin1s1
-  LV      VG Attr       LSize Pool  Origin
-  thin1s1 vg Vwi-a-tz-k 1.00t pool0 thin1
-
-.SH Thin Topics
-
-.B Alternate syntax for specifying type thin\-pool
-.br
-.B Automatic pool metadata LV
-.br
-.B Specify devices for data and metadata LVs
-.br
-.B Tolerate device failures using raid
-.br
-.B Spare metadata LV
-.br
-.B Metadata check and repair
-.br
-.B Activation of thin snapshots
-.br
-.B Removing thin pool LVs, thin LVs and snapshots
-.br
-.B Manually manage free data space of thin pool LV
-.br
-.B Manually manage free metadata space of a thin pool LV
-.br
-.B Using fstrim to increase free space in a thin pool LV
-.br
-.B Automatically extend thin pool LV
-.br
-.B Data space exhaustion
-.br
-.B Metadata space exhaustion
-.br
-.B Automatic extend settings
-.br
-.B Zeroing
-.br
-.B Discard
-.br
-.B Chunk size
-.br
-.B Size of pool metadata LV
-.br
-.B Create a thin snapshot of an external, read only LV
-.br
-.B Convert a standard LV to a thin LV with an external origin
-.br
-.B Single step thin pool LV creation
-.br
-.B Single step thin pool LV and thin LV creation
-.br
-.B Merge thin snapshots
-.br
-.B XFS on snapshots
-
-\&
-
-.SS Automatic pool metadata LV
-
-\&
-
-A thin data LV can be converted to a thin pool LV without specifying a
-thin pool metadata LV.  LVM automatically creates a metadata LV from the
-same VG.
-
-.B lvcreate \-n ThinDataLV \-L LargeSize VG
-.br
-.B lvconvert \-\-type thin\-pool VG/ThinDataLV
-
-.I Example
-.br
-.nf
-# lvcreate \-n pool0 \-L 10G vg
-# lvconvert \-\-type thin\-pool vg/pool0
-
-# lvs \-a
-  pool0           vg          twi-a-tz--  10.00g
-  [pool0_tdata]   vg          Twi-ao----  10.00g
-  [pool0_tmeta]   vg          ewi-ao----  16.00m
-.fi
-
-
-.SS Specify devices for data and metadata LVs
-
-\&
-
-The data and metadata LVs in a thin pool are best created on
-separate physical devices.  To do that, specify the device name(s)
-at the end of the lvcreate line.  It can be especially helpful
-to use fast devices for the metadata LV.
-
-.B lvcreate \-n ThinDataLV \-L LargeSize VG LargePV
-.br
-.B lvcreate \-n ThinMetaLV \-L SmallSize VG SmallPV
-.br
-.B lvconvert \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
-
-.I Example
-.br
-.nf
-# lvcreate \-n pool0 \-L 10G vg /dev/sdA
-# lvcreate \-n pool0meta \-L 1G vg /dev/sdB
-# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
-.fi
-
-.BR lvm.conf (5)
-.B thin_pool_metadata_require_separate_pvs
-.br
-controls the default PV usage for thin pool creation.
-
-\&
-
-.SS Tolerate device failures using raid
-
-\&
-
-To tolerate device failures, use raid for the pool data LV and
-pool metadata LV.  This is especially recommended for pool metadata LVs.
-
-.B lvcreate \-\-type raid1 \-m 1 \-n ThinMetaLV \-L SmallSize VG PVA PVB
-.br
-.B lvcreate \-\-type raid1 \-m 1 \-n ThinDataLV \-L LargeSize VG PVC PVD
-.br
-.B lvconvert \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
-
-.I Example
-.br
-.nf
-# lvcreate \-\-type raid1 \-m 1 \-n pool0 \-L 10G vg /dev/sdA /dev/sdB
-# lvcreate \-\-type raid1 \-m 1 \-n pool0meta \-L 1G vg /dev/sdC /dev/sdD
-# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
-.fi
-
-
-.SS Spare metadata LV
-
-\&
-
-The first time a thin pool LV is created, lvm will create a spare
-metadata LV in the VG.  This behavior can be controlled with the
-option \-\-poolmetadataspare y|n.  (Future thin pool creations will
-also attempt to create the pmspare LV if none exists.)
-
-To create the pmspare ("pool metadata spare") LV, lvm first creates
-an LV with a default name, e.g. lvol0, and then converts this LV to
-a hidden LV with the _pmspare suffix, e.g. lvol0_pmspare.
-
-One pmspare LV is kept in a VG to be used for any thin pool.
-
-The pmspare LV cannot be created explicitly, but may be removed
-explicitly.
-
-.I Example
-.br
-.nf
-# lvcreate \-n pool0 \-L 10G vg
-# lvcreate \-n pool0meta \-L 1G vg
-# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
-
-# lvs \-a
-  [lvol0_pmspare] vg          ewi-------
-  pool0           vg          twi---tz--
-  [pool0_tdata]   vg          Twi-------
-  [pool0_tmeta]   vg          ewi-------
-.fi
-
-The "Metadata check and repair" section describes the use of
-the pmspare LV.
-
-
-.SS Metadata check and repair
-
-\&
-
-If thin pool metadata is damaged, it may be repairable.
-Checking and repairing thin pool metadata is analagous to
-running fsck on a file system.
-
-When a thin pool LV is activated, lvm runs the thin_check command
-to check the correctness of the metadata on the pool metadata LV.
-
-.BR lvm.conf (5)
-.B thin_check_executable
-.br
-can be set to an empty string ("") to disable the thin_check step.
-This is not recommended.
-
-.BR lvm.conf (5)
-.B thin_check_options
-.br
-controls the command options used for the thin_check command.
-
-If the thin_check command finds a problem with the metadata,
-the thin pool LV is not activated, and the thin pool metadata needs
-to be repaired.
-
-Simple repair commands are not always successful.  Advanced repair may
-require editing thin pool metadata and lvm metadata.  Newer versions of
-the kernel and lvm tools may be more successful at repair.  Report the
-details of damaged thin metadata to get the best advice on recovery.
-
-Command to repair a thin pool:
-.br
-.B lvconvert \-\-repair VG/ThinPoolLV
-
-Repair performs the following steps:
-
-1. Creates a new, repaired copy of the metadata.
-.br
-lvconvert runs the thin_repair command to read damaged metadata
-from the existing pool metadata LV, and writes a new repaired
-copy to the VG's pmspare LV.
-
-2. Replaces the thin pool metadata LV.
-.br
-If step 1 is successful, the thin pool metadata LV is replaced
-with the pmspare LV containing the corrected metadata.
-The previous thin pool metadata LV, containing the damaged metadata,
-becomes visible with the new name ThinPoolLV_tmetaN (where N is 0,1,...).
-
-If the repair works, the thin pool LV and its thin LVs can be activated,
-and the LV containing the damaged thin pool metadata can be removed.
-It may be useful to move the new metadata LV (previously pmspare) to a
-better PV.
-
-If the repair does not work, the thin pool LV and its thin LVs are lost.
-
-If metadata is manually restored with thin_repair directly,
-the pool metadata LV can be manually swapped with another LV
-containing new metadata:
-
-.B lvconvert \-\-thinpool VG/ThinPoolLV \-\-poolmetadata VG/NewThinMetaLV
-
-
-.SS Activation of thin snapshots
-
-\&
-
-When a thin snapshot LV is created, it is by default given the
-"activation skip" flag.  This flag is indicated by the "k" attribute
-displayed by lvs:
-
-.nf
-# lvs vg/thin1s1
-  LV         VG  Attr       LSize Pool  Origin
-  thin1s1    vg  Vwi---tz-k 1.00t pool0 thin1
-.fi
-
-This flag causes the snapshot LV to be skipped, i.e. not activated,
-by normal activation commands.  The skipping behavior does not
-apply to deactivation commands.
-
-A snapshot LV with the "k" attribute can be activated using
-the \-K (or \-\-ignoreactivationskip) option in addition to the
-standard \-ay (or \-\-activate y) option.
-
-Command to activate a thin snapshot LV:
-.br
-.B lvchange \-ay \-K VG/SnapLV
-
-The persistent "activation skip" flag can be turned off during
-lvcreate, or later with lvchange using the \-kn
-(or \-\-setactivationskip n) option.
-It can be turned on again with \-ky (or \-\-setactivationskip y).
-
-When the "activation skip" flag is removed, normal activation
-commands will activate the LV, and the \-K activation option is
-not needed.
-
-Command to create snapshot LV without the activation skip flag:
-.br
-.B lvcreate \-kn \-n SnapLV \-s VG/ThinLV
-
-Command to remove the activation skip flag from a snapshot LV:
-.br
-.B lvchange \-kn VG/SnapLV
-
-.BR lvm.conf (5)
-.B auto_set_activation_skip
-.br
-controls the default activation skip setting used by lvcreate.
-
-
-.SS Removing thin pool LVs, thin LVs and snapshots
-
-\&
-
-Removing a thin LV and its related snapshots returns the blocks it
-used to the thin pool LV.  These blocks will be reused for other
-thin LVs and snapshots.
-
-Removing a thin pool LV removes both the data LV and metadata LV
-and returns the space to the VG.
-
-lvremove of thin pool LVs, thin LVs and snapshots cannot be
-reversed with vgcfgrestore.
-
-vgcfgbackup does not back up thin pool metadata.
-
-
-.SS Manually manage free data space of thin pool LV
-
-\&
-
-The available free space in a thin pool LV can be displayed
-with the lvs command.  Free space can be added by extending
-the thin pool LV.
-
-Command to extend thin pool data space:
-.br
-.B lvextend \-L Size VG/ThinPoolLV
-
-.I Example
-.br
-.nf
-1. A thin pool LV is using 26.96% of its data blocks.
-# lvs
-  LV    VG           Attr       LSize   Pool  Origin Data%
-  pool0 vg           twi-a-tz--  10.00g               26.96
-
-2. Double the amount of physical space in the thin pool LV.
-# lvextend \-L+10G vg/pool0
-
-3. The percentage of used data blocks is half the previous value.
-# lvs
-  LV    VG           Attr       LSize   Pool  Origin Data%
-  pool0 vg           twi-a-tz--  20.00g               13.48
-.fi
-
-Other methods of increasing free data space in a thin pool LV
-include removing a thin LV and its related snapsots, or running
-fstrim on the file system using a thin LV.
-
-
-.SS Manually manage free metadata space of a thin pool LV
-
-\&
-
-The available metadata space in a thin pool LV can be displayed
-with the lvs \-o+metadata_percent command.
-
-Command to extend thin pool metadata space:
-.br
-.B lvextend \-\-poolmetadatasize Size VG/ThinPoolLV
-
-.I Example
-.br
-1. A thin pool LV is using 12.40% of its metadata blocks.
-.nf
-# lvs \-oname,size,data_percent,metadata_percent vg/pool0
-  LV    LSize   Data%  Meta%
-  pool0  20.00g  13.48  12.40
-.fi
-
-2. Display a thin pool LV with its component thin data LV and thin metadata LV.
-.nf
-# lvs \-a \-oname,attr,size vg
-  LV              Attr       LSize
-  pool0           twi-a-tz--  20.00g
-  [pool0_tdata]   Twi-ao----  20.00g
-  [pool0_tmeta]   ewi-ao----  12.00m
-.fi
-
-3. Double the amount of physical space in the thin metadata LV.
-.nf
-# lvextend \-\-poolmetadatasize +12M vg/pool0
-.fi
-
-4. The percentage of used metadata blocks is half the previous value.
-.nf
-# lvs \-a \-oname,size,data_percent,metadata_percent vg
-  LV              LSize   Data%  Meta%
-  pool0            20.00g  13.48   6.20
-  [pool0_tdata]    20.00g
-  [pool0_tmeta]    24.00m
-.fi
-
-
-.SS Using fstrim to increase free space in a thin pool LV
-
-\&
-
-Removing files in a file system on top of a thin LV does not
-generally add free space back to the thin pool.  Manually running
-the fstrim command can return space back to the thin pool that had
-been used by removed files.  fstrim uses discards and will not work
-if the thin pool LV has discards mode set to ignore.
-
-.I Example
-.br
-A thin pool has 10G of physical data space, and a thin LV has a virtual
-size of 100G.  Writing a 1G file to the file system reduces the
-free space in the thin pool by 10% and increases the virtual usage
-of the file system by 1%.  Removing the 1G file restores the virtual
-1% to the file system, but does not restore the physical 10% to the
-thin pool.  The fstrim command restores the physical space to the thin pool.
-
-.nf
-# lvs \-a \-oname,attr,size,pool_lv,origin,data_percent,metadata_percent vg
-LV              Attr       LSize   Pool  Origin Data%  Meta%
-pool0           twi-a-tz--  10.00g               47.01  21.03
-thin1           Vwi-aotz-- 100.00g pool0          2.70
-
-# df \-h /mnt/X
-Filesystem            Size  Used Avail Use% Mounted on
-/dev/mapper/vg-thin1   99G  1.1G   93G   2% /mnt/X
-
-# dd if=/dev/zero of=/mnt/X/1Gfile bs=4096 count=262144; sync
-
-# lvs
-pool0           vg   twi-a-tz--  10.00g               57.01  25.26
-thin1           vg   Vwi-aotz-- 100.00g pool0          3.70
-
-# df \-h /mnt/X
-/dev/mapper/vg-thin1   99G  2.1G   92G   3% /mnt/X
-
-# rm /mnt/X/1Gfile
-
-# lvs
-pool0           vg   twi-a-tz--  10.00g               57.01  25.26
-thin1           vg   Vwi-aotz-- 100.00g pool0          3.70
-
-# df \-h /mnt/X
-/dev/mapper/vg-thin1   99G  1.1G   93G   2% /mnt/X
-
-# fstrim \-v /mnt/X
-
-# lvs
-pool0           vg   twi-a-tz--  10.00g               47.01  21.03
-thin1           vg   Vwi-aotz-- 100.00g pool0          2.70
-.fi
-
-The "Discard" section covers an option for automatically freeing data
-space in a thin pool.
-
-
-.SS Automatically extend thin pool LV
-
-\&
-
-The lvm daemon dmeventd (lvm2-monitor) monitors the data usage of thin
-pool LVs and extends them when the usage reaches a certain level.  The
-necessary free space must exist in the VG to extend thin pool LVs.
-Monitoring and extension of thin pool LVs are controlled independently.
-
-.I monitoring
-
-When a thin pool LV is activated, dmeventd will begin monitoring it by
-default.
-
-Command to start or stop dmeventd monitoring a thin pool LV:
-.br
-.B lvchange \-\-monitor {y|n} VG/ThinPoolLV
-
-The current dmeventd monitoring status of a thin pool LV can be displayed
-with the command lvs -o+seg_monitor.
-
-.I autoextend
-
-dmeventd should be configured to extend thin pool LVs before all data
-space is used.  Warnings are emitted through syslog when the use of a thin
-pool reaches 80%, 85%, 90% and 95%.  (See the section "Data space
-exhaustion" for the effects of not extending a thin pool LV.)  The point
-at which dmeventd extends thin pool LVs, and the amount are controlled
-with two configuration settings:
-
-.BR lvm.conf (5)
-.B thin_pool_autoextend_threshold
-.br
-is a percentage full value that defines when the thin pool LV should be
-extended.  Setting this to 100 disables automatic extention.  The minimum
-value is 50.
-
-.BR lvm.conf (5)
-.B thin_pool_autoextend_percent
-.br
-defines how much extra data space should be added to the thin pool LV from
-the VG, in percent of its current size.
-
-.I disabling
-
-There are multiple ways that extension of thin pools could be prevented:
-
-.IP \[bu] 2
-If the dmeventd daemon is not running, no monitoring or automatic
-extension will occur.
-
-.IP \[bu]
-Even when dmeventd is running, all monitoring can be disabled with the
-lvm.conf monitoring setting.
-
-.IP \[bu]
-To activate or create a thin pool LV without interacting with dmeventd,
-the --ignoremonitoring option can be used.  With this option, the command
-will not ask dmeventd to monitor the thin pool LV.
-
-.IP \[bu]
-Setting thin_pool_autoextend_threshould to 100 disables automatic
-extension of thin pool LVs, even if they are being monitored by dmeventd.
-
-.P
-
-.I Example
-.br
-If thin_pool_autoextend_threshold is 70 and thin_pool_autoextend_percent is 20,
-whenever a pool exceeds 70% usage, it will be extended by another 20%.
-For a 1G pool, using 700M will trigger a resize to 1.2G. When the usage exceeds
-840M, the pool will be extended to 1.44G, and so on.
-
-
-.SS Data space exhaustion
-
-\&
-
-When properly managed, thin pool data space should be extended before it
-is all used (see the section "Automatically extend thin pool LV").  If
-thin pool data space is already exhausted, it can still be extended (see
-the section "Manually manage free data space of thin pool LV".)
-
-The behavior of a full thin pool is configurable with the --errorwhenfull
-y|n option to lvcreate or lvchange.  The errorwhenfull setting applies
-only to writes; reading thin LVs can continue even when data space is
-exhausted.
-
-Command to change the handling of a full thin pool:
-.br
-.B lvchange --errorwhenfull {y|n} VG/ThinPoolLV
-
-.BR lvm.conf (5)
-.B error_when_full
-.br
-controls the default error when full behavior.
-
-The current setting of a thin pool LV can be displayed with the command:
-lvs -o+lv_when_full.
-
-The errorwhenfull setting does not effect the monitoring and autoextend
-settings, and the monitoring/autoextend settings do not effect the
-errorwhenfull setting.  It is only when monitoring/autoextend are not
-effective that the thin pool becomes full and the errorwhenfull setting is
-applied.
-
-.I errorwhenfull n
-
-This is the default.  Writes to thin LVs are accepted and queued, with the
-expectation that pool data space will be extended soon.  Once data space
-is extended, the queued writes will be processed, and the thin pool will
-return to normal operation.
-
-While waiting to be extended, the thin pool will queue writes for up to 60
-seconds (the default).  If data space has not been extended after this
-time, the queued writes will return an error to the caller, e.g. the file
-system.  This can result in file system corruption for non-journaled file
-systems that may require fsck.  When a thin pool returns errors for writes
-to a thin LV, any file system is subject to losing unsynced user data.
-
-The 60 second timeout can be changed or disabled with the dm\-thin\-pool
-kernel module option
-.B no_space_timeout.
-This option sets the number of seconds that thin pools will queue writes.
-If set to 0, writes will not time out.  Disabling timeouts can result in
-the system running out of resources, memory exhaustion, hung tasks, and
-deadlocks.  (The timeout applies to all thin pools on the system.)
-
-.I errorwhenfull y
-
-Writes to thin LVs immediately return an error, and no writes are queued.
-In the case of a file system, this can result in corruption that may
-require fsck (the specific consequences depend on the thin LV user.)
-
-.I data percent
-
-When data space is exhausted, the lvs command displays 100 under Data% for
-the thin pool LV:
-
-.nf
-# lvs vg/pool0
-  LV     VG           Attr       LSize   Pool  Origin Data%
-  pool0  vg           twi-a-tz-- 512.00m              100.00
-.fi
-
-.I causes
-
-A thin pool may run out of data space for any of the following reasons:
-
-.IP \[bu] 2
-Automatic extension of the thin pool is disabled, and the thin pool is not
-manually extended.  (Disabling automatic extension is not recommended.)
-
-.IP \[bu]
-The dmeventd daemon is not running and the thin pool is not manually
-extended.  (Disabling dmeventd is not recommended.)
-
-.IP \[bu]
-Automatic extension of the thin pool is too slow given the rate of writes
-to thin LVs in the pool.  (This can be addressed by tuning the
-thin_pool_autoextend_threshold and thin_pool_autoextend_percent.
-See "Automatic extend settings".)
-
-.IP \[bu]
-The VG does not have enough free blocks to extend the thin pool.
-
-.P
-
-.SS Metadata space exhaustion
-
-\&
-
-If thin pool metadata space is exhausted (or a thin pool metadata
-operation fails), errors will be returned for IO operations on thin LVs.
-
-When metadata space is exhausted, the lvs command displays 100 under Meta%
-for the thin pool LV:
-
-.nf
-# lvs \-o lv_name,size,data_percent,metadata_percent vg/pool0
-  LV    LSize Data%  Meta%
-  pool0              100.00
-.fi
-
-The same reasons for thin pool data space exhaustion apply to thin pool
-metadata space.
-
-Metadata space exhaustion can lead to inconsistent thin pool metadata and
-inconsistent file systems, so the response requires offline checking and
-repair.
-
-1. Deactivate the thin pool LV, or reboot the system if this is not possible.
-
-2. Repair thin pool with lvconvert \-\-repair.
-.br
-   See "Metadata check and repair".
-
-3. Extend pool metadata space with lvextend \-\-poolmetadatasize.
-.br
-   See "Manually manage free metadata space of a thin pool LV".
-
-4. Check and repair file system with fsck.
-
-
-.SS Automatic extend settings
-
-\&
-
-Thin pool LVs can be extended according to preset values.  The presets
-determine if the LV should be extended based on how full it is, and if so
-by how much.  When dmeventd monitors thin pool LVs, it uses lvextend with
-these presets.  (See "Automatically extend thin pool LV".)
-
-Command to extend a thin pool data LV using presets:
-.br
-.B lvextend \-\-use\-policies VG/ThinPoolLV
-
-The command uses these settings:
-
-.BR lvm.conf (5)
-.B thin_pool_autoextend_threshold
-.br
-autoextend the LV when its usage exceeds this percent.
-
-.BR lvm.conf (5)
-.B thin_pool_autoextend_percent
-.br
-autoextend the LV by this much additional space.
-
-To see the default values of these settings, run:
-
-.B lvmconfig \-\-type default \-\-withcomment
-.RS
-.B activation/thin_pool_autoextend_threshold
-.RE
-
-.B lvmconfig \-\-type default \-\-withcomment
-.RS
-.B activation/thin_pool_autoextend_percent
-.RE
-
-To change these values globally, edit
-.BR lvm.conf (5).
-
-To change these values on a per-VG or per-LV basis, attach a "profile" to
-the VG or LV.  A profile is a collection of config settings, saved in a
-local text file (using the lvm.conf format).  lvm looks for profiles in
-the profile_dir directory, e.g. /etc/lvm/profile/.  Once attached to a VG
-or LV, lvm will process the VG or LV using the settings from the attached
-profile.  A profile is named and referenced by its file name.
-
-To use a profile to customize the lvextend settings for an LV:
-
-.IP \[bu] 2
-Create a file containing settings, saved in profile_dir.
-For the profile_dir location, run:
-.br
-.B lvmconfig config/profile_dir
-
-.IP \[bu] 2
-Attach the profile to an LV, using the command:
-.br
-.B lvchange \-\-metadataprofile ProfileName VG/ThinPoolLV
-
-.IP \[bu] 2
-Extend the LV using the profile settings:
-.br
-.B lvextend \-\-use\-policies VG/ThinPoolLV
-
-.P
-
-.I Example
-.br
-.nf
-# lvmconfig config/profile_dir
-profile_dir="/etc/lvm/profile"
-
-# cat /etc/lvm/profile/pool0extend.profile
-activation {
-        thin_pool_autoextend_threshold=50
-        thin_pool_autoextend_percent=10
-}
-
-# lvchange --metadataprofile pool0extend vg/pool0
-
-# lvextend --use-policies vg/pool0
-.fi
-
-.I Notes
-.IP \[bu] 2
-A profile is attached to a VG or LV by name, where the name references a
-local file in profile_dir.  If the VG is moved to another machine, the
-file with the profile also needs to be moved.
-
-.IP \[bu] 2
-Only certain settings can be used in a VG or LV profile, see:
-.br
-.B lvmconfig \-\-type profilable-metadata.
-
-.IP \[bu] 2
-An LV without a profile of its own will inherit the VG profile.
-
-.IP \[bu] 2
-Remove a profile from an LV using the command:
-.br
-.B lvchange --detachprofile VG/ThinPoolLV.
-
-.IP \[bu] 2
-Commands can also have profiles applied to them.  The settings that can be
-applied to a command are different than the settings that can be applied
-to a VG or LV.  See lvmconfig \-\-type profilable\-command.  To apply a
-profile to a command, write a profile, save it in the profile directory,
-and run the command using the option: \-\-commandprofile ProfileName.
-
-
-.SS Zeroing
-
-\&
-
-When a thin pool provisions a new data block for a thin LV, the
-new block is first overwritten with zeros.  The zeroing mode is
-indicated by the "z" attribute displayed by lvs.  The option \-Z
-(or \-\-zero) can be added to commands to specify the zeroing mode.
-
-Command to set the zeroing mode when creating a thin pool LV:
-.br
-.B lvconvert \-\-type thin\-pool \-Z{y|n}
-.br
-.RS
-.B \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
-.RE
-
-Command to change the zeroing mode of an existing thin pool LV:
-.br
-.B lvchange \-Z{y|n} VG/ThinPoolLV
-
-If zeroing mode is changed from "n" to "y", previously provisioned
-blocks are not zeroed.
-
-Provisioning of large zeroed chunks impacts performance.
-
-.BR lvm.conf (5)
-.B thin_pool_zero
-.br
-controls the default zeroing mode used when creating a thin pool.
-
-
-.SS Discard
-
-\&
-
-The discard behavior of a thin pool LV determines how discard requests are
-handled.  Enabling discard under a file system may adversely affect the
-file system performance (see the section on fstrim for an alternative.)
-Possible discard behaviors:
-
-ignore: Ignore any discards that are received.
-
-nopassdown: Process any discards in the thin pool itself and allow
-the no longer needed extends to be overwritten by new data.
-
-passdown: Process discards in the thin pool (as with nopassdown), and
-pass the discards down the the underlying device.  This is the default
-mode.
-
-Command to display the current discard mode of a thin pool LV:
-.br
-.B lvs \-o+discards VG/ThinPoolLV
-
-Command to set the discard mode when creating a thin pool LV:
-.br
-.B lvconvert \-\-discards {ignore|nopassdown|passdown}
-.br
-.RS
-.B \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
-.RE
-
-Command to change the discard mode of an existing thin pool LV:
-.br
-.B lvchange \-\-discards {ignore|nopassdown|passdown} VG/ThinPoolLV
-
-.I Example
-.br
-.nf
-# lvs \-o name,discards vg/pool0
-pool0 passdown
-
-# lvchange \-\-discards ignore vg/pool0
-.fi
-
-.BR lvm.conf (5)
-.B thin_pool_discards
-.br
-controls the default discards mode used when creating a thin pool.
-
-
-.SS Chunk size
-
-\&
-
-The size of data blocks managed by a thin pool can be specified with the
-\-\-chunksize option when the thin pool LV is created.  The default unit
-is KiB. The value must be a multiple of 64KiB between 64KiB and 1GiB.
-
-When a thin pool is used primarily for the thin provisioning feature, a
-larger value is optimal.  To optimize for many snapshots, a smaller value
-reduces copying time and consumes less space.
-
-Command to display the thin pool LV chunk size:
-.br
-.B lvs \-o+chunksize VG/ThinPoolLV
-
-.I Example
-.br
-.nf
-# lvs \-o name,chunksize
-  pool0 64.00k
-.fi
-
-.BR lvm.conf (5)
-.B thin_pool_chunk_size
-.br
-controls the default chunk size used when creating a thin pool.
-
-The default value is shown by:
-.br
-.B lvmconfig \-\-type default allocation/thin_pool_chunk_size
-
-
-.SS Size of pool metadata LV
-
-\&
-
-The amount of thin metadata depends on how many blocks are shared between
-thin LVs (i.e. through snapshots).  A thin pool with many snapshots may
-need a larger metadata LV.  Thin pool metadata LV sizes can be from 2MiB
-to 16GiB.
-
-When using lvcreate to create what will become a thin metadata LV, the
-size is specified with the \-L|\-\-size option.
-
-When an LVM command automatically creates a thin metadata LV, the size is
-specified with the \-\-poolmetadatasize option.  When this option is not
-given, LVM automatically chooses a size based on the data size and chunk
-size.
-
-It can be hard to predict the amount of metadata space that will be
-needed, so it is recommended to start with a size of 1GiB which should be
-enough for all practical purposes.  A thin pool metadata LV can later be
-manually or automatically extended if needed.
-
-
-.SS Create a thin snapshot of an external, read only LV
-
-\&
-
-Thin snapshots are typically taken of other thin LVs or other
-thin snapshot LVs within the same thin pool.  It is also possible
-to take thin snapshots of external, read only LVs.  Writes to the
-snapshot are stored in the thin pool, and the external LV is used
-to read unwritten parts of the thin snapshot.
-
-.B lvcreate \-n SnapLV \-s VG/ExternalOriginLV \-\-thinpool VG/ThinPoolLV
-
-.I Example
-.br
-.nf
-# lvchange \-an vg/lve
-# lvchange \-\-permission r vg/lve
-# lvcreate \-n snaplve \-s vg/lve \-\-thinpool vg/pool0
-
-# lvs vg/lve vg/snaplve
-  LV      VG  Attr       LSize  Pool  Origin Data%
-  lve     vg  ori------- 10.00g
-  snaplve vg  Vwi-a-tz-- 10.00g pool0 lve      0.00
-.fi
-
-
-.SS Convert a standard LV to a thin LV with an external origin
-
-\&
-
-A new thin LV can be created and given the name of an existing
-standard LV.  At the same time, the existing LV is converted to a
-read only external LV with a new name.  Unwritten portions of the
-thin LV are read from the external LV.
-The new name given to the existing LV can be specified with
-\-\-originname, otherwise the existing LV will be given a default
-name, e.g. lvol#.
-
-Convert ExampleLV into a read only external LV with the new name
-NewExternalOriginLV, and create a new thin LV that is given the previous
-name of ExampleLV.
-
-.B lvconvert \-\-type thin \-\-thinpool VG/ThinPoolLV
-.br
-.RS
-.B \-\-originname NewExternalOriginLV VG/ExampleLV
-.RE
-
-.I Example
-.br
-.nf
-# lvcreate \-n lv_example \-L 10G vg
-
-# lvs
-  lv_example      vg          -wi-a-----  10.00g
-
-# lvconvert \-\-type thin \-\-thinpool vg/pool0
-          \-\-originname lv_external \-\-thin vg/lv_example
-
-# lvs
-  LV              VG          Attr       LSize   Pool  Origin
-  lv_example      vg          Vwi-a-tz--  10.00g pool0 lv_external
-  lv_external     vg          ori-------  10.00g
-.fi
-
-
-.SS Single step thin pool LV creation
-
-\&
-
-A thin pool LV can be created with a single lvcreate command,
-rather than using lvconvert on existing LVs.
-This one command creates a thin data LV, a thin metadata LV,
-and combines the two into a thin pool LV.
-
-.B lvcreate \-\-type thin\-pool \-L LargeSize \-n ThinPoolLV VG
-
-.I Example
-.br
-.nf
-# lvcreate \-\-type thin\-pool \-L8M -n pool0 vg
-
-# lvs vg/pool0
-  LV    VG  Attr       LSize Pool Origin Data%
-  pool0 vg  twi-a-tz-- 8.00m               0.00
-
-# lvs \-a
-  pool0           vg          twi-a-tz--   8.00m
-  [pool0_tdata]   vg          Twi-ao----   8.00m
-  [pool0_tmeta]   vg          ewi-ao----   8.00m
-.fi
-
-
-.SS Single step thin pool LV and thin LV creation
-
-\&
-
-A thin pool LV and a thin LV can be created with a single
-lvcreate command.  This one command creates a thin data LV,
-a thin metadata LV, combines the two into a thin pool LV,
-and creates a thin LV in the new pool.
-.br
-\-L LargeSize specifies the physical size of the thin pool LV.
-.br
-\-V VirtualSize specifies the virtual size of the thin LV.
-
-.B lvcreate \-\-type thin \-V VirtualSize \-L LargeSize
-.RS
-.B \-n ThinLV \-\-thinpool VG/ThinPoolLV
-.RE
-
-Equivalent to:
-.br
-.B lvcreate \-\-type thin\-pool \-L LargeSize VG/ThinPoolLV
-.br
-.B lvcreate \-n ThinLV \-V VirtualSize \-\-thinpool VG/ThinPoolLV
-
-.I Example
-.br
-.nf
-# lvcreate \-L8M \-V2G \-n thin1 \-\-thinpool vg/pool0
-
-# lvs \-a
-  pool0           vg          twi-a-tz--   8.00m
-  [pool0_tdata]   vg          Twi-ao----   8.00m
-  [pool0_tmeta]   vg          ewi-ao----   8.00m
-  thin1           vg          Vwi-a-tz--   2.00g pool0
-.fi
-
-
-.SS Merge thin snapshots
-
-\&
-
-A thin snapshot can be merged into its origin thin LV using the lvconvert
-\-\-merge command.  The result of a snapshot merge is that the origin thin
-LV takes the content of the snapshot LV, and the snapshot LV is removed.
-Any content that was unique to the origin thin LV is lost after the merge.
-
-Because a merge changes the content of an LV, it cannot be done while the
-LVs are open, e.g. mounted.  If a merge is initiated while the LVs are open,
-the effect of the merge is delayed until the origin thin LV is next
-activated.
-
-.B lvconvert \-\-merge VG/SnapLV
-
-.I Example
-.br
-.nf
-# lvs vg
-  LV      VG Attr       LSize   Pool  Origin
-  pool0   vg twi-a-tz--  10.00g
-  thin1   vg Vwi-a-tz-- 100.00g pool0
-  thin1s1 vg Vwi-a-tz-k 100.00g pool0 thin1
-
-# lvconvert \-\-merge vg/thin1s1
-
-# lvs vg
-  LV      VG Attr       LSize   Pool  Origin
-  pool0   vg twi-a-tz--  10.00g
-  thin1   vg Vwi-a-tz-- 100.00g pool0
-.fi
-
-.I Example
-.br
-.nf
-Delayed merging of open LVs.
-
-# lvs vg
-  LV      VG Attr       LSize   Pool  Origin
-  pool0   vg twi-a-tz--  10.00g
-  thin1   vg Vwi-aotz-- 100.00g pool0
-  thin1s1 vg Vwi-aotz-k 100.00g pool0 thin1
-
-# df
-/dev/mapper/vg-thin1            100G   33M  100G   1% /mnt/X
-/dev/mapper/vg-thin1s1          100G   33M  100G   1% /mnt/Xs
-
-# ls /mnt/X
-file1 file2 file3
-# ls /mnt/Xs
-file3 file4 file5
-
-# lvconvert \-\-merge vg/thin1s1
-Logical volume vg/thin1s1 contains a filesystem in use.
-Delaying merge since snapshot is open.
-Merging of thin snapshot thin1s1 will occur on next activation.
-
-# umount /mnt/X
-# umount /mnt/Xs
-
-# lvs \-a vg
-  LV              VG   Attr       LSize   Pool  Origin
-  pool0           vg   twi-a-tz--  10.00g
-  [pool0_tdata]   vg   Twi-ao----  10.00g
-  [pool0_tmeta]   vg   ewi-ao----   1.00g
-  thin1           vg   Owi-a-tz-- 100.00g pool0
-  [thin1s1]       vg   Swi-a-tz-k 100.00g pool0 thin1
-
-# lvchange \-an vg/thin1
-# lvchange \-ay vg/thin1
-
-# mount /dev/vg/thin1 /mnt/X
-
-# ls /mnt/X
-file3 file4 file5
-.fi
-
-
-.SS XFS on snapshots
-
-\&
-
-Mounting an XFS file system on a new snapshot LV requires attention to the
-file system's log state and uuid.  On the snapshot LV, the xfs log will
-contain a dummy transaction, and the xfs uuid will match the uuid from the
-file system on the origin LV.
-
-If the snapshot LV is writable, mounting will recover the log to clear the
-dummy transaction, but will require skipping the uuid check:
-
-mount /dev/VG/SnapLV /mnt \-o nouuid
-
-Or, the uuid can be changed on disk before mounting:
-
-xfs_admin \-U generate /dev/VG/SnapLV
-.br
-mount /dev/VG/SnapLV /mnt
-
-If the snapshot LV is readonly, the log recovery and uuid check need to be
-skipped while mounting readonly:
-
-mount /dev/VG/SnapLV /mnt \-o ro,nouuid,norecovery
-
-.SH SEE ALSO
-.BR lvm (8),
-.BR lvm.conf (5),
-.BR lvmconfig (8),
-.BR lvcreate (8),
-.BR lvconvert (8),
-.BR lvchange (8),
-.BR lvextend (8),
-.BR lvremove (8),
-.BR lvs (8),
-.BR thin_dump (8),
-.BR thin_repair (8)
-.BR thin_restore (8)
-
diff --git a/man/lvmthin.7_main b/man/lvmthin.7_main
new file mode 100644
index 0000000..f6f8548
--- /dev/null
+++ b/man/lvmthin.7_main
@@ -0,0 +1,1359 @@
+.TH "LVMTHIN" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+
+.SH NAME
+lvmthin \(em LVM thin provisioning
+
+.SH DESCRIPTION
+
+Blocks in a standard logical volume are allocated when the LV is created,
+but blocks in a thin provisioned logical volume are allocated as they are
+written.  Because of this, a thin provisioned LV is given a virtual size,
+and can then be much larger than physically available storage.  The amount
+of physical storage provided for thin provisioned LVs can be increased
+later as the need arises.
+
+Blocks in a standard LV are allocated (during creation) from the VG, but
+blocks in a thin LV are allocated (during use) from a special "thin pool
+LV".  The thin pool LV contains blocks of physical storage, and blocks in
+thin LVs just reference blocks in the thin pool LV.
+
+A thin pool LV must be created before thin LVs can be created within it.
+A thin pool LV is created by combining two standard LVs: a large data LV
+that will hold blocks for thin LVs, and a metadata LV that will hold
+metadata.  The metadata tracks which data blocks belong to each thin LV.
+
+Snapshots of thin LVs are efficient because the data blocks common to a
+thin LV and any of its snapshots are shared.  Snapshots may be taken of
+thin LVs or of other thin snapshots.  Blocks common to recursive snapshots
+are also shared in the thin pool.  There is no limit to or degradation
+from sequences of snapshots.
+
+As thin LVs or snapshot LVs are written to, they consume data blocks in
+the thin pool.  As free data blocks in the pool decrease, more free blocks
+may need to be supplied.  This is done by extending the thin pool data LV
+with additional physical space from the VG.  Removing thin LVs or
+snapshots from the thin pool can also free blocks in the thin pool.
+However, removing LVs is not always an effective way of freeing space in a
+thin pool because the amount is limited to the number of blocks not shared
+with other LVs in the pool.
+
+Incremental block allocation from thin pools can cause thin LVs to become
+fragmented.  Standard LVs generally avoid this problem by allocating all
+the blocks at once during creation.
+
+
+.SH Thin Terms
+
+.TP
+ThinDataLV
+.br
+thin data LV
+.br
+large LV created in a VG
+.br
+used by thin pool to store ThinLV blocks
+
+.TP
+ThinMetaLV
+.br
+thin metadata LV
+.br
+small LV created in a VG
+.br
+used by thin pool to track data block usage
+
+.TP
+ThinPoolLV
+.br
+thin pool LV
+.br
+combination of ThinDataLV and ThinMetaLV
+.br
+contains ThinLVs and SnapLVs
+
+.TP
+ThinLV
+.br
+thin LV
+.br
+created from ThinPoolLV
+.br
+appears blank after creation
+
+.TP
+SnapLV
+.br
+snapshot LV
+.br
+created from ThinPoolLV
+.br
+appears as a snapshot of another LV after creation
+
+
+
+.SH Thin Usage
+
+The primary method for using lvm thin provisioning:
+
+.SS 1. create ThinDataLV
+
+Create an LV that will hold thin pool data.
+
+.B lvcreate \-n ThinDataLV \-L LargeSize VG
+
+.I Example
+.br
+# lvcreate \-n pool0 \-L 10G vg
+
+.SS 2. create ThinMetaLV
+
+Create an LV that will hold thin pool metadata.
+
+.B lvcreate \-n ThinMetaLV \-L SmallSize VG
+
+.I Example
+.br
+# lvcreate \-n pool0meta \-L 1G vg
+
+# lvs
+  LV        VG Attr       LSize
+  pool0     vg -wi-a----- 10.00g
+  pool0meta vg -wi-a----- 1.00g
+
+.SS 3. create ThinPoolLV
+
+.nf
+Combine the data and metadata LVs into a thin pool LV.
+ThinDataLV is renamed to hidden ThinPoolLV_tdata.
+ThinMetaLV is renamed to hidden ThinPoolLV_tmeta.
+The new ThinPoolLV takes the previous name of ThinDataLV.
+.fi
+
+.B lvconvert \-\-type thin-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
+
+.I Example
+.br
+# lvconvert \-\-type thin-pool \-\-poolmetadata vg/pool0meta vg/pool0
+
+# lvs vg/pool0
+  LV    VG Attr       LSize  Pool Origin Data% Meta%
+  pool0 vg twi-a-tz-- 10.00g      0.00   0.00
+
+# lvs \-a
+  LV            VG Attr       LSize
+  pool0         vg twi-a-tz-- 10.00g
+  [pool0_tdata] vg Twi-ao---- 10.00g
+  [pool0_tmeta] vg ewi-ao---- 1.00g
+
+.SS 4. create ThinLV
+
+.nf
+Create a new thin LV from the thin pool LV.
+The thin LV is created with a virtual size.
+Multiple new thin LVs may be created in the thin pool.
+Thin LV names must be unique in the VG.
+The '--type thin' option is inferred from the virtual size option.
+The --thinpool argument specifies which thin pool will
+contain the ThinLV.
+.fi
+
+.B lvcreate \-n ThinLV \-V VirtualSize \-\-thinpool ThinPoolLV VG
+
+.I Example
+.br
+Create a thin LV in a thin pool:
+.br
+# lvcreate \-n thin1 \-V 1T \-\-thinpool pool0 vg
+
+Create another thin LV in the same thin pool:
+.br
+# lvcreate \-n thin2 \-V 1T \-\-thinpool pool0 vg
+
+# lvs vg/thin1 vg/thin2
+  LV    VG Attr       LSize Pool  Origin Data%
+  thin1 vg Vwi-a-tz-- 1.00t pool0        0.00
+  thin2 vg Vwi-a-tz-- 1.00t pool0        0.00
+
+.SS 5. create SnapLV
+
+Create snapshots of an existing ThinLV or SnapLV.
+.br
+Do not specify
+.BR \-L ", " \-\-size
+when creating a thin snapshot.
+.br
+A size argument will cause an old COW snapshot to be created.
+
+.B lvcreate \-n SnapLV \-\-snapshot VG/ThinLV
+.br
+.B lvcreate \-n SnapLV \-\-snapshot VG/PrevSnapLV
+
+.I Example
+.br
+Create first snapshot of an existing ThinLV:
+.br
+# lvcreate \-n thin1s1 \-s vg/thin1
+
+Create second snapshot of the same ThinLV:
+.br
+# lvcreate \-n thin1s2 \-s vg/thin1
+
+Create a snapshot of the first snapshot:
+.br
+# lvcreate \-n thin1s1s1 \-s vg/thin1s1
+
+# lvs vg/thin1s1 vg/thin1s2 vg/thin1s1s1
+  LV        VG Attr       LSize Pool  Origin
+  thin1s1   vg Vwi---tz-k 1.00t pool0 thin1
+  thin1s2   vg Vwi---tz-k 1.00t pool0 thin1
+  thin1s1s1 vg Vwi---tz-k 1.00t pool0 thin1s1
+
+.SS 6. activate SnapLV
+
+Thin snapshots are created with the persistent "activation skip"
+flag, indicated by the "k" attribute.  Use \-K with lvchange
+or vgchange to activate thin snapshots with the "k" attribute.
+
+.B lvchange \-ay \-K VG/SnapLV
+
+.I Example
+.br
+# lvchange \-ay \-K vg/thin1s1
+
+# lvs vg/thin1s1
+  LV      VG Attr       LSize Pool  Origin
+  thin1s1 vg Vwi-a-tz-k 1.00t pool0 thin1
+
+.SH Thin Topics
+
+.B Alternate syntax for specifying type thin\-pool
+.br
+.B Automatic pool metadata LV
+.br
+.B Specify devices for data and metadata LVs
+.br
+.B Tolerate device failures using raid
+.br
+.B Spare metadata LV
+.br
+.B Metadata check and repair
+.br
+.B Activation of thin snapshots
+.br
+.B Removing thin pool LVs, thin LVs and snapshots
+.br
+.B Manually manage free data space of thin pool LV
+.br
+.B Manually manage free metadata space of a thin pool LV
+.br
+.B Using fstrim to increase free space in a thin pool LV
+.br
+.B Automatically extend thin pool LV
+.br
+.B Data space exhaustion
+.br
+.B Metadata space exhaustion
+.br
+.B Automatic extend settings
+.br
+.B Zeroing
+.br
+.B Discard
+.br
+.B Chunk size
+.br
+.B Size of pool metadata LV
+.br
+.B Create a thin snapshot of an external, read only LV
+.br
+.B Convert a standard LV to a thin LV with an external origin
+.br
+.B Single step thin pool LV creation
+.br
+.B Single step thin pool LV and thin LV creation
+.br
+.B Merge thin snapshots
+.br
+.B XFS on snapshots
+
+\&
+
+.SS Automatic pool metadata LV
+
+\&
+
+A thin data LV can be converted to a thin pool LV without specifying a
+thin pool metadata LV.  LVM automatically creates a metadata LV from the
+same VG.
+
+.B lvcreate \-n ThinDataLV \-L LargeSize VG
+.br
+.B lvconvert \-\-type thin\-pool VG/ThinDataLV
+
+.I Example
+.br
+.nf
+# lvcreate \-n pool0 \-L 10G vg
+# lvconvert \-\-type thin\-pool vg/pool0
+
+# lvs \-a
+  pool0           vg          twi-a-tz--  10.00g
+  [pool0_tdata]   vg          Twi-ao----  10.00g
+  [pool0_tmeta]   vg          ewi-ao----  16.00m
+.fi
+
+
+.SS Specify devices for data and metadata LVs
+
+\&
+
+The data and metadata LVs in a thin pool are best created on
+separate physical devices.  To do that, specify the device name(s)
+at the end of the lvcreate line.  It can be especially helpful
+to use fast devices for the metadata LV.
+
+.B lvcreate \-n ThinDataLV \-L LargeSize VG LargePV
+.br
+.B lvcreate \-n ThinMetaLV \-L SmallSize VG SmallPV
+.br
+.B lvconvert \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
+
+.I Example
+.br
+.nf
+# lvcreate \-n pool0 \-L 10G vg /dev/sdA
+# lvcreate \-n pool0meta \-L 1G vg /dev/sdB
+# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
+.fi
+
+.BR lvm.conf (5)
+.B thin_pool_metadata_require_separate_pvs
+.br
+controls the default PV usage for thin pool creation.
+
+\&
+
+.SS Tolerate device failures using raid
+
+\&
+
+To tolerate device failures, use raid for the pool data LV and
+pool metadata LV.  This is especially recommended for pool metadata LVs.
+
+.B lvcreate \-\-type raid1 \-m 1 \-n ThinMetaLV \-L SmallSize VG PVA PVB
+.br
+.B lvcreate \-\-type raid1 \-m 1 \-n ThinDataLV \-L LargeSize VG PVC PVD
+.br
+.B lvconvert \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
+
+.I Example
+.br
+.nf
+# lvcreate \-\-type raid1 \-m 1 \-n pool0 \-L 10G vg /dev/sdA /dev/sdB
+# lvcreate \-\-type raid1 \-m 1 \-n pool0meta \-L 1G vg /dev/sdC /dev/sdD
+# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
+.fi
+
+
+.SS Spare metadata LV
+
+\&
+
+The first time a thin pool LV is created, lvm will create a spare
+metadata LV in the VG.  This behavior can be controlled with the
+option \-\-poolmetadataspare y|n.  (Future thin pool creations will
+also attempt to create the pmspare LV if none exists.)
+
+To create the pmspare ("pool metadata spare") LV, lvm first creates
+an LV with a default name, e.g. lvol0, and then converts this LV to
+a hidden LV with the _pmspare suffix, e.g. lvol0_pmspare.
+
+One pmspare LV is kept in a VG to be used for any thin pool.
+
+The pmspare LV cannot be created explicitly, but may be removed
+explicitly.
+
+.I Example
+.br
+.nf
+# lvcreate \-n pool0 \-L 10G vg
+# lvcreate \-n pool0meta \-L 1G vg
+# lvconvert \-\-type thin\-pool \-\-poolmetadata vg/pool0meta vg/pool0
+
+# lvs \-a
+  [lvol0_pmspare] vg          ewi-------
+  pool0           vg          twi---tz--
+  [pool0_tdata]   vg          Twi-------
+  [pool0_tmeta]   vg          ewi-------
+.fi
+
+The "Metadata check and repair" section describes the use of
+the pmspare LV.
+
+
+.SS Metadata check and repair
+
+\&
+
+If thin pool metadata is damaged, it may be repairable.
+Checking and repairing thin pool metadata is analagous to
+running fsck on a file system.
+
+When a thin pool LV is activated, lvm runs the thin_check command
+to check the correctness of the metadata on the pool metadata LV.
+
+.BR lvm.conf (5)
+.B thin_check_executable
+.br
+can be set to an empty string ("") to disable the thin_check step.
+This is not recommended.
+
+.BR lvm.conf (5)
+.B thin_check_options
+.br
+controls the command options used for the thin_check command.
+
+If the thin_check command finds a problem with the metadata,
+the thin pool LV is not activated, and the thin pool metadata needs
+to be repaired.
+
+Simple repair commands are not always successful.  Advanced repair may
+require editing thin pool metadata and lvm metadata.  Newer versions of
+the kernel and lvm tools may be more successful at repair.  Report the
+details of damaged thin metadata to get the best advice on recovery.
+
+Command to repair a thin pool:
+.br
+.B lvconvert \-\-repair VG/ThinPoolLV
+
+Repair performs the following steps:
+
+1. Creates a new, repaired copy of the metadata.
+.br
+lvconvert runs the thin_repair command to read damaged metadata
+from the existing pool metadata LV, and writes a new repaired
+copy to the VG's pmspare LV.
+
+2. Replaces the thin pool metadata LV.
+.br
+If step 1 is successful, the thin pool metadata LV is replaced
+with the pmspare LV containing the corrected metadata.
+The previous thin pool metadata LV, containing the damaged metadata,
+becomes visible with the new name ThinPoolLV_tmetaN (where N is 0,1,...).
+
+If the repair works, the thin pool LV and its thin LVs can be activated,
+and the LV containing the damaged thin pool metadata can be removed.
+It may be useful to move the new metadata LV (previously pmspare) to a
+better PV.
+
+If the repair does not work, the thin pool LV and its thin LVs are lost.
+
+If metadata is manually restored with thin_repair directly,
+the pool metadata LV can be manually swapped with another LV
+containing new metadata:
+
+.B lvconvert \-\-thinpool VG/ThinPoolLV \-\-poolmetadata VG/NewThinMetaLV
+
+
+.SS Activation of thin snapshots
+
+\&
+
+When a thin snapshot LV is created, it is by default given the
+"activation skip" flag.  This flag is indicated by the "k" attribute
+displayed by lvs:
+
+.nf
+# lvs vg/thin1s1
+  LV         VG  Attr       LSize Pool  Origin
+  thin1s1    vg  Vwi---tz-k 1.00t pool0 thin1
+.fi
+
+This flag causes the snapshot LV to be skipped, i.e. not activated,
+by normal activation commands.  The skipping behavior does not
+apply to deactivation commands.
+
+A snapshot LV with the "k" attribute can be activated using
+the \-K (or \-\-ignoreactivationskip) option in addition to the
+standard \-ay (or \-\-activate y) option.
+
+Command to activate a thin snapshot LV:
+.br
+.B lvchange \-ay \-K VG/SnapLV
+
+The persistent "activation skip" flag can be turned off during
+lvcreate, or later with lvchange using the \-kn
+(or \-\-setactivationskip n) option.
+It can be turned on again with \-ky (or \-\-setactivationskip y).
+
+When the "activation skip" flag is removed, normal activation
+commands will activate the LV, and the \-K activation option is
+not needed.
+
+Command to create snapshot LV without the activation skip flag:
+.br
+.B lvcreate \-kn \-n SnapLV \-s VG/ThinLV
+
+Command to remove the activation skip flag from a snapshot LV:
+.br
+.B lvchange \-kn VG/SnapLV
+
+.BR lvm.conf (5)
+.B auto_set_activation_skip
+.br
+controls the default activation skip setting used by lvcreate.
+
+
+.SS Removing thin pool LVs, thin LVs and snapshots
+
+\&
+
+Removing a thin LV and its related snapshots returns the blocks it
+used to the thin pool LV.  These blocks will be reused for other
+thin LVs and snapshots.
+
+Removing a thin pool LV removes both the data LV and metadata LV
+and returns the space to the VG.
+
+lvremove of thin pool LVs, thin LVs and snapshots cannot be
+reversed with vgcfgrestore.
+
+vgcfgbackup does not back up thin pool metadata.
+
+
+.SS Manually manage free data space of thin pool LV
+
+\&
+
+The available free space in a thin pool LV can be displayed
+with the lvs command.  Free space can be added by extending
+the thin pool LV.
+
+Command to extend thin pool data space:
+.br
+.B lvextend \-L Size VG/ThinPoolLV
+
+.I Example
+.br
+.nf
+1. A thin pool LV is using 26.96% of its data blocks.
+# lvs
+  LV    VG           Attr       LSize   Pool  Origin Data%
+  pool0 vg           twi-a-tz--  10.00g               26.96
+
+2. Double the amount of physical space in the thin pool LV.
+# lvextend \-L+10G vg/pool0
+
+3. The percentage of used data blocks is half the previous value.
+# lvs
+  LV    VG           Attr       LSize   Pool  Origin Data%
+  pool0 vg           twi-a-tz--  20.00g               13.48
+.fi
+
+Other methods of increasing free data space in a thin pool LV
+include removing a thin LV and its related snapsots, or running
+fstrim on the file system using a thin LV.
+
+
+.SS Manually manage free metadata space of a thin pool LV
+
+\&
+
+The available metadata space in a thin pool LV can be displayed
+with the lvs \-o+metadata_percent command.
+
+Command to extend thin pool metadata space:
+.br
+.B lvextend \-\-poolmetadatasize Size VG/ThinPoolLV
+
+.I Example
+.br
+1. A thin pool LV is using 12.40% of its metadata blocks.
+.nf
+# lvs \-oname,size,data_percent,metadata_percent vg/pool0
+  LV    LSize   Data%  Meta%
+  pool0  20.00g  13.48  12.40
+.fi
+
+2. Display a thin pool LV with its component thin data LV and thin metadata LV.
+.nf
+# lvs \-a \-oname,attr,size vg
+  LV              Attr       LSize
+  pool0           twi-a-tz--  20.00g
+  [pool0_tdata]   Twi-ao----  20.00g
+  [pool0_tmeta]   ewi-ao----  12.00m
+.fi
+
+3. Double the amount of physical space in the thin metadata LV.
+.nf
+# lvextend \-\-poolmetadatasize +12M vg/pool0
+.fi
+
+4. The percentage of used metadata blocks is half the previous value.
+.nf
+# lvs \-a \-oname,size,data_percent,metadata_percent vg
+  LV              LSize   Data%  Meta%
+  pool0            20.00g  13.48   6.20
+  [pool0_tdata]    20.00g
+  [pool0_tmeta]    24.00m
+.fi
+
+
+.SS Using fstrim to increase free space in a thin pool LV
+
+\&
+
+Removing files in a file system on top of a thin LV does not
+generally add free space back to the thin pool.  Manually running
+the fstrim command can return space back to the thin pool that had
+been used by removed files.  fstrim uses discards and will not work
+if the thin pool LV has discards mode set to ignore.
+
+.I Example
+.br
+A thin pool has 10G of physical data space, and a thin LV has a virtual
+size of 100G.  Writing a 1G file to the file system reduces the
+free space in the thin pool by 10% and increases the virtual usage
+of the file system by 1%.  Removing the 1G file restores the virtual
+1% to the file system, but does not restore the physical 10% to the
+thin pool.  The fstrim command restores the physical space to the thin pool.
+
+.nf
+# lvs \-a \-oname,attr,size,pool_lv,origin,data_percent,metadata_percent vg
+LV              Attr       LSize   Pool  Origin Data%  Meta%
+pool0           twi-a-tz--  10.00g               47.01  21.03
+thin1           Vwi-aotz-- 100.00g pool0          2.70
+
+# df \-h /mnt/X
+Filesystem            Size  Used Avail Use% Mounted on
+/dev/mapper/vg-thin1   99G  1.1G   93G   2% /mnt/X
+
+# dd if=/dev/zero of=/mnt/X/1Gfile bs=4096 count=262144; sync
+
+# lvs
+pool0           vg   twi-a-tz--  10.00g               57.01  25.26
+thin1           vg   Vwi-aotz-- 100.00g pool0          3.70
+
+# df \-h /mnt/X
+/dev/mapper/vg-thin1   99G  2.1G   92G   3% /mnt/X
+
+# rm /mnt/X/1Gfile
+
+# lvs
+pool0           vg   twi-a-tz--  10.00g               57.01  25.26
+thin1           vg   Vwi-aotz-- 100.00g pool0          3.70
+
+# df \-h /mnt/X
+/dev/mapper/vg-thin1   99G  1.1G   93G   2% /mnt/X
+
+# fstrim \-v /mnt/X
+
+# lvs
+pool0           vg   twi-a-tz--  10.00g               47.01  21.03
+thin1           vg   Vwi-aotz-- 100.00g pool0          2.70
+.fi
+
+The "Discard" section covers an option for automatically freeing data
+space in a thin pool.
+
+
+.SS Automatically extend thin pool LV
+
+\&
+
+The lvm daemon dmeventd (lvm2-monitor) monitors the data usage of thin
+pool LVs and extends them when the usage reaches a certain level.  The
+necessary free space must exist in the VG to extend thin pool LVs.
+Monitoring and extension of thin pool LVs are controlled independently.
+
+.I monitoring
+
+When a thin pool LV is activated, dmeventd will begin monitoring it by
+default.
+
+Command to start or stop dmeventd monitoring a thin pool LV:
+.br
+.B lvchange \-\-monitor {y|n} VG/ThinPoolLV
+
+The current dmeventd monitoring status of a thin pool LV can be displayed
+with the command lvs -o+seg_monitor.
+
+.I autoextend
+
+dmeventd should be configured to extend thin pool LVs before all data
+space is used.  Warnings are emitted through syslog when the use of a thin
+pool reaches 80%, 85%, 90% and 95%.  (See the section "Data space
+exhaustion" for the effects of not extending a thin pool LV.)  The point
+at which dmeventd extends thin pool LVs, and the amount are controlled
+with two configuration settings:
+
+.BR lvm.conf (5)
+.B thin_pool_autoextend_threshold
+.br
+is a percentage full value that defines when the thin pool LV should be
+extended.  Setting this to 100 disables automatic extention.  The minimum
+value is 50.
+
+.BR lvm.conf (5)
+.B thin_pool_autoextend_percent
+.br
+defines how much extra data space should be added to the thin pool LV from
+the VG, in percent of its current size.
+
+.I disabling
+
+There are multiple ways that extension of thin pools could be prevented:
+
+.IP \[bu] 2
+If the dmeventd daemon is not running, no monitoring or automatic
+extension will occur.
+
+.IP \[bu]
+Even when dmeventd is running, all monitoring can be disabled with the
+lvm.conf monitoring setting.
+
+.IP \[bu]
+To activate or create a thin pool LV without interacting with dmeventd,
+the --ignoremonitoring option can be used.  With this option, the command
+will not ask dmeventd to monitor the thin pool LV.
+
+.IP \[bu]
+Setting thin_pool_autoextend_threshould to 100 disables automatic
+extension of thin pool LVs, even if they are being monitored by dmeventd.
+
+.P
+
+.I Example
+.br
+If thin_pool_autoextend_threshold is 70 and thin_pool_autoextend_percent is 20,
+whenever a pool exceeds 70% usage, it will be extended by another 20%.
+For a 1G pool, using 700M will trigger a resize to 1.2G. When the usage exceeds
+840M, the pool will be extended to 1.44G, and so on.
+
+
+.SS Data space exhaustion
+
+\&
+
+When properly managed, thin pool data space should be extended before it
+is all used (see the section "Automatically extend thin pool LV").  If
+thin pool data space is already exhausted, it can still be extended (see
+the section "Manually manage free data space of thin pool LV".)
+
+The behavior of a full thin pool is configurable with the --errorwhenfull
+y|n option to lvcreate or lvchange.  The errorwhenfull setting applies
+only to writes; reading thin LVs can continue even when data space is
+exhausted.
+
+Command to change the handling of a full thin pool:
+.br
+.B lvchange --errorwhenfull {y|n} VG/ThinPoolLV
+
+.BR lvm.conf (5)
+.B error_when_full
+.br
+controls the default error when full behavior.
+
+The current setting of a thin pool LV can be displayed with the command:
+lvs -o+lv_when_full.
+
+The errorwhenfull setting does not effect the monitoring and autoextend
+settings, and the monitoring/autoextend settings do not effect the
+errorwhenfull setting.  It is only when monitoring/autoextend are not
+effective that the thin pool becomes full and the errorwhenfull setting is
+applied.
+
+.I errorwhenfull n
+
+This is the default.  Writes to thin LVs are accepted and queued, with the
+expectation that pool data space will be extended soon.  Once data space
+is extended, the queued writes will be processed, and the thin pool will
+return to normal operation.
+
+While waiting to be extended, the thin pool will queue writes for up to 60
+seconds (the default).  If data space has not been extended after this
+time, the queued writes will return an error to the caller, e.g. the file
+system.  This can result in file system corruption for non-journaled file
+systems that may require fsck.  When a thin pool returns errors for writes
+to a thin LV, any file system is subject to losing unsynced user data.
+
+The 60 second timeout can be changed or disabled with the dm\-thin\-pool
+kernel module option
+.B no_space_timeout.
+This option sets the number of seconds that thin pools will queue writes.
+If set to 0, writes will not time out.  Disabling timeouts can result in
+the system running out of resources, memory exhaustion, hung tasks, and
+deadlocks.  (The timeout applies to all thin pools on the system.)
+
+.I errorwhenfull y
+
+Writes to thin LVs immediately return an error, and no writes are queued.
+In the case of a file system, this can result in corruption that may
+require fsck (the specific consequences depend on the thin LV user.)
+
+.I data percent
+
+When data space is exhausted, the lvs command displays 100 under Data% for
+the thin pool LV:
+
+.nf
+# lvs vg/pool0
+  LV     VG           Attr       LSize   Pool  Origin Data%
+  pool0  vg           twi-a-tz-- 512.00m              100.00
+.fi
+
+.I causes
+
+A thin pool may run out of data space for any of the following reasons:
+
+.IP \[bu] 2
+Automatic extension of the thin pool is disabled, and the thin pool is not
+manually extended.  (Disabling automatic extension is not recommended.)
+
+.IP \[bu]
+The dmeventd daemon is not running and the thin pool is not manually
+extended.  (Disabling dmeventd is not recommended.)
+
+.IP \[bu]
+Automatic extension of the thin pool is too slow given the rate of writes
+to thin LVs in the pool.  (This can be addressed by tuning the
+thin_pool_autoextend_threshold and thin_pool_autoextend_percent.
+See "Automatic extend settings".)
+
+.IP \[bu]
+The VG does not have enough free blocks to extend the thin pool.
+
+.P
+
+.SS Metadata space exhaustion
+
+\&
+
+If thin pool metadata space is exhausted (or a thin pool metadata
+operation fails), errors will be returned for IO operations on thin LVs.
+
+When metadata space is exhausted, the lvs command displays 100 under Meta%
+for the thin pool LV:
+
+.nf
+# lvs \-o lv_name,size,data_percent,metadata_percent vg/pool0
+  LV    LSize Data%  Meta%
+  pool0              100.00
+.fi
+
+The same reasons for thin pool data space exhaustion apply to thin pool
+metadata space.
+
+Metadata space exhaustion can lead to inconsistent thin pool metadata and
+inconsistent file systems, so the response requires offline checking and
+repair.
+
+1. Deactivate the thin pool LV, or reboot the system if this is not possible.
+
+2. Repair thin pool with lvconvert \-\-repair.
+.br
+   See "Metadata check and repair".
+
+3. Extend pool metadata space with lvextend \-\-poolmetadatasize.
+.br
+   See "Manually manage free metadata space of a thin pool LV".
+
+4. Check and repair file system with fsck.
+
+
+.SS Automatic extend settings
+
+\&
+
+Thin pool LVs can be extended according to preset values.  The presets
+determine if the LV should be extended based on how full it is, and if so
+by how much.  When dmeventd monitors thin pool LVs, it uses lvextend with
+these presets.  (See "Automatically extend thin pool LV".)
+
+Command to extend a thin pool data LV using presets:
+.br
+.B lvextend \-\-use\-policies VG/ThinPoolLV
+
+The command uses these settings:
+
+.BR lvm.conf (5)
+.B thin_pool_autoextend_threshold
+.br
+autoextend the LV when its usage exceeds this percent.
+
+.BR lvm.conf (5)
+.B thin_pool_autoextend_percent
+.br
+autoextend the LV by this much additional space.
+
+To see the default values of these settings, run:
+
+.B lvmconfig \-\-type default \-\-withcomment
+.RS
+.B activation/thin_pool_autoextend_threshold
+.RE
+
+.B lvmconfig \-\-type default \-\-withcomment
+.RS
+.B activation/thin_pool_autoextend_percent
+.RE
+
+To change these values globally, edit
+.BR lvm.conf (5).
+
+To change these values on a per-VG or per-LV basis, attach a "profile" to
+the VG or LV.  A profile is a collection of config settings, saved in a
+local text file (using the lvm.conf format).  lvm looks for profiles in
+the profile_dir directory, e.g. /etc/lvm/profile/.  Once attached to a VG
+or LV, lvm will process the VG or LV using the settings from the attached
+profile.  A profile is named and referenced by its file name.
+
+To use a profile to customize the lvextend settings for an LV:
+
+.IP \[bu] 2
+Create a file containing settings, saved in profile_dir.
+For the profile_dir location, run:
+.br
+.B lvmconfig config/profile_dir
+
+.IP \[bu] 2
+Attach the profile to an LV, using the command:
+.br
+.B lvchange \-\-metadataprofile ProfileName VG/ThinPoolLV
+
+.IP \[bu] 2
+Extend the LV using the profile settings:
+.br
+.B lvextend \-\-use\-policies VG/ThinPoolLV
+
+.P
+
+.I Example
+.br
+.nf
+# lvmconfig config/profile_dir
+profile_dir="/etc/lvm/profile"
+
+# cat /etc/lvm/profile/pool0extend.profile
+activation {
+        thin_pool_autoextend_threshold=50
+        thin_pool_autoextend_percent=10
+}
+
+# lvchange --metadataprofile pool0extend vg/pool0
+
+# lvextend --use-policies vg/pool0
+.fi
+
+.I Notes
+.IP \[bu] 2
+A profile is attached to a VG or LV by name, where the name references a
+local file in profile_dir.  If the VG is moved to another machine, the
+file with the profile also needs to be moved.
+
+.IP \[bu] 2
+Only certain settings can be used in a VG or LV profile, see:
+.br
+.B lvmconfig \-\-type profilable-metadata.
+
+.IP \[bu] 2
+An LV without a profile of its own will inherit the VG profile.
+
+.IP \[bu] 2
+Remove a profile from an LV using the command:
+.br
+.B lvchange --detachprofile VG/ThinPoolLV.
+
+.IP \[bu] 2
+Commands can also have profiles applied to them.  The settings that can be
+applied to a command are different than the settings that can be applied
+to a VG or LV.  See lvmconfig \-\-type profilable\-command.  To apply a
+profile to a command, write a profile, save it in the profile directory,
+and run the command using the option: \-\-commandprofile ProfileName.
+
+
+.SS Zeroing
+
+\&
+
+When a thin pool provisions a new data block for a thin LV, the
+new block is first overwritten with zeros.  The zeroing mode is
+indicated by the "z" attribute displayed by lvs.  The option \-Z
+(or \-\-zero) can be added to commands to specify the zeroing mode.
+
+Command to set the zeroing mode when creating a thin pool LV:
+.br
+.B lvconvert \-\-type thin\-pool \-Z{y|n}
+.br
+.RS
+.B \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
+.RE
+
+Command to change the zeroing mode of an existing thin pool LV:
+.br
+.B lvchange \-Z{y|n} VG/ThinPoolLV
+
+If zeroing mode is changed from "n" to "y", previously provisioned
+blocks are not zeroed.
+
+Provisioning of large zeroed chunks impacts performance.
+
+.BR lvm.conf (5)
+.B thin_pool_zero
+.br
+controls the default zeroing mode used when creating a thin pool.
+
+
+.SS Discard
+
+\&
+
+The discard behavior of a thin pool LV determines how discard requests are
+handled.  Enabling discard under a file system may adversely affect the
+file system performance (see the section on fstrim for an alternative.)
+Possible discard behaviors:
+
+ignore: Ignore any discards that are received.
+
+nopassdown: Process any discards in the thin pool itself and allow
+the no longer needed extends to be overwritten by new data.
+
+passdown: Process discards in the thin pool (as with nopassdown), and
+pass the discards down the the underlying device.  This is the default
+mode.
+
+Command to display the current discard mode of a thin pool LV:
+.br
+.B lvs \-o+discards VG/ThinPoolLV
+
+Command to set the discard mode when creating a thin pool LV:
+.br
+.B lvconvert \-\-discards {ignore|nopassdown|passdown}
+.br
+.RS
+.B \-\-type thin\-pool \-\-poolmetadata VG/ThinMetaLV VG/ThinDataLV
+.RE
+
+Command to change the discard mode of an existing thin pool LV:
+.br
+.B lvchange \-\-discards {ignore|nopassdown|passdown} VG/ThinPoolLV
+
+.I Example
+.br
+.nf
+# lvs \-o name,discards vg/pool0
+pool0 passdown
+
+# lvchange \-\-discards ignore vg/pool0
+.fi
+
+.BR lvm.conf (5)
+.B thin_pool_discards
+.br
+controls the default discards mode used when creating a thin pool.
+
+
+.SS Chunk size
+
+\&
+
+The size of data blocks managed by a thin pool can be specified with the
+\-\-chunksize option when the thin pool LV is created.  The default unit
+is KiB. The value must be a multiple of 64KiB between 64KiB and 1GiB.
+
+When a thin pool is used primarily for the thin provisioning feature, a
+larger value is optimal.  To optimize for many snapshots, a smaller value
+reduces copying time and consumes less space.
+
+Command to display the thin pool LV chunk size:
+.br
+.B lvs \-o+chunksize VG/ThinPoolLV
+
+.I Example
+.br
+.nf
+# lvs \-o name,chunksize
+  pool0 64.00k
+.fi
+
+.BR lvm.conf (5)
+.B thin_pool_chunk_size
+.br
+controls the default chunk size used when creating a thin pool.
+
+The default value is shown by:
+.br
+.B lvmconfig \-\-type default allocation/thin_pool_chunk_size
+
+
+.SS Size of pool metadata LV
+
+\&
+
+The amount of thin metadata depends on how many blocks are shared between
+thin LVs (i.e. through snapshots).  A thin pool with many snapshots may
+need a larger metadata LV.  Thin pool metadata LV sizes can be from 2MiB
+to 16GiB.
+
+When using lvcreate to create what will become a thin metadata LV, the
+size is specified with the \-L|\-\-size option.
+
+When an LVM command automatically creates a thin metadata LV, the size is
+specified with the \-\-poolmetadatasize option.  When this option is not
+given, LVM automatically chooses a size based on the data size and chunk
+size.
+
+It can be hard to predict the amount of metadata space that will be
+needed, so it is recommended to start with a size of 1GiB which should be
+enough for all practical purposes.  A thin pool metadata LV can later be
+manually or automatically extended if needed.
+
+
+.SS Create a thin snapshot of an external, read only LV
+
+\&
+
+Thin snapshots are typically taken of other thin LVs or other
+thin snapshot LVs within the same thin pool.  It is also possible
+to take thin snapshots of external, read only LVs.  Writes to the
+snapshot are stored in the thin pool, and the external LV is used
+to read unwritten parts of the thin snapshot.
+
+.B lvcreate \-n SnapLV \-s VG/ExternalOriginLV \-\-thinpool VG/ThinPoolLV
+
+.I Example
+.br
+.nf
+# lvchange \-an vg/lve
+# lvchange \-\-permission r vg/lve
+# lvcreate \-n snaplve \-s vg/lve \-\-thinpool vg/pool0
+
+# lvs vg/lve vg/snaplve
+  LV      VG  Attr       LSize  Pool  Origin Data%
+  lve     vg  ori------- 10.00g
+  snaplve vg  Vwi-a-tz-- 10.00g pool0 lve      0.00
+.fi
+
+
+.SS Convert a standard LV to a thin LV with an external origin
+
+\&
+
+A new thin LV can be created and given the name of an existing
+standard LV.  At the same time, the existing LV is converted to a
+read only external LV with a new name.  Unwritten portions of the
+thin LV are read from the external LV.
+The new name given to the existing LV can be specified with
+\-\-originname, otherwise the existing LV will be given a default
+name, e.g. lvol#.
+
+Convert ExampleLV into a read only external LV with the new name
+NewExternalOriginLV, and create a new thin LV that is given the previous
+name of ExampleLV.
+
+.B lvconvert \-\-type thin \-\-thinpool VG/ThinPoolLV
+.br
+.RS
+.B \-\-originname NewExternalOriginLV VG/ExampleLV
+.RE
+
+.I Example
+.br
+.nf
+# lvcreate \-n lv_example \-L 10G vg
+
+# lvs
+  lv_example      vg          -wi-a-----  10.00g
+
+# lvconvert \-\-type thin \-\-thinpool vg/pool0
+          \-\-originname lv_external \-\-thin vg/lv_example
+
+# lvs
+  LV              VG          Attr       LSize   Pool  Origin
+  lv_example      vg          Vwi-a-tz--  10.00g pool0 lv_external
+  lv_external     vg          ori-------  10.00g
+.fi
+
+
+.SS Single step thin pool LV creation
+
+\&
+
+A thin pool LV can be created with a single lvcreate command,
+rather than using lvconvert on existing LVs.
+This one command creates a thin data LV, a thin metadata LV,
+and combines the two into a thin pool LV.
+
+.B lvcreate \-\-type thin\-pool \-L LargeSize \-n ThinPoolLV VG
+
+.I Example
+.br
+.nf
+# lvcreate \-\-type thin\-pool \-L8M -n pool0 vg
+
+# lvs vg/pool0
+  LV    VG  Attr       LSize Pool Origin Data%
+  pool0 vg  twi-a-tz-- 8.00m               0.00
+
+# lvs \-a
+  pool0           vg          twi-a-tz--   8.00m
+  [pool0_tdata]   vg          Twi-ao----   8.00m
+  [pool0_tmeta]   vg          ewi-ao----   8.00m
+.fi
+
+
+.SS Single step thin pool LV and thin LV creation
+
+\&
+
+A thin pool LV and a thin LV can be created with a single
+lvcreate command.  This one command creates a thin data LV,
+a thin metadata LV, combines the two into a thin pool LV,
+and creates a thin LV in the new pool.
+.br
+\-L LargeSize specifies the physical size of the thin pool LV.
+.br
+\-V VirtualSize specifies the virtual size of the thin LV.
+
+.B lvcreate \-\-type thin \-V VirtualSize \-L LargeSize
+.RS
+.B \-n ThinLV \-\-thinpool VG/ThinPoolLV
+.RE
+
+Equivalent to:
+.br
+.B lvcreate \-\-type thin\-pool \-L LargeSize VG/ThinPoolLV
+.br
+.B lvcreate \-n ThinLV \-V VirtualSize \-\-thinpool VG/ThinPoolLV
+
+.I Example
+.br
+.nf
+# lvcreate \-L8M \-V2G \-n thin1 \-\-thinpool vg/pool0
+
+# lvs \-a
+  pool0           vg          twi-a-tz--   8.00m
+  [pool0_tdata]   vg          Twi-ao----   8.00m
+  [pool0_tmeta]   vg          ewi-ao----   8.00m
+  thin1           vg          Vwi-a-tz--   2.00g pool0
+.fi
+
+
+.SS Merge thin snapshots
+
+\&
+
+A thin snapshot can be merged into its origin thin LV using the lvconvert
+\-\-merge command.  The result of a snapshot merge is that the origin thin
+LV takes the content of the snapshot LV, and the snapshot LV is removed.
+Any content that was unique to the origin thin LV is lost after the merge.
+
+Because a merge changes the content of an LV, it cannot be done while the
+LVs are open, e.g. mounted.  If a merge is initiated while the LVs are open,
+the effect of the merge is delayed until the origin thin LV is next
+activated.
+
+.B lvconvert \-\-merge VG/SnapLV
+
+.I Example
+.br
+.nf
+# lvs vg
+  LV      VG Attr       LSize   Pool  Origin
+  pool0   vg twi-a-tz--  10.00g
+  thin1   vg Vwi-a-tz-- 100.00g pool0
+  thin1s1 vg Vwi-a-tz-k 100.00g pool0 thin1
+
+# lvconvert \-\-merge vg/thin1s1
+
+# lvs vg
+  LV      VG Attr       LSize   Pool  Origin
+  pool0   vg twi-a-tz--  10.00g
+  thin1   vg Vwi-a-tz-- 100.00g pool0
+.fi
+
+.I Example
+.br
+.nf
+Delayed merging of open LVs.
+
+# lvs vg
+  LV      VG Attr       LSize   Pool  Origin
+  pool0   vg twi-a-tz--  10.00g
+  thin1   vg Vwi-aotz-- 100.00g pool0
+  thin1s1 vg Vwi-aotz-k 100.00g pool0 thin1
+
+# df
+/dev/mapper/vg-thin1            100G   33M  100G   1% /mnt/X
+/dev/mapper/vg-thin1s1          100G   33M  100G   1% /mnt/Xs
+
+# ls /mnt/X
+file1 file2 file3
+# ls /mnt/Xs
+file3 file4 file5
+
+# lvconvert \-\-merge vg/thin1s1
+Logical volume vg/thin1s1 contains a filesystem in use.
+Delaying merge since snapshot is open.
+Merging of thin snapshot thin1s1 will occur on next activation.
+
+# umount /mnt/X
+# umount /mnt/Xs
+
+# lvs \-a vg
+  LV              VG   Attr       LSize   Pool  Origin
+  pool0           vg   twi-a-tz--  10.00g
+  [pool0_tdata]   vg   Twi-ao----  10.00g
+  [pool0_tmeta]   vg   ewi-ao----   1.00g
+  thin1           vg   Owi-a-tz-- 100.00g pool0
+  [thin1s1]       vg   Swi-a-tz-k 100.00g pool0 thin1
+
+# lvchange \-an vg/thin1
+# lvchange \-ay vg/thin1
+
+# mount /dev/vg/thin1 /mnt/X
+
+# ls /mnt/X
+file3 file4 file5
+.fi
+
+
+.SS XFS on snapshots
+
+\&
+
+Mounting an XFS file system on a new snapshot LV requires attention to the
+file system's log state and uuid.  On the snapshot LV, the xfs log will
+contain a dummy transaction, and the xfs uuid will match the uuid from the
+file system on the origin LV.
+
+If the snapshot LV is writable, mounting will recover the log to clear the
+dummy transaction, but will require skipping the uuid check:
+
+mount /dev/VG/SnapLV /mnt \-o nouuid
+
+Or, the uuid can be changed on disk before mounting:
+
+xfs_admin \-U generate /dev/VG/SnapLV
+.br
+mount /dev/VG/SnapLV /mnt
+
+If the snapshot LV is readonly, the log recovery and uuid check need to be
+skipped while mounting readonly:
+
+mount /dev/VG/SnapLV /mnt \-o ro,nouuid,norecovery
+
+.SH SEE ALSO
+.BR lvm (8),
+.BR lvm.conf (5),
+.BR lvmconfig (8),
+.BR lvcreate (8),
+.BR lvconvert (8),
+.BR lvchange (8),
+.BR lvextend (8),
+.BR lvremove (8),
+.BR lvs (8),
+.BR thin_dump (8),
+.BR thin_repair (8)
+.BR thin_restore (8)
+
diff --git a/man/lvreduce.8.des b/man/lvreduce.8.des
deleted file mode 100644
index 3d5fc2a..0000000
--- a/man/lvreduce.8.des
+++ /dev/null
@@ -1,19 +0,0 @@
-lvreduce reduces the size of an LV. The freed logical extents are returned
-to the VG to be used by other LVs. A copy\-on\-write snapshot LV can also
-be reduced if less space is needed to hold COW blocks. Use
-\fBlvconvert\fP(8) to change the number of data images in a RAID or
-mirrored LV.
-
-Be careful when reducing an LV's size, because data in the reduced area is
-lost. Ensure that any file system on the LV is resized \fBbefore\fP
-running lvreduce so that the removed extents are not in use by the file
-system.
-
-Sizes will be rounded if necessary. For example, the LV size must be an
-exact number of extents, and the size of a striped segment must be a
-multiple of the number of stripes.
-
-In the usage section below, \fB--size\fP \fISize\fP can be replaced
-with \fB--extents\fP \fINumber\fP.  See both descriptions
-the options section.
-
diff --git a/man/lvreduce.8.end b/man/lvreduce.8.end
deleted file mode 100644
index 59fde52..0000000
--- a/man/lvreduce.8.end
+++ /dev/null
@@ -1,5 +0,0 @@
-.SH EXAMPLES
-
-Reduce the size of an LV by 3 logical extents:
-.br
-.B lvreduce \-l \-3 vg00/lvol1
diff --git a/man/lvreduce.8_des b/man/lvreduce.8_des
new file mode 100644
index 0000000..3d5fc2a
--- /dev/null
+++ b/man/lvreduce.8_des
@@ -0,0 +1,19 @@
+lvreduce reduces the size of an LV. The freed logical extents are returned
+to the VG to be used by other LVs. A copy\-on\-write snapshot LV can also
+be reduced if less space is needed to hold COW blocks. Use
+\fBlvconvert\fP(8) to change the number of data images in a RAID or
+mirrored LV.
+
+Be careful when reducing an LV's size, because data in the reduced area is
+lost. Ensure that any file system on the LV is resized \fBbefore\fP
+running lvreduce so that the removed extents are not in use by the file
+system.
+
+Sizes will be rounded if necessary. For example, the LV size must be an
+exact number of extents, and the size of a striped segment must be a
+multiple of the number of stripes.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
diff --git a/man/lvreduce.8_end b/man/lvreduce.8_end
new file mode 100644
index 0000000..59fde52
--- /dev/null
+++ b/man/lvreduce.8_end
@@ -0,0 +1,5 @@
+.SH EXAMPLES
+
+Reduce the size of an LV by 3 logical extents:
+.br
+.B lvreduce \-l \-3 vg00/lvol1
diff --git a/man/lvreduce.8_pregen b/man/lvreduce.8_pregen
new file mode 100644
index 0000000..67c382b
--- /dev/null
+++ b/man/lvreduce.8_pregen
@@ -0,0 +1,426 @@
+.TH LVREDUCE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvreduce \- Reduce the size of a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvreduce\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvreduce reduces the size of an LV. The freed logical extents are returned
+to the VG to be used by other LVs. A copy\-on\-write snapshot LV can also
+be reduced if less space is needed to hold COW blocks. Use
+\fBlvconvert\fP(8) to change the number of data images in a RAID or
+mirrored LV.
+
+Be careful when reducing an LV's size, because data in the reduced area is
+lost. Ensure that any file system on the LV is resized \fBbefore\fP
+running lvreduce so that the removed extents are not in use by the file
+system.
+
+Sizes will be rounded if necessary. For example, the LV size must be an
+exact number of extents, and the size of a striped segment must be a
+multiple of the number of stripes.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvreduce\fP \fB-L\fP|\fB--size\fP [\fB-\fP]\fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP [\fB-\fP]\fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--nofsck\fP ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--extents\fP [\fB-\fP]\fINumber\fP[PERCENT]
+.br
+Specifies the new size of the LV in logical extents.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+An alternate syntax allows the size to be determined indirectly
+as a percentage of the size of a related VG, LV, or set of PVs. The
+suffix \fB%VG\fP denotes the total size of the VG, the suffix \fB%FREE\fP
+the remaining free space in the VG, and the suffix \fB%PVS\fP the free
+space in the specified PVs.  For a snapshot, the size
+can be expressed as a percentage of the total size of the origin LV
+with the suffix \fB%ORIGIN\fP (\fB100%ORIGIN\fP provides space for
+the whole origin).
+When expressed as a percentage, the size defines an upper limit for the
+number of logical extents in the new LV. The precise number of logical
+extents in the new LV is not determined until the command has completed.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--nofsck\fP
+.br
+Do not perform fsck before resizing filesystem when filesystem
+requires it. You may need to use --force to proceed with
+this option.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--resizefs\fP
+.br
+Resize underlying filesystem together with the LV using fsadm(8).
+.ad b
+
+.HP
+.ad l
+\fB-L\fP|\fB--size\fP [\fB-\fP]\fISize\fP[m|UNIT]
+.br
+Specifies the new size of the LV.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Reduce the size of an LV by 3 logical extents:
+.br
+.B lvreduce \-l \-3 vg00/lvol1
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvremove.8.des b/man/lvremove.8.des
deleted file mode 100644
index 14587c1..0000000
--- a/man/lvremove.8.des
+++ /dev/null
@@ -1,27 +0,0 @@
-lvremove removes one or more LVs. For standard LVs, this returns the
-logical extents that were used by the LV to the VG for use by other LVs.
-
-Confirmation will be requested before deactivating any active LV prior to
-removal.  LVs cannot be deactivated or removed while they are open (e.g.
-if they contain a mounted filesystem). Removing an origin LV will also
-remove all dependent snapshots.
-
-When a single force option is used, LVs are removed without confirmation,
-and the command will try to deactivate unused LVs.
-
-To remove damaged LVs, two force options may be required (\fB-ff\fP).
-
-\fBHistorical LVs\fP
-
-If the configuration setting \fBmetadata/record_lvs_history\fP is enabled
-and the LV being removed forms part of the history of at least one LV that
-is still present, then a simplified representation of the LV will be
-retained. This includes the time of removal (\fBlv_time_removed\fP
-reporting field), creation time (\fBlv_time\fP), name (\fBlv_name\fP), LV
-uuid (\fBlv_uuid\fP) and VG name (\fBvg_name\fP). This allows later
-reporting to see the ancestry chain of thin snapshot volumes, even after
-some intermediate LVs have been removed. The names of such historical LVs
-acquire a hyphen as a prefix (e.g. '-lvol1') and cannot be reactivated.
-Use lvremove a second time, with the hyphen, to remove the record of the
-former LV completely.
-
diff --git a/man/lvremove.8.end b/man/lvremove.8.end
deleted file mode 100644
index 5c70ed6..0000000
--- a/man/lvremove.8.end
+++ /dev/null
@@ -1,11 +0,0 @@
-.SH EXAMPLES
-
-Remove an active LV without asking for confirmation.
-.br
-.B lvremove \-f vg00/lvol1
-
-Remove all LVs the specified VG.
-.br
-.B lvremove vg00
-
-
diff --git a/man/lvremove.8_des b/man/lvremove.8_des
new file mode 100644
index 0000000..14587c1
--- /dev/null
+++ b/man/lvremove.8_des
@@ -0,0 +1,27 @@
+lvremove removes one or more LVs. For standard LVs, this returns the
+logical extents that were used by the LV to the VG for use by other LVs.
+
+Confirmation will be requested before deactivating any active LV prior to
+removal.  LVs cannot be deactivated or removed while they are open (e.g.
+if they contain a mounted filesystem). Removing an origin LV will also
+remove all dependent snapshots.
+
+When a single force option is used, LVs are removed without confirmation,
+and the command will try to deactivate unused LVs.
+
+To remove damaged LVs, two force options may be required (\fB-ff\fP).
+
+\fBHistorical LVs\fP
+
+If the configuration setting \fBmetadata/record_lvs_history\fP is enabled
+and the LV being removed forms part of the history of at least one LV that
+is still present, then a simplified representation of the LV will be
+retained. This includes the time of removal (\fBlv_time_removed\fP
+reporting field), creation time (\fBlv_time\fP), name (\fBlv_name\fP), LV
+uuid (\fBlv_uuid\fP) and VG name (\fBvg_name\fP). This allows later
+reporting to see the ancestry chain of thin snapshot volumes, even after
+some intermediate LVs have been removed. The names of such historical LVs
+acquire a hyphen as a prefix (e.g. '-lvol1') and cannot be reactivated.
+Use lvremove a second time, with the hyphen, to remove the record of the
+former LV completely.
+
diff --git a/man/lvremove.8_end b/man/lvremove.8_end
new file mode 100644
index 0000000..5c70ed6
--- /dev/null
+++ b/man/lvremove.8_end
@@ -0,0 +1,11 @@
+.SH EXAMPLES
+
+Remove an active LV without asking for confirmation.
+.br
+.B lvremove \-f vg00/lvol1
+
+Remove all LVs the specified VG.
+.br
+.B lvremove vg00
+
+
diff --git a/man/lvremove.8_pregen b/man/lvremove.8_pregen
new file mode 100644
index 0000000..e823f1c
--- /dev/null
+++ b/man/lvremove.8_pregen
@@ -0,0 +1,424 @@
+.TH LVREMOVE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvremove \- Remove logical volume(s) from the system
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvremove\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvremove removes one or more LVs. For standard LVs, this returns the
+logical extents that were used by the LV to the VG for use by other LVs.
+
+Confirmation will be requested before deactivating any active LV prior to
+removal.  LVs cannot be deactivated or removed while they are open (e.g.
+if they contain a mounted filesystem). Removing an origin LV will also
+remove all dependent snapshots.
+
+When a single force option is used, LVs are removed without confirmation,
+and the command will try to deactivate unused LVs.
+
+To remove damaged LVs, two force options may be required (\fB-ff\fP).
+
+\fBHistorical LVs\fP
+
+If the configuration setting \fBmetadata/record_lvs_history\fP is enabled
+and the LV being removed forms part of the history of at least one LV that
+is still present, then a simplified representation of the LV will be
+retained. This includes the time of removal (\fBlv_time_removed\fP
+reporting field), creation time (\fBlv_time\fP), name (\fBlv_name\fP), LV
+uuid (\fBlv_uuid\fP) and VG name (\fBvg_name\fP). This allows later
+reporting to see the ancestry chain of thin snapshot volumes, even after
+some intermediate LVs have been removed. The names of such historical LVs
+acquire a hyphen as a prefix (e.g. '-lvol1') and cannot be reactivated.
+Use lvremove a second time, with the hyphen, to remove the record of the
+former LV completely.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvremove\fP \fIVG\fP|\fILV\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nohistory\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--nohistory\fP
+.br
+Do not record history of LVs being removed.
+This has no effect unless the configuration setting
+metadata/record_lvs_history is enabled.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Remove an active LV without asking for confirmation.
+.br
+.B lvremove \-f vg00/lvol1
+
+Remove all LVs the specified VG.
+.br
+.B lvremove vg00
+
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvrename.8.des b/man/lvrename.8.des
deleted file mode 100644
index a8455fc..0000000
--- a/man/lvrename.8.des
+++ /dev/null
@@ -1,2 +0,0 @@
-lvrename renames an existing LV or a historical LV (see \fBlvremove\fP for
-historical LV information.)
diff --git a/man/lvrename.8.end b/man/lvrename.8.end
deleted file mode 100644
index 3409b8a..0000000
--- a/man/lvrename.8.end
+++ /dev/null
@@ -1,10 +0,0 @@
-.SH EXAMPLES
-
-Rename "lvold" to "lvnew":
-.br
-.B lvrename /dev/vg02/lvold vg02/lvnew
-
-An alternate syntax to rename "lvold" to "lvnew":
-.br
-.B lvrename vg02 lvold lvnew
-
diff --git a/man/lvrename.8_des b/man/lvrename.8_des
new file mode 100644
index 0000000..a8455fc
--- /dev/null
+++ b/man/lvrename.8_des
@@ -0,0 +1,2 @@
+lvrename renames an existing LV or a historical LV (see \fBlvremove\fP for
+historical LV information.)
diff --git a/man/lvrename.8_end b/man/lvrename.8_end
new file mode 100644
index 0000000..3409b8a
--- /dev/null
+++ b/man/lvrename.8_end
@@ -0,0 +1,10 @@
+.SH EXAMPLES
+
+Rename "lvold" to "lvnew":
+.br
+.B lvrename /dev/vg02/lvold vg02/lvnew
+
+An alternate syntax to rename "lvold" to "lvnew":
+.br
+.B lvrename vg02 lvold lvnew
+
diff --git a/man/lvrename.8_pregen b/man/lvrename.8_pregen
new file mode 100644
index 0000000..20bdfbf
--- /dev/null
+++ b/man/lvrename.8_pregen
@@ -0,0 +1,356 @@
+.TH LVRENAME 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvrename \- Rename a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvrename\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvrename renames an existing LV or a historical LV (see \fBlvremove\fP for
+historical LV information.)
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvrename\fP \fIVG\fP \fILV\fP \fILV\fP\fI_new\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+\fBlvrename\fP \fILV\fP \fILV\fP\fI_new\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Rename "lvold" to "lvnew":
+.br
+.B lvrename /dev/vg02/lvold vg02/lvnew
+
+An alternate syntax to rename "lvold" to "lvnew":
+.br
+.B lvrename vg02 lvold lvnew
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvresize.8.des b/man/lvresize.8.des
deleted file mode 100644
index 6f39ef7..0000000
--- a/man/lvresize.8.des
+++ /dev/null
@@ -1,7 +0,0 @@
-lvresize resizes an LV in the same way as lvextend and lvreduce. See
-\fBlvextend\fP(8) and \fBlvreduce\fP(8) for more information.
-
-In the usage section below, \fB--size\fP \fISize\fP can be replaced
-with \fB--extents\fP \fINumber\fP.  See both descriptions
-the options section.
-
diff --git a/man/lvresize.8.end b/man/lvresize.8.end
deleted file mode 100644
index a336d62..0000000
--- a/man/lvresize.8.end
+++ /dev/null
@@ -1,6 +0,0 @@
-.SH EXAMPLES
-
-Extend an LV by 16MB using specific physical extents:
-.br
-.B lvresize \-L+16M vg1/lv1 /dev/sda:0\-1 /dev/sdb:0\-1
-
diff --git a/man/lvresize.8_des b/man/lvresize.8_des
new file mode 100644
index 0000000..6f39ef7
--- /dev/null
+++ b/man/lvresize.8_des
@@ -0,0 +1,7 @@
+lvresize resizes an LV in the same way as lvextend and lvreduce. See
+\fBlvextend\fP(8) and \fBlvreduce\fP(8) for more information.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
diff --git a/man/lvresize.8_end b/man/lvresize.8_end
new file mode 100644
index 0000000..a336d62
--- /dev/null
+++ b/man/lvresize.8_end
@@ -0,0 +1,6 @@
+.SH EXAMPLES
+
+Extend an LV by 16MB using specific physical extents:
+.br
+.B lvresize \-L+16M vg1/lv1 /dev/sda:0\-1 /dev/sdb:0\-1
+
diff --git a/man/lvresize.8_pregen b/man/lvresize.8_pregen
new file mode 100644
index 0000000..598cde0
--- /dev/null
+++ b/man/lvresize.8_pregen
@@ -0,0 +1,702 @@
+.TH LVRESIZE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvresize \- Resize a logical volume
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvresize\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-l\fP|\fB--extents\fP [\fB+\fP|\fB-\fP]\fINumber\fP[PERCENT]
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-n\fP|\fB--nofsck\fP
+.ad b
+.br
+.ad l
+    \fB--nosync\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+    \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+ \fB-r\fP|\fB--resizefs\fP
+.ad b
+.br
+.ad l
+ \fB-L\fP|\fB--size\fP [\fB+\fP|\fB-\fP]\fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+ \fB-i\fP|\fB--stripes\fP \fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+lvresize resizes an LV in the same way as lvextend and lvreduce. See
+\fBlvextend\fP(8) and \fBlvreduce\fP(8) for more information.
+
+In the usage section below, \fB--size\fP \fISize\fP can be replaced
+with \fB--extents\fP \fINumber\fP.  See both descriptions
+the options section.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+Resize an LV by a specified size.
+.br
+.P
+\fBlvresize\fP \fB-L\fP|\fB--size\fP [\fB+\fP|\fB-\fP]\fISize\fP[m|UNIT] \fILV\fP
+.br
+.RS 4
+.ad l
+[ \fB-l\fP|\fB--extents\fP [\fB+\fP|\fB-\fP]\fINumber\fP[PERCENT] ]
+.ad b
+.br
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT] ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Resize an LV by specified PV extents.
+.br
+.P
+\fBlvresize\fP \fILV\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-r\fP|\fB--resizefs\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Resize a pool metadata SubLV by a specified size.
+.br
+.P
+\fBlvresize\fP \fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT] \fILV\fP\fI_thinpool\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--nofsck\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--stripes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--extents\fP [\fB+\fP|\fB-\fP]\fINumber\fP[PERCENT]
+.br
+Specifies the new size of the LV in logical extents.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+An alternate syntax allows the size to be determined indirectly
+as a percentage of the size of a related VG, LV, or set of PVs. The
+suffix \fB%VG\fP denotes the total size of the VG, the suffix \fB%FREE\fP
+the remaining free space in the VG, and the suffix \fB%PVS\fP the free
+space in the specified PVs.  For a snapshot, the size
+can be expressed as a percentage of the total size of the origin LV
+with the suffix \fB%ORIGIN\fP (\fB100%ORIGIN\fP provides space for
+the whole origin).
+When expressed as a percentage, the size defines an upper limit for the
+number of logical extents in the new LV. The precise number of logical
+extents in the new LV is not determined until the command has completed.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--nofsck\fP
+.br
+Do not perform fsck before resizing filesystem when filesystem
+requires it. You may need to use --force to proceed with
+this option.
+.ad b
+
+.HP
+.ad l
+\fB--nosync\fP
+.br
+Causes the creation of mirror, raid1, raid4, raid5 and raid10 to skip the
+initial synchronization. In case of mirror, raid1 and raid10, any data
+written afterwards will be mirrored, but the original contents will not be
+copied. In case of raid4 and raid5, no parity blocks will be written,
+though any data written afterwards will cause parity blocks to be stored.
+This is useful for skipping a potentially long and resource intensive initial
+sync of an empty mirror/raid1/raid4/raid5 and raid10 LV.
+This option is not valid for raid6, because raid6 relies on proper parity
+(P and Q Syndromes) being created during initial synchronization in order
+to reconstruct proper user date in case of device failures.
+raid0 and raid0_meta do not provide any data copies or parity support
+and thus do not support initial synchronization.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--poolmetadatasize\fP [\fB+\fP]\fISize\fP[m|UNIT]
+.br
+Specifies the new size of the pool metadata LV.
+The plus prefix \fB+\fP can be used, in which case
+the value is added to the current size.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-r\fP|\fB--resizefs\fP
+.br
+Resize underlying filesystem together with the LV using fsadm(8).
+.ad b
+
+.HP
+.ad l
+\fB-L\fP|\fB--size\fP [\fB+\fP|\fB-\fP]\fISize\fP[m|UNIT]
+.br
+Specifies the new size of the LV.
+The --size and --extents options are alternate methods of specifying size.
+The total number of physical extents used will be
+greater when redundant data is needed for RAID levels.
+When the plus \fB+\fP or minus \fB-\fP prefix is used,
+the value is not an absolute size, but is relative and added or subtracted
+from the current size.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--stripes\fP \fINumber\fP
+.br
+Specifies the number of stripes in a striped LV. This is the number of
+PVs (devices) that a striped LV is spread across. Data that
+appears sequential in the LV is spread across multiple devices in units of
+the stripe size (see --stripesize). This does not change existing
+allocated space, but only applies to space being allocated by the command.
+When creating a RAID 4/5/6 LV, this number does not include the extra
+devices that are required for parity. The largest number depends on
+the RAID type (raid0: 64, raid10: 32, raid4/5: 63, raid6: 62), and
+when unspecified, the default depends on the RAID type
+(raid0: 2, raid10: 4, raid4/5: 3, raid6: 5.)
+To stripe a new raid LV across all PVs by default,
+see lvm.conf allocation/raid_stripe_all_devices.
+.ad b
+
+.HP
+.ad l
+\fB-I\fP|\fB--stripesize\fP \fISize\fP[k|UNIT]
+.br
+The amount of data that is written to one device before
+moving to the next in a striped LV.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--type\fP \fBlinear\fP|\fBstriped\fP|\fBsnapshot\fP|\fBmirror\fP|\fBraid\fP|\fBthin\fP|\fBcache\fP|\fBthin-pool\fP|\fBcache-pool\fP
+.br
+The LV type, also known as "segment type" or "segtype".
+See usage descriptions for the specific ways to use these types.
+For more information about redundancy and performance (\fBraid\fP<N>, \fBmirror\fP, \fBstriped\fP, \fBlinear\fP) see \fBlvmraid\fP(7).
+For thin provisioning (\fBthin\fP, \fBthin-pool\fP) see \fBlvmthin\fP(7).
+For performance caching (\fBcache\fP, \fBcache-pool\fP) see \fBlvmcache\fP(7).
+For copy-on-write snapshots (\fBsnapshot\fP) see usage definitions.
+Several commands omit an explicit type option because the type
+is inferred from other options or shortcuts
+(e.g. --stripes, --mirrors, --snapshot, --virtualsize, --thin, --cache).
+Use inferred types with care because it can lead to unexpected results.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+LV followed by _<type> indicates that an LV of the
+given type is required. (raid represents raid<N> type)
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Extend an LV by 16MB using specific physical extents:
+.br
+.B lvresize \-L+16M vg1/lv1 /dev/sda:0\-1 /dev/sdb:0\-1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvs.8.des b/man/lvs.8.des
deleted file mode 100644
index 5f80764..0000000
--- a/man/lvs.8.des
+++ /dev/null
@@ -1 +0,0 @@
-lvs produces formatted output about LVs.
diff --git a/man/lvs.8.end b/man/lvs.8.end
deleted file mode 100644
index ff92148..0000000
--- a/man/lvs.8.end
+++ /dev/null
@@ -1,76 +0,0 @@
-.SH NOTES
-.
-The lv_attr bits are:
-.IP 1 3
-Volume type: (C)ache, (m)irrored, (M)irrored without initial sync, (o)rigin,
-(O)rigin with merging snapshot, (r)aid, (R)aid without initial sync,
-(s)napshot, merging (S)napshot, (p)vmove, (v)irtual,
-mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device,
-under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
-pool m(e)tadata or pool metadata spare.
-.IP 2 3
-Permissions: (w)riteable, (r)ead-only, (R)ead-only activation of non-read-only
-volume
-.IP 3 3
-Allocation policy:  (a)nywhere, (c)ontiguous, (i)nherited, c(l)ing, (n)ormal
-This is capitalised if the volume is currently locked against allocation
-changes, for example during
-.BR pvmove (8).
-.IP 4 3
-fixed (m)inor
-.IP 5 3
-State: (a)ctive, (h)istorical, (s)uspended, (I)nvalid snapshot,
-invalid (S)uspended snapshot, snapshot (m)erge failed,
-suspended snapshot (M)erge failed, mapped (d)evice present without tables,
-mapped device present with (i)nactive table, thin-pool (c)heck needed,
-suspended thin-pool (C)heck needed, (X) unknown
-.IP 6 3
-device (o)pen, (X) unknown
-.IP 7 3
-Target type: (C)ache, (m)irror, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual.
-This groups logical volumes related to the same kernel target together.  So,
-for example, mirror images, mirror logs as well as mirrors themselves appear as
-(m) if they use the original device-mapper mirror kernel driver; whereas the raid
-equivalents using the md raid kernel driver all appear as (r).
-Snapshots using the original device-mapper driver appear as (s); whereas
-snapshots of thin volumes using the new thin provisioning driver appear as (t).
-.IP 8 3
-Newly-allocated data blocks are overwritten with blocks of (z)eroes before use.
-.IP 9 3
-Volume Health, where there are currently three groups of attributes identified:
-.IP
-Common ones for all Logical Volumes: (p)artial, (X) unknown.
-.br
-(p)artial signifies that one or more of the Physical Volumes this Logical
-Volume uses is missing from the system. (X) unknown signifies the status
-is unknown.
-.IP
-Related to RAID Logical Volumes: (r)efresh needed, (m)ismatches exist, (w)ritemostly.
-.br
-(r)efresh signifies that one or more of the Physical Volumes this RAID Logical
-Volume uses had suffered a write error. The write error could be due to a
-temporary failure of that Physical Volume or an indication that it is failing.
-The device should be refreshed or replaced. (m)ismatches signifies that the
-RAID logical volume has portions of the array that are not coherent.
-Inconsistencies are detected by initiating a "check" on a RAID logical volume.
-(The scrubbing operations, "check" and "repair", can be performed on a RAID
-logical volume via the 'lvchange' command.)  (w)ritemostly signifies the
-devices in a RAID 1 logical volume that have been marked write-mostly.
-(R)emove after reshape signifies freed striped raid images to be removed.
-.IP
-Related to Thin pool Logical Volumes: (F)ailed, out of (D)ata space,
-(M)etadata read only.
-.br
-(F)ailed is set if thin pool encounters serious failures and hence no further I/O
-is permitted at all. The out of (D)ata space is set if thin pool has run out of
-data space. (M)etadata read only signifies that thin pool encounters certain
-types of failures but it's still possible to do reads at least,
-but no metadata changes are allowed.
-.IP
-Related to Thin Logical Volumes: (F)ailed.
-.br
-(F)ailed is set when related thin pool enters Failed state and no further I/O
-is permitted at all.
-.IP 10 3
-s(k)ip activation: this volume is flagged to be skipped during activation.
-
diff --git a/man/lvs.8_des b/man/lvs.8_des
new file mode 100644
index 0000000..5f80764
--- /dev/null
+++ b/man/lvs.8_des
@@ -0,0 +1 @@
+lvs produces formatted output about LVs.
diff --git a/man/lvs.8_end b/man/lvs.8_end
new file mode 100644
index 0000000..ff92148
--- /dev/null
+++ b/man/lvs.8_end
@@ -0,0 +1,76 @@
+.SH NOTES
+.
+The lv_attr bits are:
+.IP 1 3
+Volume type: (C)ache, (m)irrored, (M)irrored without initial sync, (o)rigin,
+(O)rigin with merging snapshot, (r)aid, (R)aid without initial sync,
+(s)napshot, merging (S)napshot, (p)vmove, (v)irtual,
+mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device,
+under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
+pool m(e)tadata or pool metadata spare.
+.IP 2 3
+Permissions: (w)riteable, (r)ead-only, (R)ead-only activation of non-read-only
+volume
+.IP 3 3
+Allocation policy:  (a)nywhere, (c)ontiguous, (i)nherited, c(l)ing, (n)ormal
+This is capitalised if the volume is currently locked against allocation
+changes, for example during
+.BR pvmove (8).
+.IP 4 3
+fixed (m)inor
+.IP 5 3
+State: (a)ctive, (h)istorical, (s)uspended, (I)nvalid snapshot,
+invalid (S)uspended snapshot, snapshot (m)erge failed,
+suspended snapshot (M)erge failed, mapped (d)evice present without tables,
+mapped device present with (i)nactive table, thin-pool (c)heck needed,
+suspended thin-pool (C)heck needed, (X) unknown
+.IP 6 3
+device (o)pen, (X) unknown
+.IP 7 3
+Target type: (C)ache, (m)irror, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual.
+This groups logical volumes related to the same kernel target together.  So,
+for example, mirror images, mirror logs as well as mirrors themselves appear as
+(m) if they use the original device-mapper mirror kernel driver; whereas the raid
+equivalents using the md raid kernel driver all appear as (r).
+Snapshots using the original device-mapper driver appear as (s); whereas
+snapshots of thin volumes using the new thin provisioning driver appear as (t).
+.IP 8 3
+Newly-allocated data blocks are overwritten with blocks of (z)eroes before use.
+.IP 9 3
+Volume Health, where there are currently three groups of attributes identified:
+.IP
+Common ones for all Logical Volumes: (p)artial, (X) unknown.
+.br
+(p)artial signifies that one or more of the Physical Volumes this Logical
+Volume uses is missing from the system. (X) unknown signifies the status
+is unknown.
+.IP
+Related to RAID Logical Volumes: (r)efresh needed, (m)ismatches exist, (w)ritemostly.
+.br
+(r)efresh signifies that one or more of the Physical Volumes this RAID Logical
+Volume uses had suffered a write error. The write error could be due to a
+temporary failure of that Physical Volume or an indication that it is failing.
+The device should be refreshed or replaced. (m)ismatches signifies that the
+RAID logical volume has portions of the array that are not coherent.
+Inconsistencies are detected by initiating a "check" on a RAID logical volume.
+(The scrubbing operations, "check" and "repair", can be performed on a RAID
+logical volume via the 'lvchange' command.)  (w)ritemostly signifies the
+devices in a RAID 1 logical volume that have been marked write-mostly.
+(R)emove after reshape signifies freed striped raid images to be removed.
+.IP
+Related to Thin pool Logical Volumes: (F)ailed, out of (D)ata space,
+(M)etadata read only.
+.br
+(F)ailed is set if thin pool encounters serious failures and hence no further I/O
+is permitted at all. The out of (D)ata space is set if thin pool has run out of
+data space. (M)etadata read only signifies that thin pool encounters certain
+types of failures but it's still possible to do reads at least,
+but no metadata changes are allowed.
+.IP
+Related to Thin Logical Volumes: (F)ailed.
+.br
+(F)ailed is set when related thin pool enters Failed state and no further I/O
+is permitted at all.
+.IP 10 3
+s(k)ip activation: this volume is flagged to be skipped during activation.
+
diff --git a/man/lvs.8_pregen b/man/lvs.8_pregen
new file mode 100644
index 0000000..2abe377
--- /dev/null
+++ b/man/lvs.8_pregen
@@ -0,0 +1,733 @@
+.TH LVS 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvs \- Display information about logical volumes
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvs\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvs produces formatted output about LVs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvs\fP
+.br
+.RS 4
+.ad l
+[ \fB-H\fP|\fB--history\fP ]
+.ad b
+.br
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--segments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nameprefixes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nolocking\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--rows\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--trustcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unquoted\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fILV\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Show information about internal LVs.
+These are components of normal LVs, such as mirrors,
+which are not independently accessible, e.g. not mountable.
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-H\fP|\fB--history\fP
+.br
+Include historical LVs in the output.
+(This has no effect unless LVs were removed while
+lvm.conf metadata/record_lvs_history was enabled.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--nameprefixes\fP
+.br
+Add an "LVM2_" prefix plus the field name to the output. Useful
+with --noheadings to produce a list of field=value pairs that can
+be used to set environment variables (for example, in udev rules).
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nolocking\fP
+.br
+Disable locking.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--rows\fP
+.br
+Output columns as rows.
+.ad b
+
+.HP
+.ad l
+\fB--segments\fP
+.br
+Use default columns that emphasize segment information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--trustcache\fP
+.br
+Avoids certain device scanning during command processing. Do not use.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB--unquoted\fP
+.br
+When used with --nameprefixes, output values in the field=value
+pairs are not quoted.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+.
+The lv_attr bits are:
+.IP 1 3
+Volume type: (C)ache, (m)irrored, (M)irrored without initial sync, (o)rigin,
+(O)rigin with merging snapshot, (r)aid, (R)aid without initial sync,
+(s)napshot, merging (S)napshot, (p)vmove, (v)irtual,
+mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device,
+under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
+pool m(e)tadata or pool metadata spare.
+.IP 2 3
+Permissions: (w)riteable, (r)ead-only, (R)ead-only activation of non-read-only
+volume
+.IP 3 3
+Allocation policy:  (a)nywhere, (c)ontiguous, (i)nherited, c(l)ing, (n)ormal
+This is capitalised if the volume is currently locked against allocation
+changes, for example during
+.BR pvmove (8).
+.IP 4 3
+fixed (m)inor
+.IP 5 3
+State: (a)ctive, (h)istorical, (s)uspended, (I)nvalid snapshot,
+invalid (S)uspended snapshot, snapshot (m)erge failed,
+suspended snapshot (M)erge failed, mapped (d)evice present without tables,
+mapped device present with (i)nactive table, thin-pool (c)heck needed,
+suspended thin-pool (C)heck needed, (X) unknown
+.IP 6 3
+device (o)pen, (X) unknown
+.IP 7 3
+Target type: (C)ache, (m)irror, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual.
+This groups logical volumes related to the same kernel target together.  So,
+for example, mirror images, mirror logs as well as mirrors themselves appear as
+(m) if they use the original device-mapper mirror kernel driver; whereas the raid
+equivalents using the md raid kernel driver all appear as (r).
+Snapshots using the original device-mapper driver appear as (s); whereas
+snapshots of thin volumes using the new thin provisioning driver appear as (t).
+.IP 8 3
+Newly-allocated data blocks are overwritten with blocks of (z)eroes before use.
+.IP 9 3
+Volume Health, where there are currently three groups of attributes identified:
+.IP
+Common ones for all Logical Volumes: (p)artial, (X) unknown.
+.br
+(p)artial signifies that one or more of the Physical Volumes this Logical
+Volume uses is missing from the system. (X) unknown signifies the status
+is unknown.
+.IP
+Related to RAID Logical Volumes: (r)efresh needed, (m)ismatches exist, (w)ritemostly.
+.br
+(r)efresh signifies that one or more of the Physical Volumes this RAID Logical
+Volume uses had suffered a write error. The write error could be due to a
+temporary failure of that Physical Volume or an indication that it is failing.
+The device should be refreshed or replaced. (m)ismatches signifies that the
+RAID logical volume has portions of the array that are not coherent.
+Inconsistencies are detected by initiating a "check" on a RAID logical volume.
+(The scrubbing operations, "check" and "repair", can be performed on a RAID
+logical volume via the 'lvchange' command.)  (w)ritemostly signifies the
+devices in a RAID 1 logical volume that have been marked write-mostly.
+(R)emove after reshape signifies freed striped raid images to be removed.
+.IP
+Related to Thin pool Logical Volumes: (F)ailed, out of (D)ata space,
+(M)etadata read only.
+.br
+(F)ailed is set if thin pool encounters serious failures and hence no further I/O
+is permitted at all. The out of (D)ata space is set if thin pool has run out of
+data space. (M)etadata read only signifies that thin pool encounters certain
+types of failures but it's still possible to do reads at least,
+but no metadata changes are allowed.
+.IP
+Related to Thin Logical Volumes: (F)ailed.
+.br
+(F)ailed is set when related thin pool enters Failed state and no further I/O
+is permitted at all.
+.IP 10 3
+s(k)ip activation: this volume is flagged to be skipped during activation.
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/lvscan.8.des b/man/lvscan.8.des
deleted file mode 100644
index e30eb58..0000000
--- a/man/lvscan.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-lvscan scans all VGs or all supported LVM block devices in the system for
-LVs. The output consists of one line for each LV indicating whether or not
-it is active, a snapshot or origin, the size of the device and its
-allocation policy. Use \fBlvs\fP(8) or \fBlvdisplay\fP(8) to obtain more
-comprehensive information about LVs.
diff --git a/man/lvscan.8_des b/man/lvscan.8_des
new file mode 100644
index 0000000..e30eb58
--- /dev/null
+++ b/man/lvscan.8_des
@@ -0,0 +1,5 @@
+lvscan scans all VGs or all supported LVM block devices in the system for
+LVs. The output consists of one line for each LV indicating whether or not
+it is active, a snapshot or origin, the size of the device and its
+allocation policy. Use \fBlvs\fP(8) or \fBlvdisplay\fP(8) to obtain more
+comprehensive information about LVs.
diff --git a/man/lvscan.8_end b/man/lvscan.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/lvscan.8_pregen b/man/lvscan.8_pregen
new file mode 100644
index 0000000..421b6c5
--- /dev/null
+++ b/man/lvscan.8_pregen
@@ -0,0 +1,399 @@
+.TH LVSCAN 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+lvscan \- List all logical volumes in all volume groups
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBlvscan\fP \fIoption_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+lvscan scans all VGs or all supported LVM block devices in the system for
+LVs. The output consists of one line for each LV indicating whether or not
+it is active, a snapshot or origin, the size of the device and its
+allocation policy. Use \fBlvs\fP(8) or \fBlvdisplay\fP(8) to obtain more
+comprehensive information about LVs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBlvscan\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+\fBlvscan\fP \fB--cache\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fILV\fP ... ]
+.RE
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-b\fP|\fB--blockdevice\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Show information about internal LVs.
+These are components of normal LVs, such as mirrors,
+which are not independently accessible, e.g. not mountable.
+.ad b
+
+.HP
+.ad l
+\fB-b\fP|\fB--blockdevice\fP
+.br
+No longer used.
+.ad b
+
+.HP
+.ad l
+\fB--cache\fP
+.br
+Scan the devices used by an LV and send the metadata to lvmetad.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvchange.8.des b/man/pvchange.8.des
deleted file mode 100644
index 802850f..0000000
--- a/man/pvchange.8.des
+++ /dev/null
@@ -1 +0,0 @@
-pvchange changes PV attributes in the VG.
diff --git a/man/pvchange.8.end b/man/pvchange.8.end
deleted file mode 100644
index a524d07..0000000
--- a/man/pvchange.8.end
+++ /dev/null
@@ -1,6 +0,0 @@
-.SH EXAMPLES
-
-Disallow the allocation of physical extents on a PV (e.g. because of
-disk errors, or because it will be removed after freeing it).
-.br
-.B pvchange \-x n /dev/sdk1
diff --git a/man/pvchange.8_des b/man/pvchange.8_des
new file mode 100644
index 0000000..802850f
--- /dev/null
+++ b/man/pvchange.8_des
@@ -0,0 +1 @@
+pvchange changes PV attributes in the VG.
diff --git a/man/pvchange.8_end b/man/pvchange.8_end
new file mode 100644
index 0000000..a524d07
--- /dev/null
+++ b/man/pvchange.8_end
@@ -0,0 +1,6 @@
+.SH EXAMPLES
+
+Disallow the allocation of physical extents on a PV (e.g. because of
+disk errors, or because it will be removed after freeing it).
+.br
+.B pvchange \-x n /dev/sdk1
diff --git a/man/pvchange.8_pregen b/man/pvchange.8_pregen
new file mode 100644
index 0000000..1b72672
--- /dev/null
+++ b/man/pvchange.8_pregen
@@ -0,0 +1,487 @@
+.TH PVCHANGE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvchange \- Change attributes of physical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvchange\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvchange changes PV attributes in the VG.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Change properties of all PVs.
+.br
+.P
+\fBpvchange\fP
+.RS 4
+( \fB-x\fP|\fB--allocatable\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-u\fP|\fB--uuid\fP,
+.ad b
+.br
+.ad l
+  \fB-a\fP|\fB--all\fP,
+.ad b
+.br
+.ad l
+     \fB--addtag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--deltag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--metadataignore\fP \fBy\fP|\fBn\fP )
+.RE
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Change properties of specified PVs.
+.br
+.P
+\fBpvchange\fP
+.RS 4
+( \fB-x\fP|\fB--allocatable\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-u\fP|\fB--uuid\fP,
+.ad b
+.br
+.ad l
+     \fB--addtag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--deltag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--metadataignore\fP \fBy\fP|\fBn\fP )
+.RE
+.RS 4
+ \fIPV\fP|\fISelect\fP ...
+.RE
+.br
+.RS 4
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-u\fP|\fB--uuid\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--addtag\fP \fITag\fP
+.br
+Adds a tag to a PV, VG or LV. This option can be repeated to add
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB-x\fP|\fB--allocatable\fP \fBy\fP|\fBn\fP
+.br
+Enable or disable allocation of physical extents on this PV.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--deltag\fP \fITag\fP
+.br
+Deletes a tag from a PV, VG or LV. This option can be repeated to delete
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--metadataignore\fP \fBy\fP|\fBn\fP
+.br
+Specifies the metadataignore property of a PV.
+If yes, metadata areas on the PV are ignored, and lvm will
+not store metadata in the metadata areas of the PV.
+If no, lvm will store metadata on the PV.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-u\fP|\fB--uuid\fP
+.br
+Generate new random UUID for specified PVs.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Disallow the allocation of physical extents on a PV (e.g. because of
+disk errors, or because it will be removed after freeing it).
+.br
+.B pvchange \-x n /dev/sdk1
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvck.8.des b/man/pvck.8.des
deleted file mode 100644
index 0a32657..0000000
--- a/man/pvck.8.des
+++ /dev/null
@@ -1 +0,0 @@
-pvck checks the LVM metadata for consistency on PVs.
diff --git a/man/pvck.8.end b/man/pvck.8.end
deleted file mode 100644
index 67af238..0000000
--- a/man/pvck.8.end
+++ /dev/null
@@ -1,8 +0,0 @@
-.SH EXAMPLES
-
-If the partition table is corrupted or lost on /dev/sda, and you suspect
-there was an LVM partition at approximately 100 MiB, then this
-area of the disk can be scanned using the \fB\-\-labelsector\fP
-parameter with a value of 204800 (100 * 1024 * 1024 / 512 = 204800).
-.br
-.B pvck \-\-labelsector 204800 /dev/sda
diff --git a/man/pvck.8_des b/man/pvck.8_des
new file mode 100644
index 0000000..0a32657
--- /dev/null
+++ b/man/pvck.8_des
@@ -0,0 +1 @@
+pvck checks the LVM metadata for consistency on PVs.
diff --git a/man/pvck.8_end b/man/pvck.8_end
new file mode 100644
index 0000000..67af238
--- /dev/null
+++ b/man/pvck.8_end
@@ -0,0 +1,8 @@
+.SH EXAMPLES
+
+If the partition table is corrupted or lost on /dev/sda, and you suspect
+there was an LVM partition at approximately 100 MiB, then this
+area of the disk can be scanned using the \fB\-\-labelsector\fP
+parameter with a value of 204800 (100 * 1024 * 1024 / 512 = 204800).
+.br
+.B pvck \-\-labelsector 204800 /dev/sda
diff --git a/man/pvck.8_pregen b/man/pvck.8_pregen
new file mode 100644
index 0000000..a420953
--- /dev/null
+++ b/man/pvck.8_pregen
@@ -0,0 +1,311 @@
+.TH PVCK 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvck \- Check the consistency of physical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvck\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvck checks the LVM metadata for consistency on PVs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvck\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[    \fB--labelsector\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--labelsector\fP \fINumber\fP
+.br
+By default the PV is labelled with an LVM2 identifier in its second
+sector (sector 1). This lets you use a different sector near the
+start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
+in the source). Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+If the partition table is corrupted or lost on /dev/sda, and you suspect
+there was an LVM partition at approximately 100 MiB, then this
+area of the disk can be scanned using the \fB\-\-labelsector\fP
+parameter with a value of 204800 (100 * 1024 * 1024 / 512 = 204800).
+.br
+.B pvck \-\-labelsector 204800 /dev/sda
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvcreate.8.des b/man/pvcreate.8.des
deleted file mode 100644
index 1b00e9e..0000000
--- a/man/pvcreate.8.des
+++ /dev/null
@@ -1,21 +0,0 @@
-pvcreate initializes a PV so that it is recognized as belonging to LVM,
-and allows the PV to be used in a VG. A PV can be a disk partition, whole
-disk, meta device, or loopback file.
-
-For DOS disk partitions, the partition id should be set to 0x8e using
-.BR fdisk (8),
-.BR cfdisk (8),
-or a equivalent. For GUID Partition Table (GPT), the id is
-E6D6D379-F507-44C2-A23C-238F2A3DF928. For
-whole disk devices only
-the partition table must be erased, which will effectively destroy all
-data on that disk. This can be done by zeroing the first sector with:
-
-.BI "dd if=/dev/zero of=" PhysicalVolume " bs=512 count=1"
-
-Use \fBvgcreate\fP(8) to create a new VG on the PV, or \fBvgextend\fP(8)
-to add the PV to existing VG.
-
-The force option will create a PV without confirmation.  Repeating the
-force option (\fB-ff\fP) will forcibly create a PV, overriding checks that
-normally prevent it, e.g. if the PV is already in a VG.
diff --git a/man/pvcreate.8.end b/man/pvcreate.8.end
deleted file mode 100644
index b1b0f3e..0000000
--- a/man/pvcreate.8.end
+++ /dev/null
@@ -1,13 +0,0 @@
-.SH EXAMPLES
-
-Initialize a partition and a full device.
-.br
-.B pvcreate /dev/sdc4 /dev/sde
-
-If a device is a 4KiB sector drive that compensates for windows
-partitioning (sector 7 is the lowest aligned logical block, the 4KiB
-sectors start at LBA -1, and consequently sector 63 is aligned on a 4KiB
-boundary) manually account for this when initializing for use by LVM.
-.br
-.B pvcreate \-\-dataalignmentoffset 7s /dev/sdb
-
diff --git a/man/pvcreate.8_des b/man/pvcreate.8_des
new file mode 100644
index 0000000..1b00e9e
--- /dev/null
+++ b/man/pvcreate.8_des
@@ -0,0 +1,21 @@
+pvcreate initializes a PV so that it is recognized as belonging to LVM,
+and allows the PV to be used in a VG. A PV can be a disk partition, whole
+disk, meta device, or loopback file.
+
+For DOS disk partitions, the partition id should be set to 0x8e using
+.BR fdisk (8),
+.BR cfdisk (8),
+or a equivalent. For GUID Partition Table (GPT), the id is
+E6D6D379-F507-44C2-A23C-238F2A3DF928. For
+whole disk devices only
+the partition table must be erased, which will effectively destroy all
+data on that disk. This can be done by zeroing the first sector with:
+
+.BI "dd if=/dev/zero of=" PhysicalVolume " bs=512 count=1"
+
+Use \fBvgcreate\fP(8) to create a new VG on the PV, or \fBvgextend\fP(8)
+to add the PV to existing VG.
+
+The force option will create a PV without confirmation.  Repeating the
+force option (\fB-ff\fP) will forcibly create a PV, overriding checks that
+normally prevent it, e.g. if the PV is already in a VG.
diff --git a/man/pvcreate.8_end b/man/pvcreate.8_end
new file mode 100644
index 0000000..b1b0f3e
--- /dev/null
+++ b/man/pvcreate.8_end
@@ -0,0 +1,13 @@
+.SH EXAMPLES
+
+Initialize a partition and a full device.
+.br
+.B pvcreate /dev/sdc4 /dev/sde
+
+If a device is a 4KiB sector drive that compensates for windows
+partitioning (sector 7 is the lowest aligned logical block, the 4KiB
+sectors start at LBA -1, and consequently sector 63 is aligned on a 4KiB
+boundary) manually account for this when initializing for use by LVM.
+.br
+.B pvcreate \-\-dataalignmentoffset 7s /dev/sdb
+
diff --git a/man/pvcreate.8_pregen b/man/pvcreate.8_pregen
new file mode 100644
index 0000000..0cf7549
--- /dev/null
+++ b/man/pvcreate.8_pregen
@@ -0,0 +1,539 @@
+.TH PVCREATE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvcreate \- Initialize physical volume(s) for use by LVM
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvcreate\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvcreate initializes a PV so that it is recognized as belonging to LVM,
+and allows the PV to be used in a VG. A PV can be a disk partition, whole
+disk, meta device, or loopback file.
+
+For DOS disk partitions, the partition id should be set to 0x8e using
+.BR fdisk (8),
+.BR cfdisk (8),
+or a equivalent. For GUID Partition Table (GPT), the id is
+E6D6D379-F507-44C2-A23C-238F2A3DF928. For
+whole disk devices only
+the partition table must be erased, which will effectively destroy all
+data on that disk. This can be done by zeroing the first sector with:
+
+.BI "dd if=/dev/zero of=" PhysicalVolume " bs=512 count=1"
+
+Use \fBvgcreate\fP(8) to create a new VG on the PV, or \fBvgextend\fP(8)
+to add the PV to existing VG.
+
+The force option will create a PV without confirmation.  Repeating the
+force option (\fB-ff\fP) will forcibly create a PV, overriding checks that
+normally prevent it, e.g. if the PV is already in a VG.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvcreate\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[ \fB-u\fP|\fB--uuid\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignment\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignmentoffset\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--bootloaderareasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--labelsector\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--[pv]metadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--metadataignore\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--norestorefile\fP ]
+.ad b
+.br
+.ad l
+[    \fB--setphysicalvolumesize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--restorefile\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--bootloaderareasize\fP \fISize\fP[m|UNIT]
+.br
+Create a separate bootloader area of specified size besides PV's data
+area. The bootloader area is an area of reserved space on the PV from
+which LVM will not allocate any extents and it's kept untouched. This is
+primarily aimed for use with bootloaders to embed their own data or metadata.
+The start of the bootloader area is always aligned, see also --dataalignment
+and --dataalignmentoffset. The bootloader area size may eventually
+end up increased due to the alignment, but it's never less than the
+size that is requested. To see the bootloader area start and size of
+an existing PV use pvs -o +pv_ba_start,pv_ba_size.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignment\fP \fISize\fP[k|UNIT]
+.br
+Align the start of the data to a multiple of this number.
+Also specify an appropriate Physical Extent size when creating a VG.
+To see the location of the first Physical Extent of an existing PV,
+use pvs -o +pe_start. In addition, it may be shifted by an alignment offset.
+See lvm.conf/data_alignment_offset_detection and --dataalignmentoffset.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignmentoffset\fP \fISize\fP[k|UNIT]
+.br
+Shift the start of the data area by this additional offset.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--labelsector\fP \fINumber\fP
+.br
+By default the PV is labelled with an LVM2 identifier in its second
+sector (sector 1). This lets you use a different sector near the
+start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
+in the source). Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--metadataignore\fP \fBy\fP|\fBn\fP
+.br
+Specifies the metadataignore property of a PV.
+If yes, metadata areas on the PV are ignored, and lvm will
+not store metadata in the metadata areas of the PV.
+If no, lvm will store metadata on the PV.
+.ad b
+
+.HP
+.ad l
+\fB--metadatasize\fP \fISize\fP[m|UNIT]
+.br
+The approximate amount of space used for each VG metadata area.
+The size may be rounded.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB--norestorefile\fP
+.br
+In conjunction with --uuid, this allows a uuid to be specified
+without also requiring that a backup of the metadata be provided.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB--[pv]metadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.br
+The number of metadata areas to set aside on a PV for storing VG metadata.
+When 2, one copy of the VG metadata is stored at the front of the PV
+and a second copy is stored at the end.
+When 1, one copy of the VG metadata is stored at the front of the PV
+(starting in the 5th sector).
+When 0, no copies of the VG metadata are stored on the given PV.
+This may be useful in VGs containing many PVs (this places limitations
+on the ability to use vgsplit later.)
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--restorefile\fP \fIString\fP
+.br
+In conjunction with --uuid, this reads the file (produced by
+vgcfgbackup), extracts the location and size of the data on the PV,
+and ensures that the metadata produced by the program is consistent
+with the contents of the file, i.e. the physical extents will be in
+the same place and not be overwritten by new metadata. This provides
+a mechanism to upgrade the metadata format or to add/remove metadata
+areas. Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--setphysicalvolumesize\fP \fISize\fP[m|UNIT]
+.br
+Overrides the automatically detected size of the PV.
+Use with care, or prior to reducing the physical size of the device.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-u\fP|\fB--uuid\fP \fIString\fP
+.br
+Specify a UUID for the device.
+Without this option, a random UUID is generated.
+This option is needed before restoring a backup of LVM metadata
+onto a replacement device; see vgcfgrestore(8). As such, use of
+--restorefile is compulsory unless the --norestorefile is used.
+All PVs must have unique UUIDs, and LVM will prevent certain operations
+if multiple devices are seen with the same UUID.
+See vgimportclone(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+Controls if the first 4 sectors (2048 bytes) of the device are wiped.
+The default is to wipe these sectors unless either or both of
+--restorefile or --uuid are specified.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Initialize a partition and a full device.
+.br
+.B pvcreate /dev/sdc4 /dev/sde
+
+If a device is a 4KiB sector drive that compensates for windows
+partitioning (sector 7 is the lowest aligned logical block, the 4KiB
+sectors start at LBA -1, and consequently sector 63 is aligned on a 4KiB
+boundary) manually account for this when initializing for use by LVM.
+.br
+.B pvcreate \-\-dataalignmentoffset 7s /dev/sdb
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvdisplay.8.des b/man/pvdisplay.8.des
deleted file mode 100644
index 74d57ca..0000000
--- a/man/pvdisplay.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-pvdisplay shows the attributes of PVs, like size, physical extent size,
-space used for the VG descriptor area, etc.
-
-\fBpvs\fP(8) is a preferred alternative that shows the same information
-and more, using a more compact and configurable output format.
diff --git a/man/pvdisplay.8_des b/man/pvdisplay.8_des
new file mode 100644
index 0000000..74d57ca
--- /dev/null
+++ b/man/pvdisplay.8_des
@@ -0,0 +1,5 @@
+pvdisplay shows the attributes of PVs, like size, physical extent size,
+space used for the VG descriptor area, etc.
+
+\fBpvs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
diff --git a/man/pvdisplay.8_end b/man/pvdisplay.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/pvdisplay.8_pregen b/man/pvdisplay.8_pregen
new file mode 100644
index 0000000..9e793b9
--- /dev/null
+++ b/man/pvdisplay.8_pregen
@@ -0,0 +1,610 @@
+.TH PVDISPLAY 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvdisplay \- Display various attributes of physical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvdisplay\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvdisplay shows the attributes of PVs, like size, physical extent size,
+space used for the VG descriptor area, etc.
+
+\fBpvs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvdisplay\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--colon\fP ]
+.ad b
+.br
+.ad l
+[ \fB-C\fP|\fB--columns\fP ]
+.ad b
+.br
+.ad l
+[ \fB-m\fP|\fB--maps\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--short\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Show information about devices that have not been initialized
+by LVM, i.e. they are not PVs.
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--colon\fP
+.br
+Generate colon separated output for easier parsing in scripts or programs.
+Also see vgs(8) which provides considerably more control over the output.
+.ad b
+
+.HP
+.ad l
+\fB-C\fP|\fB--columns\fP
+.br
+Display output in columns, the equivalent of vgs(8).
+Options listed are the same as options given in vgs(8).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-m\fP|\fB--maps\fP
+.br
+Display the mapping of physical extents to LVs and logical extents.
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--short\fP
+.br
+Only display the size of the given PVs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvmove.8.des b/man/pvmove.8.des
deleted file mode 100644
index c003c5e..0000000
--- a/man/pvmove.8.des
+++ /dev/null
@@ -1,16 +0,0 @@
-pvmove moves the allocated physical extents (PEs) on a source PV to one or
-more destination PVs.  You can optionally specify a source LV in which
-case only extents used by that LV will be moved to free (or specified)
-extents on the destination PV. If no destination PV is specified, the
-normal allocation rules for the VG are used.
-
-If pvmove is interrupted for any reason (e.g. the machine crashes) then
-run pvmove again without any PV arguments to restart any operations that
-were in progress from the last checkpoint. Alternatively, use the abort
-option at any time to abort the operation. The resulting location of LVs
-after an abort depends on whether the atomic option was used.
-
-More than one pvmove can run concurrently if they are moving data from
-different source PVs, but additional pvmoves will ignore any LVs already
-in the process of being changed, so some data might not get moved.
-
diff --git a/man/pvmove.8.end b/man/pvmove.8.end
deleted file mode 100644
index 906606d..0000000
--- a/man/pvmove.8.end
+++ /dev/null
@@ -1,93 +0,0 @@
-.SH NOTES
-
-pvmove works as follows:
-
-1. A temporary 'pvmove' LV is created to store details of all the data
-movements required.
-
-2. Every LV in the VG is searched for contiguous data that need moving
-according to the command line arguments.
-For each piece of data found, a new segment is added to the end of the
-pvmove LV.
-This segment takes the form of a temporary mirror to copy the data
-from the original location to a newly allocated location.
-The original LV is updated to use the new temporary mirror segment
-in the pvmove LV instead of accessing the data directly.
-
-3. The VG metadata is updated on disk.
-
-4. The first segment of the pvmove LV is activated and starts to mirror
-the first part of the data.  Only one segment is mirrored at once as this
-is usually more efficient.
-
-5. A daemon repeatedly checks progress at the specified time interval.
-When it detects that the first temporary mirror is in sync, it breaks that
-mirror so that only the new location for that data gets used and writes a
-checkpoint into the VG metadata on disk.  Then it activates the mirror for
-the next segment of the pvmove LV.
-
-6. When there are no more segments left to be mirrored, the temporary LV
-is removed and the VG metadata is updated so that the LVs reflect the new
-data locations.
-
-Note that this new process cannot support the original LVM1
-type of on-disk metadata.  Metadata can be converted using
-\fBvgconvert\fP(8).
-
-If the \fB\-\-atomic\fP option is used, a slightly different approach is
-used for the move.  Again, a temporary 'pvmove' LV is created to store the
-details of all the data movements required.  This temporary LV contains
-all the segments of the various LVs that need to be moved.  However, in
-this case, an identical LV is allocated that contains the same number of
-segments and a mirror is created to copy the contents from the first
-temporary LV to the second.  After a complete copy is made, the temporary
-LVs are removed, leaving behind the segments on the destination PV.  If an
-abort is issued during the move, all LVs being moved will remain on the
-source PV.
-
-.SH EXAMPLES
-
-Move all physical extents that are used by simple LVs on the specified PV to
-free physical extents elsewhere in the VG.
-.br
-.B pvmove /dev/sdb1
-
-Use a specific destination PV when moving physical extents.
-.br
-.B pvmove /dev/sdb1 /dev/sdc1
-
-Move extents belonging to a single LV.
-.br
-.B pvmove \-n lvol1 /dev/sdb1 /dev/sdc1
-
-Rather than moving the contents of an entire device, it is possible to
-move a range of physical extents, for example numbers 1000 to 1999
-inclusive on the specified PV.
-.br
-.B pvmove /dev/sdb1:1000\-1999
-
-A range of physical extents to move can be specified as start+length. For
-example, starting from PE 1000. (Counting starts from 0, so this refers to the
-1001st to the 2000th PE inclusive.)
-.br
-.B pvmove /dev/sdb1:1000+1000
-
-Move a range of physical extents to a specific PV (which must have
-sufficient free extents).
-.br
-.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1
-
-Move a range of physical extents to specific new extents on a new PV.
-.br
-.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1:0\-999
-
-If the source and destination are on the same disk, the
-\fBanywhere\fP allocation policy is needed.
-.br
-.B pvmove \-\-alloc anywhere /dev/sdb1:1000\-1999 /dev/sdb1:0\-999
-
-The part of a specific LV present within in a range of physical
-extents can also be picked out and moved.
-.br
-.B pvmove \-n lvol1 /dev/sdb1:1000\-1999 /dev/sdc1
-
diff --git a/man/pvmove.8_des b/man/pvmove.8_des
new file mode 100644
index 0000000..c003c5e
--- /dev/null
+++ b/man/pvmove.8_des
@@ -0,0 +1,16 @@
+pvmove moves the allocated physical extents (PEs) on a source PV to one or
+more destination PVs.  You can optionally specify a source LV in which
+case only extents used by that LV will be moved to free (or specified)
+extents on the destination PV. If no destination PV is specified, the
+normal allocation rules for the VG are used.
+
+If pvmove is interrupted for any reason (e.g. the machine crashes) then
+run pvmove again without any PV arguments to restart any operations that
+were in progress from the last checkpoint. Alternatively, use the abort
+option at any time to abort the operation. The resulting location of LVs
+after an abort depends on whether the atomic option was used.
+
+More than one pvmove can run concurrently if they are moving data from
+different source PVs, but additional pvmoves will ignore any LVs already
+in the process of being changed, so some data might not get moved.
+
diff --git a/man/pvmove.8_end b/man/pvmove.8_end
new file mode 100644
index 0000000..906606d
--- /dev/null
+++ b/man/pvmove.8_end
@@ -0,0 +1,93 @@
+.SH NOTES
+
+pvmove works as follows:
+
+1. A temporary 'pvmove' LV is created to store details of all the data
+movements required.
+
+2. Every LV in the VG is searched for contiguous data that need moving
+according to the command line arguments.
+For each piece of data found, a new segment is added to the end of the
+pvmove LV.
+This segment takes the form of a temporary mirror to copy the data
+from the original location to a newly allocated location.
+The original LV is updated to use the new temporary mirror segment
+in the pvmove LV instead of accessing the data directly.
+
+3. The VG metadata is updated on disk.
+
+4. The first segment of the pvmove LV is activated and starts to mirror
+the first part of the data.  Only one segment is mirrored at once as this
+is usually more efficient.
+
+5. A daemon repeatedly checks progress at the specified time interval.
+When it detects that the first temporary mirror is in sync, it breaks that
+mirror so that only the new location for that data gets used and writes a
+checkpoint into the VG metadata on disk.  Then it activates the mirror for
+the next segment of the pvmove LV.
+
+6. When there are no more segments left to be mirrored, the temporary LV
+is removed and the VG metadata is updated so that the LVs reflect the new
+data locations.
+
+Note that this new process cannot support the original LVM1
+type of on-disk metadata.  Metadata can be converted using
+\fBvgconvert\fP(8).
+
+If the \fB\-\-atomic\fP option is used, a slightly different approach is
+used for the move.  Again, a temporary 'pvmove' LV is created to store the
+details of all the data movements required.  This temporary LV contains
+all the segments of the various LVs that need to be moved.  However, in
+this case, an identical LV is allocated that contains the same number of
+segments and a mirror is created to copy the contents from the first
+temporary LV to the second.  After a complete copy is made, the temporary
+LVs are removed, leaving behind the segments on the destination PV.  If an
+abort is issued during the move, all LVs being moved will remain on the
+source PV.
+
+.SH EXAMPLES
+
+Move all physical extents that are used by simple LVs on the specified PV to
+free physical extents elsewhere in the VG.
+.br
+.B pvmove /dev/sdb1
+
+Use a specific destination PV when moving physical extents.
+.br
+.B pvmove /dev/sdb1 /dev/sdc1
+
+Move extents belonging to a single LV.
+.br
+.B pvmove \-n lvol1 /dev/sdb1 /dev/sdc1
+
+Rather than moving the contents of an entire device, it is possible to
+move a range of physical extents, for example numbers 1000 to 1999
+inclusive on the specified PV.
+.br
+.B pvmove /dev/sdb1:1000\-1999
+
+A range of physical extents to move can be specified as start+length. For
+example, starting from PE 1000. (Counting starts from 0, so this refers to the
+1001st to the 2000th PE inclusive.)
+.br
+.B pvmove /dev/sdb1:1000+1000
+
+Move a range of physical extents to a specific PV (which must have
+sufficient free extents).
+.br
+.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1
+
+Move a range of physical extents to specific new extents on a new PV.
+.br
+.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1:0\-999
+
+If the source and destination are on the same disk, the
+\fBanywhere\fP allocation policy is needed.
+.br
+.B pvmove \-\-alloc anywhere /dev/sdb1:1000\-1999 /dev/sdb1:0\-999
+
+The part of a specific LV present within in a range of physical
+extents can also be picked out and moved.
+.br
+.B pvmove \-n lvol1 /dev/sdb1:1000\-1999 /dev/sdc1
+
diff --git a/man/pvmove.8_pregen b/man/pvmove.8_pregen
new file mode 100644
index 0000000..b4ce27e
--- /dev/null
+++ b/man/pvmove.8_pregen
@@ -0,0 +1,551 @@
+.TH PVMOVE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvmove \- Move extents from one physical volume to another
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvmove\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvmove moves the allocated physical extents (PEs) on a source PV to one or
+more destination PVs.  You can optionally specify a source LV in which
+case only extents used by that LV will be moved to free (or specified)
+extents on the destination PV. If no destination PV is specified, the
+normal allocation rules for the VG are used.
+
+If pvmove is interrupted for any reason (e.g. the machine crashes) then
+run pvmove again without any PV arguments to restart any operations that
+were in progress from the last checkpoint. Alternatively, use the abort
+option at any time to abort the operation. The resulting location of LVs
+after an abort depends on whether the atomic option was used.
+
+More than one pvmove can run concurrently if they are moving data from
+different source PVs, but additional pvmoves will ignore any LVs already
+in the process of being changed, so some data might not get moved.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+Move PV extents.
+.br
+.P
+\fBpvmove\fP \fIPV\fP
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--name\fP \fILV\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--atomic\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP ... ]
+.RE
+
+
+Continue or abort existing pvmove operations.
+.br
+.P
+\fBpvmove\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-b\fP|\fB--background\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--interval\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--abort\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--abort\fP
+.br
+Abort any pvmove operations in progress. If a pvmove was started
+with the --atomic option, then all LVs will remain on the source PV.
+Otherwise, segments that have been moved will remain on the
+destination PV, while unmoved segments will remain on the source PV.
+.ad b
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB--atomic\fP
+.br
+Makes a pvmove operation atomic, ensuring that all affected LVs are
+moved to the destination PV, or none are if the operation is aborted.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-b\fP|\fB--background\fP
+.br
+If the operation requires polling, this option causes the command to
+return before the operation is complete, and polling is done in the
+background.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--interval\fP \fINumber\fP
+.br
+Report progress at regular intervals.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--name\fP \fIString\fP
+.br
+Move only the extents belonging to the named LV.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+
+pvmove works as follows:
+
+1. A temporary 'pvmove' LV is created to store details of all the data
+movements required.
+
+2. Every LV in the VG is searched for contiguous data that need moving
+according to the command line arguments.
+For each piece of data found, a new segment is added to the end of the
+pvmove LV.
+This segment takes the form of a temporary mirror to copy the data
+from the original location to a newly allocated location.
+The original LV is updated to use the new temporary mirror segment
+in the pvmove LV instead of accessing the data directly.
+
+3. The VG metadata is updated on disk.
+
+4. The first segment of the pvmove LV is activated and starts to mirror
+the first part of the data.  Only one segment is mirrored at once as this
+is usually more efficient.
+
+5. A daemon repeatedly checks progress at the specified time interval.
+When it detects that the first temporary mirror is in sync, it breaks that
+mirror so that only the new location for that data gets used and writes a
+checkpoint into the VG metadata on disk.  Then it activates the mirror for
+the next segment of the pvmove LV.
+
+6. When there are no more segments left to be mirrored, the temporary LV
+is removed and the VG metadata is updated so that the LVs reflect the new
+data locations.
+
+Note that this new process cannot support the original LVM1
+type of on-disk metadata.  Metadata can be converted using
+\fBvgconvert\fP(8).
+
+If the \fB\-\-atomic\fP option is used, a slightly different approach is
+used for the move.  Again, a temporary 'pvmove' LV is created to store the
+details of all the data movements required.  This temporary LV contains
+all the segments of the various LVs that need to be moved.  However, in
+this case, an identical LV is allocated that contains the same number of
+segments and a mirror is created to copy the contents from the first
+temporary LV to the second.  After a complete copy is made, the temporary
+LVs are removed, leaving behind the segments on the destination PV.  If an
+abort is issued during the move, all LVs being moved will remain on the
+source PV.
+
+.SH EXAMPLES
+
+Move all physical extents that are used by simple LVs on the specified PV to
+free physical extents elsewhere in the VG.
+.br
+.B pvmove /dev/sdb1
+
+Use a specific destination PV when moving physical extents.
+.br
+.B pvmove /dev/sdb1 /dev/sdc1
+
+Move extents belonging to a single LV.
+.br
+.B pvmove \-n lvol1 /dev/sdb1 /dev/sdc1
+
+Rather than moving the contents of an entire device, it is possible to
+move a range of physical extents, for example numbers 1000 to 1999
+inclusive on the specified PV.
+.br
+.B pvmove /dev/sdb1:1000\-1999
+
+A range of physical extents to move can be specified as start+length. For
+example, starting from PE 1000. (Counting starts from 0, so this refers to the
+1001st to the 2000th PE inclusive.)
+.br
+.B pvmove /dev/sdb1:1000+1000
+
+Move a range of physical extents to a specific PV (which must have
+sufficient free extents).
+.br
+.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1
+
+Move a range of physical extents to specific new extents on a new PV.
+.br
+.B pvmove /dev/sdb1:1000\-1999 /dev/sdc1:0\-999
+
+If the source and destination are on the same disk, the
+\fBanywhere\fP allocation policy is needed.
+.br
+.B pvmove \-\-alloc anywhere /dev/sdb1:1000\-1999 /dev/sdb1:0\-999
+
+The part of a specific LV present within in a range of physical
+extents can also be picked out and moved.
+.br
+.B pvmove \-n lvol1 /dev/sdb1:1000\-1999 /dev/sdc1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvremove.8.des b/man/pvremove.8.des
deleted file mode 100644
index cc84148..0000000
--- a/man/pvremove.8.des
+++ /dev/null
@@ -1,7 +0,0 @@
-pvremove wipes the label on a device so that LVM will no longer recognise
-it as a PV.
-
-A PV cannot be removed from a VG while it is used by an active LV.
-
-Repeat the force option (\fB-ff\fP) to forcibly remove a PV belonging to
-an existing VG. Normally, \fBvgreduce\fP(8) should be used instead.
diff --git a/man/pvremove.8_des b/man/pvremove.8_des
new file mode 100644
index 0000000..cc84148
--- /dev/null
+++ b/man/pvremove.8_des
@@ -0,0 +1,7 @@
+pvremove wipes the label on a device so that LVM will no longer recognise
+it as a PV.
+
+A PV cannot be removed from a VG while it is used by an active LV.
+
+Repeat the force option (\fB-ff\fP) to forcibly remove a PV belonging to
+an existing VG. Normally, \fBvgreduce\fP(8) should be used instead.
diff --git a/man/pvremove.8_end b/man/pvremove.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/pvremove.8_pregen b/man/pvremove.8_pregen
new file mode 100644
index 0000000..18873c1
--- /dev/null
+++ b/man/pvremove.8_pregen
@@ -0,0 +1,323 @@
+.TH PVREMOVE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvremove \- Remove LVM label(s) from physical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvremove\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvremove wipes the label on a device so that LVM will no longer recognise
+it as a PV.
+
+A PV cannot be removed from a VG while it is used by an active LV.
+
+Repeat the force option (\fB-ff\fP) to forcibly remove a PV belonging to
+an existing VG. Normally, \fBvgreduce\fP(8) should be used instead.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvremove\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvresize.8.des b/man/pvresize.8.des
deleted file mode 100644
index b3cfe63..0000000
--- a/man/pvresize.8.des
+++ /dev/null
@@ -1,2 +0,0 @@
-pvresize resizes a PV. The PV may already be in a VG and may have active
-LVs allocated on it.
diff --git a/man/pvresize.8.end b/man/pvresize.8.end
deleted file mode 100644
index 316e408..0000000
--- a/man/pvresize.8.end
+++ /dev/null
@@ -1,16 +0,0 @@
-.SH NOTES
-
-pvresize will refuse to shrink a PV if it has allocated extents beyond the
-new end.
-
-.SH EXAMPLES
-
-Expand a PV after enlarging the partition.
-.br
-.B pvresize /dev/sda1
-
-Shrink a PV prior to shrinking the partition (ensure that the PV size is
-appropriate for the intended new partition size).
-.br
-.B pvresize \-\-setphysicalvolumesize 40G /dev/sda1
-
diff --git a/man/pvresize.8_des b/man/pvresize.8_des
new file mode 100644
index 0000000..b3cfe63
--- /dev/null
+++ b/man/pvresize.8_des
@@ -0,0 +1,2 @@
+pvresize resizes a PV. The PV may already be in a VG and may have active
+LVs allocated on it.
diff --git a/man/pvresize.8_end b/man/pvresize.8_end
new file mode 100644
index 0000000..316e408
--- /dev/null
+++ b/man/pvresize.8_end
@@ -0,0 +1,16 @@
+.SH NOTES
+
+pvresize will refuse to shrink a PV if it has allocated extents beyond the
+new end.
+
+.SH EXAMPLES
+
+Expand a PV after enlarging the partition.
+.br
+.B pvresize /dev/sda1
+
+Shrink a PV prior to shrinking the partition (ensure that the PV size is
+appropriate for the intended new partition size).
+.br
+.B pvresize \-\-setphysicalvolumesize 40G /dev/sda1
+
diff --git a/man/pvresize.8_pregen b/man/pvresize.8_pregen
new file mode 100644
index 0000000..a57abf3
--- /dev/null
+++ b/man/pvresize.8_pregen
@@ -0,0 +1,334 @@
+.TH PVRESIZE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvresize \- Resize physical volume(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvresize\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvresize resizes a PV. The PV may already be in a VG and may have active
+LVs allocated on it.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvresize\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[    \fB--setphysicalvolumesize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--setphysicalvolumesize\fP \fISize\fP[m|UNIT]
+.br
+Overrides the automatically detected size of the PV.
+Use with care, or prior to reducing the physical size of the device.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+
+pvresize will refuse to shrink a PV if it has allocated extents beyond the
+new end.
+
+.SH EXAMPLES
+
+Expand a PV after enlarging the partition.
+.br
+.B pvresize /dev/sda1
+
+Shrink a PV prior to shrinking the partition (ensure that the PV size is
+appropriate for the intended new partition size).
+.br
+.B pvresize \-\-setphysicalvolumesize 40G /dev/sda1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvs.8.des b/man/pvs.8.des
deleted file mode 100644
index 08497ce..0000000
--- a/man/pvs.8.des
+++ /dev/null
@@ -1 +0,0 @@
-pvs produces formatted output about PVs.
diff --git a/man/pvs.8.end b/man/pvs.8.end
deleted file mode 100644
index ba36a8b..0000000
--- a/man/pvs.8.end
+++ /dev/null
@@ -1,11 +0,0 @@
-.SH NOTES
-.
-The pv_attr bits are:
-.IP 1 3
-(d)uplicate, (a)llocatable, (u)sed
-.IP 2 3
-e(x)ported
-.IP 3 3
-(m)issing
-
-
diff --git a/man/pvs.8_des b/man/pvs.8_des
new file mode 100644
index 0000000..08497ce
--- /dev/null
+++ b/man/pvs.8_des
@@ -0,0 +1 @@
+pvs produces formatted output about PVs.
diff --git a/man/pvs.8_end b/man/pvs.8_end
new file mode 100644
index 0000000..ba36a8b
--- /dev/null
+++ b/man/pvs.8_end
@@ -0,0 +1,11 @@
+.SH NOTES
+.
+The pv_attr bits are:
+.IP 1 3
+(d)uplicate, (a)llocatable, (u)sed
+.IP 2 3
+e(x)ported
+.IP 3 3
+(m)issing
+
+
diff --git a/man/pvs.8_pregen b/man/pvs.8_pregen
new file mode 100644
index 0000000..5df8c4a
--- /dev/null
+++ b/man/pvs.8_pregen
@@ -0,0 +1,656 @@
+.TH PVS 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvs \- Display information about physical volumes
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvs\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvs produces formatted output about PVs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBpvs\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--segments\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nameprefixes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nolocking\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--rows\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--trustcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unquoted\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIPV\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Show information about devices that have not been initialized
+by LVM, i.e. they are not PVs.
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--nameprefixes\fP
+.br
+Add an "LVM2_" prefix plus the field name to the output. Useful
+with --noheadings to produce a list of field=value pairs that can
+be used to set environment variables (for example, in udev rules).
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nolocking\fP
+.br
+Disable locking.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--rows\fP
+.br
+Output columns as rows.
+.ad b
+
+.HP
+.ad l
+\fB--segments\fP
+.br
+Produces one line of output for each contiguous allocation of space on each
+PV, showing the start (pvseg_start) and length (pvseg_size) in units of
+physical extents.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--trustcache\fP
+.br
+Avoids certain device scanning during command processing. Do not use.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB--unquoted\fP
+.br
+When used with --nameprefixes, output values in the field=value
+pairs are not quoted.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+.
+The pv_attr bits are:
+.IP 1 3
+(d)uplicate, (a)llocatable, (u)sed
+.IP 2 3
+e(x)ported
+.IP 3 3
+(m)issing
+
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/pvscan.8.des b/man/pvscan.8.des
deleted file mode 100644
index ab8c50c..0000000
--- a/man/pvscan.8.des
+++ /dev/null
@@ -1,105 +0,0 @@
-pvscan scans all supported LVM block devices in the system for PVs.
-
-\fBScanning with lvmetad\fP
-
-pvscan operates differently when used with the
-.BR lvmetad (8)
-daemon.
-
-Scanning disks is required to read LVM metadata and identify LVM PVs.
-Once read, lvmetad caches the metadata so that LVM commands can read it
-without repeatedly scanning disks.  This is helpful because scanning disks
-is time consuming, and frequent scanning may interfere with the normal
-work of the system and disks.
-
-When lvmetad is not used, LVM commands revert to scanning disks to read
-metadata.  Any LVM command that needs metadata will scan disks for it;
-running the pvscan command is not necessary for the sake of other LVM
-commands.
-
-When lvmetad is used, LVM commands avoid scanning disks by reading
-metadata from lvmetad.  When new disks appear, they must be scanned so
-their metadata can be cached in lvmetad.  This is done by the command
-pvscan \-\-cache, which scans disks and passes the metadata to lvmetad.
-
-The pvscan \-\-cache command is typically run automatically by system
-services when a new device appears.  Users do not generally need to run
-this command if the system and lvmetad are running properly.
-
-Many scripts contain unnecessary pvscan (or vgscan) commands for
-historical reasons.  To avoid disrupting the system with extraneous disk
-scanning, an ordinary pvscan (without \-\-cache) will simply read metadata
-from lvmetad like other LVM commands.  It does not do anything beyond
-displaying the current state of the cache.
-
-.IP \[bu] 2
-When given specific device name arguments, pvscan \-\-cache will only
-read the named devices.
-
-.IP \[bu] 2
-LVM udev rules and systemd services are used to initiate automatic device
-scanning.
-
-.IP \[bu] 2
-To prevent devices from being scanned by pvscan --cache, add them
-to
-.BR lvm.conf (5)
-.B devices/global_filter.
-The devices/filter setting does not
-apply to system level scanning.
-For more information, see:
-.br
-.B lvmconfig --withcomments devices/global_filter
-
-.IP \[bu] 2
-If lvmetad is started or restarted after devices are visible, or
-if the global_filter has changed, then all devices must be rescanned
-for metadata with the command pvscan \-\-cache.
-
-.IP \[bu] 2
-lvmetad does not cache older metadata formats, e.g. lvm1, and will
-be temporarily disabled if they are seen.
-
-.IP \[bu] 2
-To notify lvmetad about a device that is no longer present, the major and
-minor numbers must be given, not the path.
-
-.P
-
-\fBAutomatic activation\fP
-
-When event-driven system services detect a new LVM device, the first step
-is to automatically scan and cache the metadata from the device.  This is
-done by pvscan \-\-cache.  A second step is to automatically activate LVs
-that are present on the new device.  This auto-activation is done by the
-same pvscan \-\-cache command when the option '\-a|\-\-activate ay' is
-included.
-
-Auto-activation of VGs or LVs can be enabled/disabled using:
-.br
-.BR lvm.conf (5)
-.B activation/auto_activation_volume_list
-
-For more information, see:
-.br
-.B lvmconfig --withcomments activation/auto_activation_volume_list
-
-When this setting is undefined, all LVs are auto-activated (when lvm is
-fully integrated with the event-driven system services.)
-
-When a VG or LV is not auto-activated, traditional activation using
-vgchange or lvchange -a|--activate is needed.
-
-.IP \[bu] 2
-pvscan auto-activation can be only done in combination with \-\-cache.
-
-.IP \[bu] 2
-Auto-activation is designated by the "a" argument in '-a|--activate ay'.
-This is meant to distinguish system generated commands from explicit user
-commands, although it can be used in any activation command.  Whenever it
-is used, the auto_activation_volume_list is applied.
-
-.IP \[bu] 2
-Auto-activation is not yet supported for LVs that are part of partial or
-clustered volume groups.
-
diff --git a/man/pvscan.8_des b/man/pvscan.8_des
new file mode 100644
index 0000000..ab8c50c
--- /dev/null
+++ b/man/pvscan.8_des
@@ -0,0 +1,105 @@
+pvscan scans all supported LVM block devices in the system for PVs.
+
+\fBScanning with lvmetad\fP
+
+pvscan operates differently when used with the
+.BR lvmetad (8)
+daemon.
+
+Scanning disks is required to read LVM metadata and identify LVM PVs.
+Once read, lvmetad caches the metadata so that LVM commands can read it
+without repeatedly scanning disks.  This is helpful because scanning disks
+is time consuming, and frequent scanning may interfere with the normal
+work of the system and disks.
+
+When lvmetad is not used, LVM commands revert to scanning disks to read
+metadata.  Any LVM command that needs metadata will scan disks for it;
+running the pvscan command is not necessary for the sake of other LVM
+commands.
+
+When lvmetad is used, LVM commands avoid scanning disks by reading
+metadata from lvmetad.  When new disks appear, they must be scanned so
+their metadata can be cached in lvmetad.  This is done by the command
+pvscan \-\-cache, which scans disks and passes the metadata to lvmetad.
+
+The pvscan \-\-cache command is typically run automatically by system
+services when a new device appears.  Users do not generally need to run
+this command if the system and lvmetad are running properly.
+
+Many scripts contain unnecessary pvscan (or vgscan) commands for
+historical reasons.  To avoid disrupting the system with extraneous disk
+scanning, an ordinary pvscan (without \-\-cache) will simply read metadata
+from lvmetad like other LVM commands.  It does not do anything beyond
+displaying the current state of the cache.
+
+.IP \[bu] 2
+When given specific device name arguments, pvscan \-\-cache will only
+read the named devices.
+
+.IP \[bu] 2
+LVM udev rules and systemd services are used to initiate automatic device
+scanning.
+
+.IP \[bu] 2
+To prevent devices from being scanned by pvscan --cache, add them
+to
+.BR lvm.conf (5)
+.B devices/global_filter.
+The devices/filter setting does not
+apply to system level scanning.
+For more information, see:
+.br
+.B lvmconfig --withcomments devices/global_filter
+
+.IP \[bu] 2
+If lvmetad is started or restarted after devices are visible, or
+if the global_filter has changed, then all devices must be rescanned
+for metadata with the command pvscan \-\-cache.
+
+.IP \[bu] 2
+lvmetad does not cache older metadata formats, e.g. lvm1, and will
+be temporarily disabled if they are seen.
+
+.IP \[bu] 2
+To notify lvmetad about a device that is no longer present, the major and
+minor numbers must be given, not the path.
+
+.P
+
+\fBAutomatic activation\fP
+
+When event-driven system services detect a new LVM device, the first step
+is to automatically scan and cache the metadata from the device.  This is
+done by pvscan \-\-cache.  A second step is to automatically activate LVs
+that are present on the new device.  This auto-activation is done by the
+same pvscan \-\-cache command when the option '\-a|\-\-activate ay' is
+included.
+
+Auto-activation of VGs or LVs can be enabled/disabled using:
+.br
+.BR lvm.conf (5)
+.B activation/auto_activation_volume_list
+
+For more information, see:
+.br
+.B lvmconfig --withcomments activation/auto_activation_volume_list
+
+When this setting is undefined, all LVs are auto-activated (when lvm is
+fully integrated with the event-driven system services.)
+
+When a VG or LV is not auto-activated, traditional activation using
+vgchange or lvchange -a|--activate is needed.
+
+.IP \[bu] 2
+pvscan auto-activation can be only done in combination with \-\-cache.
+
+.IP \[bu] 2
+Auto-activation is designated by the "a" argument in '-a|--activate ay'.
+This is meant to distinguish system generated commands from explicit user
+commands, although it can be used in any activation command.  Whenever it
+is used, the auto_activation_volume_list is applied.
+
+.IP \[bu] 2
+Auto-activation is not yet supported for LVs that are part of partial or
+clustered volume groups.
+
diff --git a/man/pvscan.8_end b/man/pvscan.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/pvscan.8_pregen b/man/pvscan.8_pregen
new file mode 100644
index 0000000..dc64b21
--- /dev/null
+++ b/man/pvscan.8_pregen
@@ -0,0 +1,542 @@
+.TH PVSCAN 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+pvscan \- List all physical volumes
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBpvscan\fP \fIoption_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+pvscan scans all supported LVM block devices in the system for PVs.
+
+\fBScanning with lvmetad\fP
+
+pvscan operates differently when used with the
+.BR lvmetad (8)
+daemon.
+
+Scanning disks is required to read LVM metadata and identify LVM PVs.
+Once read, lvmetad caches the metadata so that LVM commands can read it
+without repeatedly scanning disks.  This is helpful because scanning disks
+is time consuming, and frequent scanning may interfere with the normal
+work of the system and disks.
+
+When lvmetad is not used, LVM commands revert to scanning disks to read
+metadata.  Any LVM command that needs metadata will scan disks for it;
+running the pvscan command is not necessary for the sake of other LVM
+commands.
+
+When lvmetad is used, LVM commands avoid scanning disks by reading
+metadata from lvmetad.  When new disks appear, they must be scanned so
+their metadata can be cached in lvmetad.  This is done by the command
+pvscan \-\-cache, which scans disks and passes the metadata to lvmetad.
+
+The pvscan \-\-cache command is typically run automatically by system
+services when a new device appears.  Users do not generally need to run
+this command if the system and lvmetad are running properly.
+
+Many scripts contain unnecessary pvscan (or vgscan) commands for
+historical reasons.  To avoid disrupting the system with extraneous disk
+scanning, an ordinary pvscan (without \-\-cache) will simply read metadata
+from lvmetad like other LVM commands.  It does not do anything beyond
+displaying the current state of the cache.
+
+.IP \[bu] 2
+When given specific device name arguments, pvscan \-\-cache will only
+read the named devices.
+
+.IP \[bu] 2
+LVM udev rules and systemd services are used to initiate automatic device
+scanning.
+
+.IP \[bu] 2
+To prevent devices from being scanned by pvscan --cache, add them
+to
+.BR lvm.conf (5)
+.B devices/global_filter.
+The devices/filter setting does not
+apply to system level scanning.
+For more information, see:
+.br
+.B lvmconfig --withcomments devices/global_filter
+
+.IP \[bu] 2
+If lvmetad is started or restarted after devices are visible, or
+if the global_filter has changed, then all devices must be rescanned
+for metadata with the command pvscan \-\-cache.
+
+.IP \[bu] 2
+lvmetad does not cache older metadata formats, e.g. lvm1, and will
+be temporarily disabled if they are seen.
+
+.IP \[bu] 2
+To notify lvmetad about a device that is no longer present, the major and
+minor numbers must be given, not the path.
+
+.P
+
+\fBAutomatic activation\fP
+
+When event-driven system services detect a new LVM device, the first step
+is to automatically scan and cache the metadata from the device.  This is
+done by pvscan \-\-cache.  A second step is to automatically activate LVs
+that are present on the new device.  This auto-activation is done by the
+same pvscan \-\-cache command when the option '\-a|\-\-activate ay' is
+included.
+
+Auto-activation of VGs or LVs can be enabled/disabled using:
+.br
+.BR lvm.conf (5)
+.B activation/auto_activation_volume_list
+
+For more information, see:
+.br
+.B lvmconfig --withcomments activation/auto_activation_volume_list
+
+When this setting is undefined, all LVs are auto-activated (when lvm is
+fully integrated with the event-driven system services.)
+
+When a VG or LV is not auto-activated, traditional activation using
+vgchange or lvchange -a|--activate is needed.
+
+.IP \[bu] 2
+pvscan auto-activation can be only done in combination with \-\-cache.
+
+.IP \[bu] 2
+Auto-activation is designated by the "a" argument in '-a|--activate ay'.
+This is meant to distinguish system generated commands from explicit user
+commands, although it can be used in any activation command.  Whenever it
+is used, the auto_activation_volume_list is applied.
+
+.IP \[bu] 2
+Auto-activation is not yet supported for LVs that are part of partial or
+clustered volume groups.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+Display PV information.
+.br
+.P
+\fBpvscan\fP
+.br
+.RS 4
+.ad l
+[ \fB-e\fP|\fB--exported\fP ]
+.ad b
+.br
+.ad l
+[ \fB-n\fP|\fB--novolumegroup\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--short\fP ]
+.ad b
+.br
+.ad l
+[ \fB-u\fP|\fB--uuid\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Populate the lvmetad cache by scanning PVs.
+.br
+.P
+\fBpvscan\fP \fB--cache\fP
+.br
+.RS 4
+.ad l
+[ \fB-b\fP|\fB--background\fP ]
+.ad b
+.br
+.ad l
+[ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP ]
+.ad b
+.br
+.ad l
+[ \fB-j\fP|\fB--major\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--minor\fP \fINumber\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIString\fP|\fIPV\fP ... ]
+.RE
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB-b\fP|\fB--background\fP
+.br
+If the operation requires polling, this option causes the command to
+return before the operation is complete, and polling is done in the
+background.
+.ad b
+
+.HP
+.ad l
+\fB--cache\fP
+.br
+Scan one or more devices and send the metadata to lvmetad.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-e\fP|\fB--exported\fP
+.br
+Only show PVs belonging to exported VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-j\fP|\fB--major\fP \fINumber\fP
+.br
+The major number of a device.
+.ad b
+
+.HP
+.ad l
+\fB--minor\fP \fINumber\fP
+.br
+The minor number of a device.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--novolumegroup\fP
+.br
+Only show PVs not belonging to any VG.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--short\fP
+.br
+Short listing format.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-u\fP|\fB--uuid\fP
+.br
+Show UUIDs in addition to device names.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgcfgbackup.8.des b/man/vgcfgbackup.8.des
deleted file mode 100644
index 0720e01..0000000
--- a/man/vgcfgbackup.8.des
+++ /dev/null
@@ -1,16 +0,0 @@
-vgcfgbackup creates back up files containing metadata of VGs.
-If no VGs are named, back up files are created for all VGs.
-See \fBvgcfgrestore\fP for information on using the back up
-files.
-
-In a default installation, each VG is backed up into a separate file
-bearing the name of the VG in the directory \fI#DEFAULT_BACKUP_DIR#\fP.
-
-To use an alternative back up file, use \fB\-f\fP. In this case, when
-backing up multiple VGs, the file name is treated as a template, with %s
-replaced by the VG name.
-
-NB. This DOES NOT back up the data content of LVs.
-
-It may also be useful to regularly back up the files in
-\fI#DEFAULT_SYS_DIR#\fP.
diff --git a/man/vgcfgbackup.8_des b/man/vgcfgbackup.8_des
new file mode 100644
index 0000000..0720e01
--- /dev/null
+++ b/man/vgcfgbackup.8_des
@@ -0,0 +1,16 @@
+vgcfgbackup creates back up files containing metadata of VGs.
+If no VGs are named, back up files are created for all VGs.
+See \fBvgcfgrestore\fP for information on using the back up
+files.
+
+In a default installation, each VG is backed up into a separate file
+bearing the name of the VG in the directory \fI#DEFAULT_BACKUP_DIR#\fP.
+
+To use an alternative back up file, use \fB\-f\fP. In this case, when
+backing up multiple VGs, the file name is treated as a template, with %s
+replaced by the VG name.
+
+NB. This DOES NOT back up the data content of LVs.
+
+It may also be useful to regularly back up the files in
+\fI#DEFAULT_SYS_DIR#\fP.
diff --git a/man/vgcfgbackup.8_end b/man/vgcfgbackup.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgcfgbackup.8_pregen b/man/vgcfgbackup.8_pregen
new file mode 100644
index 0000000..8808540
--- /dev/null
+++ b/man/vgcfgbackup.8_pregen
@@ -0,0 +1,389 @@
+.TH VGCFGBACKUP 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgcfgbackup \- Backup volume group configuration(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgcfgbackup\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgcfgbackup creates back up files containing metadata of VGs.
+If no VGs are named, back up files are created for all VGs.
+See \fBvgcfgrestore\fP for information on using the back up
+files.
+
+In a default installation, each VG is backed up into a separate file
+bearing the name of the VG in the directory \fI/etc/lvm/backup\fP.
+
+To use an alternative back up file, use \fB\-f\fP. In this case, when
+backing up multiple VGs, the file name is treated as a template, with %s
+replaced by the VG name.
+
+NB. This DOES NOT back up the data content of LVs.
+
+It may also be useful to regularly back up the files in
+\fI/etc/lvm\fP.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgcfgbackup\fP
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--file\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--file\fP \fIString\fP
+.br
+Write the backup to the named file.
+When backing up more than one VG, the file name is
+treated as a template, and %s is replaced by the VG name.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgcfgrestore.8.des b/man/vgcfgrestore.8.des
deleted file mode 100644
index ee3a99e..0000000
--- a/man/vgcfgrestore.8.des
+++ /dev/null
@@ -1,11 +0,0 @@
-vgcfgrestore restores the metadata of a VG from a text back up file
-produced by \fBvgcfgbackup\fP. This writes VG metadata onto the devices
-specifed in back up file.
-
-A back up file can be specified with \fB\-\-file\fP.  If no backup file is
-specified, the most recent one is used. Use \fB\-\-list\fP for a list of
-the available back up and archive files of a VG.
-
-WARNING: When a VG contains thin pools, changes to thin metadata cannot be
-reverted, and data loss may occur if thin metadata has changed. The force
-option is required to restore in this case.
diff --git a/man/vgcfgrestore.8.end b/man/vgcfgrestore.8.end
deleted file mode 100644
index 5ac451d..0000000
--- a/man/vgcfgrestore.8.end
+++ /dev/null
@@ -1,9 +0,0 @@
-.SH NOTES
-
-To replace PVs, \fBvgdisplay \-\-partial \-\-verbose\fP will show the
-UUIDs and sizes of any PVs that are no longer present. If a PV in the VG
-is lost and you wish to substitute another of the same size, use
-\fBpvcreate \-\-restorefile filename \-\-uuid uuid\fP (plus additional
-arguments as appropriate) to initialise it with the same UUID as the
-missing PV. Repeat for all other missing PVs in the VG.  Then use
-\fBvgcfgrestore \-\-file filename\fP to restore the VG's metadata.
diff --git a/man/vgcfgrestore.8_des b/man/vgcfgrestore.8_des
new file mode 100644
index 0000000..ee3a99e
--- /dev/null
+++ b/man/vgcfgrestore.8_des
@@ -0,0 +1,11 @@
+vgcfgrestore restores the metadata of a VG from a text back up file
+produced by \fBvgcfgbackup\fP. This writes VG metadata onto the devices
+specifed in back up file.
+
+A back up file can be specified with \fB\-\-file\fP.  If no backup file is
+specified, the most recent one is used. Use \fB\-\-list\fP for a list of
+the available back up and archive files of a VG.
+
+WARNING: When a VG contains thin pools, changes to thin metadata cannot be
+reverted, and data loss may occur if thin metadata has changed. The force
+option is required to restore in this case.
diff --git a/man/vgcfgrestore.8_end b/man/vgcfgrestore.8_end
new file mode 100644
index 0000000..5ac451d
--- /dev/null
+++ b/man/vgcfgrestore.8_end
@@ -0,0 +1,9 @@
+.SH NOTES
+
+To replace PVs, \fBvgdisplay \-\-partial \-\-verbose\fP will show the
+UUIDs and sizes of any PVs that are no longer present. If a PV in the VG
+is lost and you wish to substitute another of the same size, use
+\fBpvcreate \-\-restorefile filename \-\-uuid uuid\fP (plus additional
+arguments as appropriate) to initialise it with the same UUID as the
+missing PV. Repeat for all other missing PVs in the VG.  Then use
+\fBvgcfgrestore \-\-file filename\fP to restore the VG's metadata.
diff --git a/man/vgcfgrestore.8_pregen b/man/vgcfgrestore.8_pregen
new file mode 100644
index 0000000..36da543
--- /dev/null
+++ b/man/vgcfgrestore.8_pregen
@@ -0,0 +1,473 @@
+.TH VGCFGRESTORE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgcfgrestore \- Restore volume group configuration
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgcfgrestore\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--file\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+ \fB-l\fP|\fB--list\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+vgcfgrestore restores the metadata of a VG from a text back up file
+produced by \fBvgcfgbackup\fP. This writes VG metadata onto the devices
+specifed in back up file.
+
+A back up file can be specified with \fB\-\-file\fP.  If no backup file is
+specified, the most recent one is used. Use \fB\-\-list\fP for a list of
+the available back up and archive files of a VG.
+
+WARNING: When a VG contains thin pools, changes to thin metadata cannot be
+reverted, and data loss may occur if thin metadata has changed. The force
+option is required to restore in this case.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Restore VG metadata from last backup.
+.br
+.P
+\fBvgcfgrestore\fP \fIVG\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Restore VG metadata from specified file.
+.br
+.P
+\fBvgcfgrestore\fP \fB-f\fP|\fB--file\fP \fIString\fP \fIVG\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+List all VG metadata backups.
+.br
+.P
+\fBvgcfgrestore\fP \fB-l\fP|\fB--list\fP \fIVG\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+List one VG metadata backup file.
+.br
+.P
+\fBvgcfgrestore\fP \fB-l\fP|\fB--list\fP \fB-f\fP|\fB--file\fP \fIString\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP ]
+.RE
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[    \fB--force\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--file\fP \fIString\fP
+.br
+Read metadata backup from the named file.
+Usually this file was created by vgcfgbackup.
+.ad b
+
+.HP
+.ad l
+\fB--force\fP ...
+.br
+Force metadata restore even with thin pool LVs.
+Use with extreme caution. Most changes to thin metadata
+cannot be reverted.
+You may lose data if you restore metadata that does not match the
+thin pool kernel metadata precisely.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--list\fP
+.br
+List metadata backup and archive files pertaining to the VG.
+May be used with --file. Does not restore the VG.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+
+To replace PVs, \fBvgdisplay \-\-partial \-\-verbose\fP will show the
+UUIDs and sizes of any PVs that are no longer present. If a PV in the VG
+is lost and you wish to substitute another of the same size, use
+\fBpvcreate \-\-restorefile filename \-\-uuid uuid\fP (plus additional
+arguments as appropriate) to initialise it with the same UUID as the
+missing PV. Repeat for all other missing PVs in the VG.  Then use
+\fBvgcfgrestore \-\-file filename\fP to restore the VG's metadata.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgchange.8.des b/man/vgchange.8.des
deleted file mode 100644
index 6b873d8..0000000
--- a/man/vgchange.8.des
+++ /dev/null
@@ -1,2 +0,0 @@
-vgchange changes VG attributes, changes LV activation in the kernel, and
-includes other utilities for VG maintenance.
diff --git a/man/vgchange.8.end b/man/vgchange.8.end
deleted file mode 100644
index a11bdd1..0000000
--- a/man/vgchange.8.end
+++ /dev/null
@@ -1,16 +0,0 @@
-.SH NOTES
-
-If vgchange recognizes COW snapshot LVs that were dropped because they ran
-out of space, it displays a message informing the administrator that the
-snapshots should be removed.
-
-.SH EXAMPLES
-
-Activate all LVs in all VGs on all existing devices.
-.br
-.B vgchange \-a y
-
-Change the maximum number of LVs for an inactive VG.
-.br
-.B vgchange \-l 128 vg00
-
diff --git a/man/vgchange.8_des b/man/vgchange.8_des
new file mode 100644
index 0000000..6b873d8
--- /dev/null
+++ b/man/vgchange.8_des
@@ -0,0 +1,2 @@
+vgchange changes VG attributes, changes LV activation in the kernel, and
+includes other utilities for VG maintenance.
diff --git a/man/vgchange.8_end b/man/vgchange.8_end
new file mode 100644
index 0000000..a11bdd1
--- /dev/null
+++ b/man/vgchange.8_end
@@ -0,0 +1,16 @@
+.SH NOTES
+
+If vgchange recognizes COW snapshot LVs that were dropped because they ran
+out of space, it displays a message informing the administrator that the
+snapshots should be removed.
+
+.SH EXAMPLES
+
+Activate all LVs in all VGs on all existing devices.
+.br
+.B vgchange \-a y
+
+Change the maximum number of LVs for an inactive VG.
+.br
+.B vgchange \-l 128 vg00
+
diff --git a/man/vgchange.8_pregen b/man/vgchange.8_pregen
new file mode 100644
index 0000000..1494f4e
--- /dev/null
+++ b/man/vgchange.8_pregen
@@ -0,0 +1,1151 @@
+.TH VGCHANGE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgchange \- Change volume group attributes
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgchange\fP \fIoption_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.P
+.ad l
+ \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.ad b
+.br
+.ad l
+    \fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP
+.ad b
+.br
+.ad l
+    \fB--addtag\fP \fITag\fP
+.ad b
+.br
+.ad l
+    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--deltag\fP \fITag\fP
+.ad b
+.br
+.ad l
+    \fB--detachprofile\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+ \fB-K\fP|\fB--ignoreactivationskip\fP
+.ad b
+.br
+.ad l
+    \fB--ignorelockingfailure\fP
+.ad b
+.br
+.ad l
+    \fB--ignoremonitoring\fP
+.ad b
+.br
+.ad l
+    \fB--ignoreskippedcluster\fP
+.ad b
+.br
+.ad l
+    \fB--lockopt\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--lockstart\fP
+.ad b
+.br
+.ad l
+    \fB--lockstop\fP
+.ad b
+.br
+.ad l
+    \fB--locktype\fP \fBsanlock\fP|\fBdlm\fP|\fBnone\fP
+.ad b
+.br
+.ad l
+ \fB-l\fP|\fB--logicalvolume\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+ \fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP
+.ad b
+.br
+.ad l
+    \fB--metadataprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--monitor\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--noudevsync\fP
+.ad b
+.br
+.ad l
+ \fB-P\fP|\fB--partial\fP
+.ad b
+.br
+.ad l
+ \fB-s\fP|\fB--physicalextentsize\fP \fISize\fP[m|UNIT]
+.ad b
+.br
+.ad l
+    \fB--poll\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+    \fB--refresh\fP
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+ \fB-x\fP|\fB--resizeable\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-S\fP|\fB--select\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--sysinit\fP
+.ad b
+.br
+.ad l
+    \fB--systemid\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-u\fP|\fB--uuid\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+    \fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+vgchange changes VG attributes, changes LV activation in the kernel, and
+includes other utilities for VG maintenance.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Change a general VG attribute. 
+.br
+For options listed in parentheses, any one is 
+.br
+required, after which the others are optional.
+.br
+.P
+\fBvgchange\fP
+.RS 4
+( \fB-l\fP|\fB--logicalvolume\fP \fINumber\fP,
+.ad b
+.br
+.ad l
+  \fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP,
+.ad b
+.br
+.ad l
+  \fB-u\fP|\fB--uuid\fP,
+.ad b
+.br
+.ad l
+  \fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+  \fB-s\fP|\fB--physicalextentsize\fP \fISize\fP[m|UNIT],
+.ad b
+.br
+.ad l
+  \fB-x\fP|\fB--resizeable\fP \fBy\fP|\fBn\fP,
+.ad b
+.br
+.ad l
+     \fB--addtag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--deltag\fP \fITag\fP,
+.ad b
+.br
+.ad l
+     \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP,
+.ad b
+.br
+.ad l
+     \fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP,
+.ad b
+.br
+.ad l
+     \fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP,
+.ad b
+.br
+.ad l
+     \fB--systemid\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--locktype\fP \fBsanlock\fP|\fBdlm\fP|\fBnone\fP,
+.ad b
+.br
+.ad l
+     \fB--profile\fP \fIString\fP,
+.ad b
+.br
+.ad l
+     \fB--detachprofile\fP,
+.ad b
+.br
+.ad l
+     \fB--metadataprofile\fP \fIString\fP )
+.RE
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Start or stop monitoring LVs from dmeventd.
+.br
+.P
+\fBvgchange\fP \fB--monitor\fP \fBy\fP|\fBn\fP
+.br
+.RS 4
+.ad l
+[    \fB--sysinit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poll\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Start or stop processing LV conversions.
+.br
+.P
+\fBvgchange\fP \fB--poll\fP \fBy\fP|\fBn\fP
+.br
+.RS 4
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Activate or deactivate LVs.
+.br
+.P
+\fBvgchange\fP \fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.br
+.RS 4
+.ad l
+[ \fB-K\fP|\fB--ignoreactivationskip\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[    \fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP ]
+.ad b
+.br
+.ad l
+[    \fB--sysinit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--monitor\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poll\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Reactivate LVs using the latest metadata.
+.br
+.P
+\fBvgchange\fP \fB--refresh\fP
+.br
+.RS 4
+.ad l
+[    \fB--sysinit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--monitor\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--poll\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Start the lockspace of a shared VG in lvmlockd.
+.br
+.P
+\fBvgchange\fP \fB--lockstart\fP
+.br
+.RS 4
+.ad l
+[    \fB--lockopt\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Stop the lockspace of a shared VG in lvmlockd.
+.br
+.P
+\fBvgchange\fP \fB--lockstop\fP
+.br
+.RS 4
+.ad l
+[    \fB--lockopt\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP|\fISelect\fP ... ]
+.RE
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoremonitoring\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--activate\fP \fBy\fP|\fBn\fP|\fBay\fP
+.br
+Change the active state of LVs.
+An active LV can be used through a block device,
+allowing data on the LV to be accessed.
+\fBy\fP makes LVs active, or available.
+\fBn\fP makes LVs inactive, or unavailable.
+The block device for the LV is added or removed from the system
+using device-mapper in the kernel.
+A symbolic link /dev/VGName/LVName pointing to the device node is also added/removed.
+All software and scripts should access the device through the symbolic
+link and present this as the name of the device.
+The location and name of the underlying device node may depend on
+the distribution, configuration (e.g. udev), or release version.
+\fBay\fP specifies autoactivation, in which case an LV is activated
+only if it matches an item in lvm.conf activation/auto_activation_volume_list.
+If the list is not set, all LVs are considered to match, and if
+if the list is set but empty, no LVs match.
+Autoactivation should be used during system boot to make it possible
+to select which LVs should be automatically activated by the system.
+See lvmlockd(8) for more information about activation options \fBey\fP and \fBsy\fP for shared VGs.
+See clvmd(8) for more information about activation options \fBey\fP, \fBsy\fP, \fBly\fP and \fBln\fP for clustered VGs.
+.ad b
+
+.HP
+.ad l
+\fB--activationmode\fP \fBpartial\fP|\fBdegraded\fP|\fBcomplete\fP
+.br
+Determines if LV activation is allowed when PVs are missing,
+e.g. because of a device failure.
+\fBcomplete\fP only allows LVs with no missing PVs to be activated,
+and is the most restrictive mode.
+\fBdegraded\fP allows RAID LVs with missing PVs to be activated.
+(This does not include the "mirror" type, see "raid1" instead.)
+\fBpartial\fP allows any LV with missing PVs to be activated, and
+should only be used for recovery or repair.
+For default, see lvm.conf/activation_mode.
+See \fBlvmraid\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--addtag\fP \fITag\fP
+.br
+Adds a tag to a PV, VG or LV. This option can be repeated to add
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP
+.br
+Change the clustered property of a VG using clvmd.
+See clvmd(8) for more information about clustered VGs.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--deltag\fP \fITag\fP
+.br
+Deletes a tag from a PV, VG or LV. This option can be repeated to delete
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--detachprofile\fP
+.br
+Detaches a metadata profile from a VG or LV.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-K\fP|\fB--ignoreactivationskip\fP
+.br
+Ignore the "activation skip" LV flag during activation
+to allow LVs with the flag set to be activated.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoremonitoring\fP
+.br
+Do not interact with dmeventd unless --monitor is specified.
+Do not use this if dmeventd is already monitoring a device.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--lockopt\fP \fIString\fP
+.br
+Used to pass options for special cases to lvmlockd.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--lockstart\fP
+.br
+Start the lockspace of a shared VG in lvmlockd.
+lvmlockd locks becomes available for the VG, allowing LVM to use the VG.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--lockstop\fP
+.br
+Stop the lockspace of a shared VG in lvmlockd.
+lvmlockd locks become unavailable for the VG, preventing LVM from using the VG.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--locktype\fP \fBsanlock\fP|\fBdlm\fP|\fBnone\fP
+.br
+Change the VG lock type to or from a shared lock type used with lvmlockd.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--logicalvolume\fP \fINumber\fP
+.br
+Sets the maximum number of LVs allowed in a VG.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP
+.br
+Sets the maximum number of PVs that can belong to the VG.
+The value 0 removes any limitation.
+For large numbers of PVs, also see options --pvmetadatacopies,
+and --vgmetadatacopies for improving performance.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--monitor\fP \fBy\fP|\fBn\fP
+.br
+Start (yes) or stop (no) monitoring an LV with dmeventd.
+dmeventd monitors kernel events for an LV, and performs
+automated maintenance for the LV in reponse to specific events.
+See dmeventd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--physicalextentsize\fP \fISize\fP[m|UNIT]
+.br
+Sets the physical extent size of PVs in the VG.
+The value must be either a power of 2 of at least 1 sector
+(where the sector size is the largest sector size of the PVs
+currently used in the VG), or at least 128KiB.
+Once this value has been set, it is difficult to change
+without recreating the VG, unless no extents need moving.
+Before increasing the physical extent size, you might need to use lvresize,
+pvresize and/or pvmove so that everything fits. For example, every
+contiguous range of extents used in a LV must start and end on an extent boundary.
+.ad b
+
+.HP
+.ad l
+\fB--poll\fP \fBy\fP|\fBn\fP
+.br
+When yes, start the background transformation of an LV.
+An incomplete transformation, e.g. pvmove or lvconvert interrupted
+by reboot or crash, can be restarted from the last checkpoint with --poll y.
+When no, background transformation of an LV will not occur, and the
+transformation will not complete. It may not be appropriate to immediately
+poll an LV after activation, in which case --poll n can be used to defer
+polling until a later --poll y command.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.br
+The number of metadata areas to set aside on a PV for storing VG metadata.
+When 2, one copy of the VG metadata is stored at the front of the PV
+and a second copy is stored at the end.
+When 1, one copy of the VG metadata is stored at the front of the PV
+(starting in the 5th sector).
+When 0, no copies of the VG metadata are stored on the given PV.
+This may be useful in VGs containing many PVs (this places limitations
+on the ability to use vgsplit later.)
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--refresh\fP
+.br
+If the LV is active, reload its metadata.
+This is not necessary in normal operation, but may be useful
+if something has gone wrong, or if some form of manual LV
+sharing is being used.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-x\fP|\fB--resizeable\fP \fBy\fP|\fBn\fP
+.br
+Enables or disables the addition or removal of PVs to/from a VG
+(by vgextend/vgreduce).
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--sysinit\fP
+.br
+Indicates that vgchange/lvchange is being invoked from early system initialisation
+scripts (e.g. rc.sysinit or an initrd), before writable filesystems are
+available. As such, some functionality needs to be disabled and this option
+acts as a shortcut which selects an appropriate set of options. Currently,
+this is equivalent to using --ignorelockingfailure, --ignoremonitoring,
+--poll n, and setting env var LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES.
+When used in conjunction with lvmetad enabled and running,
+vgchange/lvchange skip autoactivation, and defer to pvscan autoactivation.
+.ad b
+
+.HP
+.ad l
+\fB--systemid\fP \fIString\fP
+.br
+Changes the system ID of the VG.  Using this option requires caution
+because the VG may become foreign to the host running the command,
+leaving the host unable to access it.
+See lvmsystemid(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-u\fP|\fB--uuid\fP
+.br
+Generate new random UUID for specified VGs.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP
+.br
+Number of copies of the VG metadata that are kept.
+VG metadata is kept in VG metadata areas on PVs in the VG,
+i.e. reserved space at the start and/or end of the PVs.
+Keeping a copy of the VG metadata on every PV can reduce performance
+in VGs containing a large number of PVs.
+When this number is set to a non-zero value, LVM will automatically
+choose PVs on which to store metadata, using the metadataignore flags
+on PVs to achieve the specified number.
+The number can also be replaced with special string values:
+\fBunmanaged\fP causes LVM to not automatically manage the PV
+metadataignore flags.
+\fBall\fP causes LVM to first clear the metadataignore flags on
+all PVs, and then to become unmanaged.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+
+If vgchange recognizes COW snapshot LVs that were dropped because they ran
+out of space, it displays a message informing the administrator that the
+snapshots should be removed.
+
+.SH EXAMPLES
+
+Activate all LVs in all VGs on all existing devices.
+.br
+.B vgchange \-a y
+
+Change the maximum number of LVs for an inactive VG.
+.br
+.B vgchange \-l 128 vg00
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgck.8.des b/man/vgck.8.des
deleted file mode 100644
index 24e1dbe..0000000
--- a/man/vgck.8.des
+++ /dev/null
@@ -1 +0,0 @@
-vgck checks LVM metadata for consistency.
diff --git a/man/vgck.8_des b/man/vgck.8_des
new file mode 100644
index 0000000..24e1dbe
--- /dev/null
+++ b/man/vgck.8_des
@@ -0,0 +1 @@
+vgck checks LVM metadata for consistency.
diff --git a/man/vgck.8_end b/man/vgck.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgck.8_pregen b/man/vgck.8_pregen
new file mode 100644
index 0000000..fa01362
--- /dev/null
+++ b/man/vgck.8_pregen
@@ -0,0 +1,310 @@
+.TH VGCK 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgck \- Check the consistency of volume group(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgck\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgck checks LVM metadata for consistency.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgck\fP
+.br
+.RS 4
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgconvert.8.des b/man/vgconvert.8.des
deleted file mode 100644
index 47bc0cc..0000000
--- a/man/vgconvert.8.des
+++ /dev/null
@@ -1,7 +0,0 @@
-vgconvert converts VG metadata from one format to another.  The new
-metadata format must be able to fit into the space provided by the old
-format.
-
-Because the LVM1 format should no longer be used, this command is no
-longer needed in general.
-
diff --git a/man/vgconvert.8_des b/man/vgconvert.8_des
new file mode 100644
index 0000000..47bc0cc
--- /dev/null
+++ b/man/vgconvert.8_des
@@ -0,0 +1,7 @@
+vgconvert converts VG metadata from one format to another.  The new
+metadata format must be able to fit into the space provided by the old
+format.
+
+Because the LVM1 format should no longer be used, this command is no
+longer needed in general.
+
diff --git a/man/vgconvert.8_end b/man/vgconvert.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgconvert.8_pregen b/man/vgconvert.8_pregen
new file mode 100644
index 0000000..4f89b9e
--- /dev/null
+++ b/man/vgconvert.8_pregen
@@ -0,0 +1,394 @@
+.TH VGCONVERT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgconvert \- Change volume group metadata format
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgconvert\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgconvert converts VG metadata from one format to another.  The new
+metadata format must be able to fit into the space provided by the old
+format.
+
+Because the LVM1 format should no longer be used, this command is no
+longer needed in general.
+
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgconvert\fP \fIVG\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[    \fB--labelsector\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--bootloaderareasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--bootloaderareasize\fP \fISize\fP[m|UNIT]
+.br
+Create a separate bootloader area of specified size besides PV's data
+area. The bootloader area is an area of reserved space on the PV from
+which LVM will not allocate any extents and it's kept untouched. This is
+primarily aimed for use with bootloaders to embed their own data or metadata.
+The start of the bootloader area is always aligned, see also --dataalignment
+and --dataalignmentoffset. The bootloader area size may eventually
+end up increased due to the alignment, but it's never less than the
+size that is requested. To see the bootloader area start and size of
+an existing PV use pvs -o +pv_ba_start,pv_ba_size.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--labelsector\fP \fINumber\fP
+.br
+By default the PV is labelled with an LVM2 identifier in its second
+sector (sector 1). This lets you use a different sector near the
+start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
+in the source). Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--metadatasize\fP \fISize\fP[m|UNIT]
+.br
+The approximate amount of space used for each VG metadata area.
+The size may be rounded.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.br
+The number of metadata areas to set aside on a PV for storing VG metadata.
+When 2, one copy of the VG metadata is stored at the front of the PV
+and a second copy is stored at the end.
+When 1, one copy of the VG metadata is stored at the front of the PV
+(starting in the 5th sector).
+When 0, no copies of the VG metadata are stored on the given PV.
+This may be useful in VGs containing many PVs (this places limitations
+on the ability to use vgsplit later.)
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgcreate.8.des b/man/vgcreate.8.des
deleted file mode 100644
index a2d7161..0000000
--- a/man/vgcreate.8.des
+++ /dev/null
@@ -1,4 +0,0 @@
-vgcreate creates a new VG on block devices. If the devices were not
-previously intialized as PVs with \fBpvcreate\fP(8), vgcreate will
-inititialize them, making them PVs. The pvcreate options for initializing
-devices are also available with vgcreate.
diff --git a/man/vgcreate.8.end b/man/vgcreate.8.end
deleted file mode 100644
index 66bcfbb..0000000
--- a/man/vgcreate.8.end
+++ /dev/null
@@ -1,6 +0,0 @@
-.SH EXAMPLES
-
-Create a VG with two PVs, using the default physical extent size.
-.br
-.B vgcreate myvg /dev/sdk1 /dev/sdl1
-
diff --git a/man/vgcreate.8_des b/man/vgcreate.8_des
new file mode 100644
index 0000000..a2d7161
--- /dev/null
+++ b/man/vgcreate.8_des
@@ -0,0 +1,4 @@
+vgcreate creates a new VG on block devices. If the devices were not
+previously intialized as PVs with \fBpvcreate\fP(8), vgcreate will
+inititialize them, making them PVs. The pvcreate options for initializing
+devices are also available with vgcreate.
diff --git a/man/vgcreate.8_end b/man/vgcreate.8_end
new file mode 100644
index 0000000..66bcfbb
--- /dev/null
+++ b/man/vgcreate.8_end
@@ -0,0 +1,6 @@
+.SH EXAMPLES
+
+Create a VG with two PVs, using the default physical extent size.
+.br
+.B vgcreate myvg /dev/sdk1 /dev/sdl1
+
diff --git a/man/vgcreate.8_pregen b/man/vgcreate.8_pregen
new file mode 100644
index 0000000..5c73312
--- /dev/null
+++ b/man/vgcreate.8_pregen
@@ -0,0 +1,626 @@
+.TH VGCREATE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgcreate \- Create a volume group
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgcreate\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgcreate creates a new VG on block devices. If the devices were not
+previously intialized as PVs with \fBpvcreate\fP(8), vgcreate will
+inititialize them, making them PVs. The pvcreate options for initializing
+devices are also available with vgcreate.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgcreate\fP \fIVG\fP\fI_new\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--maxlogicalvolumes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--physicalextentsize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--addtag\fP \fITag\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--labelsector\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignment\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignmentoffset\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--systemid\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--locktype\fP \fBsanlock\fP|\fBdlm\fP|\fBnone\fP ]
+.ad b
+.br
+.ad l
+[    \fB--lockopt\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--addtag\fP \fITag\fP
+.br
+Adds a tag to a PV, VG or LV. This option can be repeated to add
+multiple tags at once. See lvm(8) for information about tags.
+.ad b
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP
+.br
+Create a clustered VG using clvmd if LVM is compiled with cluster support.
+This allows multiple hosts to share a VG on shared devices.
+clvmd and a lock manager must be configured and running.
+(A clustered VG using clvmd is different from a shared VG using lvmlockd.)
+See clvmd(8) for more information about clustered VGs.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignment\fP \fISize\fP[k|UNIT]
+.br
+Align the start of the data to a multiple of this number.
+Also specify an appropriate Physical Extent size when creating a VG.
+To see the location of the first Physical Extent of an existing PV,
+use pvs -o +pe_start. In addition, it may be shifted by an alignment offset.
+See lvm.conf/data_alignment_offset_detection and --dataalignmentoffset.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignmentoffset\fP \fISize\fP[k|UNIT]
+.br
+Shift the start of the data area by this additional offset.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--labelsector\fP \fINumber\fP
+.br
+By default the PV is labelled with an LVM2 identifier in its second
+sector (sector 1). This lets you use a different sector near the
+start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
+in the source). Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--lockopt\fP \fIString\fP
+.br
+Used to pass options for special cases to lvmlockd.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--locktype\fP \fBsanlock\fP|\fBdlm\fP|\fBnone\fP
+.br
+Specify the VG lock type directly in place of using --shared.
+See lvmlockd(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--maxlogicalvolumes\fP \fINumber\fP
+.br
+Sets the maximum number of LVs allowed in a VG.
+.ad b
+
+.HP
+.ad l
+\fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP
+.br
+Sets the maximum number of PVs that can belong to the VG.
+The value 0 removes any limitation.
+For large numbers of PVs, also see options --pvmetadatacopies,
+and --vgmetadatacopies for improving performance.
+.ad b
+
+.HP
+.ad l
+\fB--metadataprofile\fP \fIString\fP
+.br
+The metadata profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--metadatasize\fP \fISize\fP[m|UNIT]
+.br
+The approximate amount of space used for each VG metadata area.
+The size may be rounded.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--physicalextentsize\fP \fISize\fP[m|UNIT]
+.br
+Sets the physical extent size of PVs in the VG.
+The value must be either a power of 2 of at least 1 sector
+(where the sector size is the largest sector size of the PVs
+currently used in the VG), or at least 128KiB.
+Once this value has been set, it is difficult to change
+without recreating the VG, unless no extents need moving.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.br
+The number of metadata areas to set aside on a PV for storing VG metadata.
+When 2, one copy of the VG metadata is stored at the front of the PV
+and a second copy is stored at the end.
+When 1, one copy of the VG metadata is stored at the front of the PV
+(starting in the 5th sector).
+When 0, no copies of the VG metadata are stored on the given PV.
+This may be useful in VGs containing many PVs (this places limitations
+on the ability to use vgsplit later.)
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Create a shared VG using lvmlockd if LVM is compiled with lockd support.
+lvmlockd will select lock type sanlock or dlm depending on which lock
+manager is running. This allows multiple hosts to share a VG on shared
+devices. lvmlockd and a lock manager must be configured and running.
+(A shared VG using lvmlockd is different from a clustered VG using clvmd.)
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB--systemid\fP \fIString\fP
+.br
+Specifies the system ID that will be given to the new VG, overriding the
+system ID of the host running the command. A VG is normally created
+without this option, in which case the new VG is given the system ID of
+the host creating it. Using this option requires caution because the
+system ID of the new VG may not match the system ID of the host running
+the command, leaving the VG inaccessible to the host.
+See lvmsystemid(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP
+.br
+Number of copies of the VG metadata that are kept.
+VG metadata is kept in VG metadata areas on PVs in the VG,
+i.e. reserved space at the start and/or end of the PVs.
+Keeping a copy of the VG metadata on every PV can reduce performance
+in VGs containing a large number of PVs.
+When this number is set to a non-zero value, LVM will automatically
+choose PVs on which to store metadata, using the metadataignore flags
+on PVs to achieve the specified number.
+The number can also be replaced with special string values:
+\fBunmanaged\fP causes LVM to not automatically manage the PV
+metadataignore flags.
+\fBall\fP causes LVM to first clear the metadataignore flags on
+all PVs, and then to become unmanaged.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+Controls if the first 4 sectors (2048 bytes) of the device are wiped.
+The default is to wipe these sectors unless either or both of
+--restorefile or --uuid are specified.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Create a VG with two PVs, using the default physical extent size.
+.br
+.B vgcreate myvg /dev/sdk1 /dev/sdl1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgdisplay.8.des b/man/vgdisplay.8.des
deleted file mode 100644
index c42f821..0000000
--- a/man/vgdisplay.8.des
+++ /dev/null
@@ -1,4 +0,0 @@
-vgdisplay shows the attributes of VGs, and the associated PVs and LVs.
-
-\fBvgs\fP(8) is a preferred alternative that shows the same information
-and more, using a more compact and configurable output format.
diff --git a/man/vgdisplay.8_des b/man/vgdisplay.8_des
new file mode 100644
index 0000000..c42f821
--- /dev/null
+++ b/man/vgdisplay.8_des
@@ -0,0 +1,4 @@
+vgdisplay shows the attributes of VGs, and the associated PVs and LVs.
+
+\fBvgs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
diff --git a/man/vgdisplay.8_end b/man/vgdisplay.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgdisplay.8_pregen b/man/vgdisplay.8_pregen
new file mode 100644
index 0000000..352a521
--- /dev/null
+++ b/man/vgdisplay.8_pregen
@@ -0,0 +1,606 @@
+.TH VGDISPLAY 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgdisplay \- Display volume group information
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgdisplay\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgdisplay shows the attributes of VGs, and the associated PVs and LVs.
+
+\fBvgs\fP(8) is a preferred alternative that shows the same information
+and more, using a more compact and configurable output format.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgdisplay\fP
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--activevolumegroups\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--colon\fP ]
+.ad b
+.br
+.ad l
+[ \fB-C\fP|\fB--columns\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-s\fP|\fB--short\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--activevolumegroups\fP
+.br
+Only select active VGs. The VG is considered active
+if at least one of its LVs is active.
+.ad b
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--colon\fP
+.br
+Generate colon separated output for easier parsing in scripts or programs.
+Also see vgs(8) which provides considerably more control over the output.
+.ad b
+
+.HP
+.ad l
+\fB-C\fP|\fB--columns\fP
+.br
+Display output in columns, the equivalent of vgs(8).
+Options listed are the same as options given in vgs(8).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-s\fP|\fB--short\fP
+.br
+Give a short listing showing the existence of VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgexport.8.des b/man/vgexport.8.des
deleted file mode 100644
index f9fa49c..0000000
--- a/man/vgexport.8.des
+++ /dev/null
@@ -1,8 +0,0 @@
-vgexport makes inactive VGs unknown to the system. In this state, all the
-PVs in the VG can be moved to a different system, from which
-\fBvgimport\fP can then be run.
-
-Most LVM tools ignore exported VGs.
-
-vgexport clears the VG system ID, and vgimport sets the VG system ID to
-match the host running vgimport (if the host has a system ID).
diff --git a/man/vgexport.8_des b/man/vgexport.8_des
new file mode 100644
index 0000000..f9fa49c
--- /dev/null
+++ b/man/vgexport.8_des
@@ -0,0 +1,8 @@
+vgexport makes inactive VGs unknown to the system. In this state, all the
+PVs in the VG can be moved to a different system, from which
+\fBvgimport\fP can then be run.
+
+Most LVM tools ignore exported VGs.
+
+vgexport clears the VG system ID, and vgimport sets the VG system ID to
+match the host running vgimport (if the host has a system ID).
diff --git a/man/vgexport.8_end b/man/vgexport.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgexport.8_pregen b/man/vgexport.8_pregen
new file mode 100644
index 0000000..0551c26
--- /dev/null
+++ b/man/vgexport.8_pregen
@@ -0,0 +1,363 @@
+.TH VGEXPORT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgexport \- Unregister volume group(s) from the system
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgexport\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgexport makes inactive VGs unknown to the system. In this state, all the
+PVs in the VG can be moved to a different system, from which
+\fBvgimport\fP can then be run.
+
+Most LVM tools ignore exported VGs.
+
+vgexport clears the VG system ID, and vgimport sets the VG system ID to
+match the host running vgimport (if the host has a system ID).
+
+.P
+.SH USAGE
+.br
+.P
+.
+Export specified VGs.
+.br
+.P
+\fBvgexport\fP \fIVG\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Export all VGs.
+.br
+.P
+\fBvgexport\fP \fB-a\fP|\fB--all\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgextend.8.des b/man/vgextend.8.des
deleted file mode 100644
index 85fe6fc..0000000
--- a/man/vgextend.8.des
+++ /dev/null
@@ -1,11 +0,0 @@
-vgextend adds one or more PVs to a VG. This increases the space available
-for LVs in the VG.
-
-Also, PVs that have gone missing and then returned, e.g. due to a
-transient device failure, can be added back to the VG without
-re-initializing them (see \-\-restoremissing).
-
-If the specified PVs have not yet been initialized with pvcreate, vgextend
-will initialize them. In this case pvcreate options can be used, e.g.
-\-\-labelsector, \-\-metadatasize, \-\-metadataignore,
-\-\-pvmetadatacopies, \-\-dataalignment, \-\-dataalignmentoffset.
diff --git a/man/vgextend.8.end b/man/vgextend.8.end
deleted file mode 100644
index e50fcce..0000000
--- a/man/vgextend.8.end
+++ /dev/null
@@ -1,6 +0,0 @@
-.SH EXAMPLES
-
-Add two PVs to a VG.
-.br
-.B vgextend vg00 /dev/sda4 /dev/sdn1
-
diff --git a/man/vgextend.8_des b/man/vgextend.8_des
new file mode 100644
index 0000000..85fe6fc
--- /dev/null
+++ b/man/vgextend.8_des
@@ -0,0 +1,11 @@
+vgextend adds one or more PVs to a VG. This increases the space available
+for LVs in the VG.
+
+Also, PVs that have gone missing and then returned, e.g. due to a
+transient device failure, can be added back to the VG without
+re-initializing them (see \-\-restoremissing).
+
+If the specified PVs have not yet been initialized with pvcreate, vgextend
+will initialize them. In this case pvcreate options can be used, e.g.
+\-\-labelsector, \-\-metadatasize, \-\-metadataignore,
+\-\-pvmetadatacopies, \-\-dataalignment, \-\-dataalignmentoffset.
diff --git a/man/vgextend.8_end b/man/vgextend.8_end
new file mode 100644
index 0000000..e50fcce
--- /dev/null
+++ b/man/vgextend.8_end
@@ -0,0 +1,6 @@
+.SH EXAMPLES
+
+Add two PVs to a VG.
+.br
+.B vgextend vg00 /dev/sda4 /dev/sdn1
+
diff --git a/man/vgextend.8_pregen b/man/vgextend.8_pregen
new file mode 100644
index 0000000..42ef268
--- /dev/null
+++ b/man/vgextend.8_pregen
@@ -0,0 +1,473 @@
+.TH VGEXTEND 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgextend \- Add physical volumes to a volume group
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgextend\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgextend adds one or more PVs to a VG. This increases the space available
+for LVs in the VG.
+
+Also, PVs that have gone missing and then returned, e.g. due to a
+transient device failure, can be added back to the VG without
+re-initializing them (see \-\-restoremissing).
+
+If the specified PVs have not yet been initialized with pvcreate, vgextend
+will initialize them. In this case pvcreate options can be used, e.g.
+\-\-labelsector, \-\-metadatasize, \-\-metadataignore,
+\-\-pvmetadatacopies, \-\-dataalignment, \-\-dataalignmentoffset.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgextend\fP \fIVG\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[    \fB--labelsector\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadatasize\fP \fISize\fP[m|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP ]
+.ad b
+.br
+.ad l
+[    \fB--metadataignore\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignment\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--dataalignmentoffset\fP \fISize\fP[k|UNIT] ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--restoremissing\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignment\fP \fISize\fP[k|UNIT]
+.br
+Align the start of the data to a multiple of this number.
+Also specify an appropriate Physical Extent size when creating a VG.
+To see the location of the first Physical Extent of an existing PV,
+use pvs -o +pe_start. In addition, it may be shifted by an alignment offset.
+See lvm.conf/data_alignment_offset_detection and --dataalignmentoffset.
+.ad b
+
+.HP
+.ad l
+\fB--dataalignmentoffset\fP \fISize\fP[k|UNIT]
+.br
+Shift the start of the data area by this additional offset.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--labelsector\fP \fINumber\fP
+.br
+By default the PV is labelled with an LVM2 identifier in its second
+sector (sector 1). This lets you use a different sector near the
+start of the disk (between 0 and 3 inclusive - see LABEL_SCAN_SECTORS
+in the source). Use with care.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--metadataignore\fP \fBy\fP|\fBn\fP
+.br
+Specifies the metadataignore property of a PV.
+If yes, metadata areas on the PV are ignored, and lvm will
+not store metadata in the metadata areas of the PV.
+If no, lvm will store metadata on the PV.
+.ad b
+
+.HP
+.ad l
+\fB--metadatasize\fP \fISize\fP[m|UNIT]
+.br
+The approximate amount of space used for each VG metadata area.
+The size may be rounded.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB--pvmetadatacopies\fP \fB0\fP|\fB1\fP|\fB2\fP
+.br
+The number of metadata areas to set aside on a PV for storing VG metadata.
+When 2, one copy of the VG metadata is stored at the front of the PV
+and a second copy is stored at the end.
+When 1, one copy of the VG metadata is stored at the front of the PV
+(starting in the 5th sector).
+When 0, no copies of the VG metadata are stored on the given PV.
+This may be useful in VGs containing many PVs (this places limitations
+on the ability to use vgsplit later.)
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--restoremissing\fP
+.br
+Add a PV back into a VG after the PV was missing and then returned,
+e.g. due to a transient failure. The PV is not reinitialized.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+
+.HP
+.ad l
+\fB-Z\fP|\fB--zero\fP \fBy\fP|\fBn\fP
+.br
+Controls if the first 4 sectors (2048 bytes) of the device are wiped.
+The default is to wipe these sectors unless either or both of
+--restorefile or --uuid are specified.
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Add two PVs to a VG.
+.br
+.B vgextend vg00 /dev/sda4 /dev/sdn1
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgimport.8.des b/man/vgimport.8.des
deleted file mode 100644
index 91196b6..0000000
--- a/man/vgimport.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-vgimport makes exported VGs known to the system again, perhaps after
-moving the PVs from a different system.
-
-vgexport clears the VG system ID, and vgimport sets the VG system ID to
-match the host running vgimport (if the host has a system ID).
diff --git a/man/vgimport.8_des b/man/vgimport.8_des
new file mode 100644
index 0000000..91196b6
--- /dev/null
+++ b/man/vgimport.8_des
@@ -0,0 +1,5 @@
+vgimport makes exported VGs known to the system again, perhaps after
+moving the PVs from a different system.
+
+vgexport clears the VG system ID, and vgimport sets the VG system ID to
+match the host running vgimport (if the host has a system ID).
diff --git a/man/vgimport.8_end b/man/vgimport.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgimport.8_pregen b/man/vgimport.8_pregen
new file mode 100644
index 0000000..e71436f
--- /dev/null
+++ b/man/vgimport.8_pregen
@@ -0,0 +1,372 @@
+.TH VGIMPORT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgimport \- Register exported volume group with system
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgimport\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgimport makes exported VGs known to the system again, perhaps after
+moving the PVs from a different system.
+
+vgexport clears the VG system ID, and vgimport sets the VG system ID to
+match the host running vgimport (if the host has a system ID).
+
+.P
+.SH USAGE
+.br
+.P
+.
+Import specified VGs.
+.br
+.P
+\fBvgimport\fP \fIVG\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Import all VGs.
+.br
+.P
+\fBvgimport\fP \fB-a\fP|\fB--all\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgimportclone.8.des b/man/vgimportclone.8.des
deleted file mode 100644
index a5002da..0000000
--- a/man/vgimportclone.8.des
+++ /dev/null
@@ -1,6 +0,0 @@
-vgimportclone imports a VG from duplicated PVs, e.g. created by a hardware
-snapshot of existing PVs.
-
-A duplicated VG cannot used until it is made to coexist with the original
-VG. vgimportclone renames the VG associated with the specified PVs and
-changes the associated VG and PV UUIDs.
diff --git a/man/vgimportclone.8.end b/man/vgimportclone.8.end
deleted file mode 100644
index 83394b5..0000000
--- a/man/vgimportclone.8.end
+++ /dev/null
@@ -1,9 +0,0 @@
-.SH EXAMPLES
-
-An original VG "vg00" has PVs "/dev/sda" and "/dev/sdb".
-The corresponding PVs from a hardware snapshot are "/dev/sdc" and "/dev/sdd".
-Rename the VG associated with "/dev/sdc" and "/dev/sdd" from "vg00" to "vg00_snap"
-(and change associated UUIDs).
-.br
-.B vgimportclone \-\-basevgname vg00_snap /dev/sdc /dev/sdd
-
diff --git a/man/vgimportclone.8_des b/man/vgimportclone.8_des
new file mode 100644
index 0000000..a5002da
--- /dev/null
+++ b/man/vgimportclone.8_des
@@ -0,0 +1,6 @@
+vgimportclone imports a VG from duplicated PVs, e.g. created by a hardware
+snapshot of existing PVs.
+
+A duplicated VG cannot used until it is made to coexist with the original
+VG. vgimportclone renames the VG associated with the specified PVs and
+changes the associated VG and PV UUIDs.
diff --git a/man/vgimportclone.8_end b/man/vgimportclone.8_end
new file mode 100644
index 0000000..83394b5
--- /dev/null
+++ b/man/vgimportclone.8_end
@@ -0,0 +1,9 @@
+.SH EXAMPLES
+
+An original VG "vg00" has PVs "/dev/sda" and "/dev/sdb".
+The corresponding PVs from a hardware snapshot are "/dev/sdc" and "/dev/sdd".
+Rename the VG associated with "/dev/sdc" and "/dev/sdd" from "vg00" to "vg00_snap"
+(and change associated UUIDs).
+.br
+.B vgimportclone \-\-basevgname vg00_snap /dev/sdc /dev/sdd
+
diff --git a/man/vgimportclone.8_pregen b/man/vgimportclone.8_pregen
new file mode 100644
index 0000000..280e2a8
--- /dev/null
+++ b/man/vgimportclone.8_pregen
@@ -0,0 +1,330 @@
+.TH VGIMPORTCLONE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgimportclone \- Import a VG from cloned PVs
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgimportclone\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgimportclone imports a VG from duplicated PVs, e.g. created by a hardware
+snapshot of existing PVs.
+
+A duplicated VG cannot used until it is made to coexist with the original
+VG. vgimportclone renames the VG associated with the specified PVs and
+changes the associated VG and PV UUIDs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgimportclone\fP \fIPV\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-n\fP|\fB--basevgname\fP \fIVG\fP ]
+.ad b
+.br
+.ad l
+[ \fB-i\fP|\fB--import\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-n\fP|\fB--basevgname\fP \fIString\fP
+.br
+By default the snapshot VG will be renamed to the original name plus a
+numeric suffix to avoid duplicate naming (e.g. 'test_vg' would be renamed
+to 'test_vg1'). This option will override the base VG name that is
+used for all VG renames. If a VG already exists with the specified name
+a numeric suffix will be added (like the previous example) to make it unique.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-i\fP|\fB--import\fP
+.br
+Import exported VGs. Otherwise VGs that have been exported
+will not be changed (nor will their associated PVs).
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+An original VG "vg00" has PVs "/dev/sda" and "/dev/sdb".
+The corresponding PVs from a hardware snapshot are "/dev/sdc" and "/dev/sdd".
+Rename the VG associated with "/dev/sdc" and "/dev/sdd" from "vg00" to "vg00_snap"
+(and change associated UUIDs).
+.br
+.B vgimportclone \-\-basevgname vg00_snap /dev/sdc /dev/sdd
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgmerge.8.des b/man/vgmerge.8.des
deleted file mode 100644
index ff7c177..0000000
--- a/man/vgmerge.8.des
+++ /dev/null
@@ -1,3 +0,0 @@
-vgmerge merges two existing VGs. The inactive source VG is merged into the
-destination VG if physical extent sizes are equal and PV and LV summaries
-of both VGs fit into the destination VG's limits.
diff --git a/man/vgmerge.8.end b/man/vgmerge.8.end
deleted file mode 100644
index 9787c6a..0000000
--- a/man/vgmerge.8.end
+++ /dev/null
@@ -1,7 +0,0 @@
-.SH EXAMPLES
-
-Merge an inactive VG named "vg00" into the active or inactive VG named
-"databases", giving verbose runtime information.
-.br
-.B vgmerge \-v databases vg00
-
diff --git a/man/vgmerge.8_des b/man/vgmerge.8_des
new file mode 100644
index 0000000..ff7c177
--- /dev/null
+++ b/man/vgmerge.8_des
@@ -0,0 +1,3 @@
+vgmerge merges two existing VGs. The inactive source VG is merged into the
+destination VG if physical extent sizes are equal and PV and LV summaries
+of both VGs fit into the destination VG's limits.
diff --git a/man/vgmerge.8_end b/man/vgmerge.8_end
new file mode 100644
index 0000000..9787c6a
--- /dev/null
+++ b/man/vgmerge.8_end
@@ -0,0 +1,7 @@
+.SH EXAMPLES
+
+Merge an inactive VG named "vg00" into the active or inactive VG named
+"databases", giving verbose runtime information.
+.br
+.B vgmerge \-v databases vg00
+
diff --git a/man/vgmerge.8_pregen b/man/vgmerge.8_pregen
new file mode 100644
index 0000000..ffa9929
--- /dev/null
+++ b/man/vgmerge.8_pregen
@@ -0,0 +1,315 @@
+.TH VGMERGE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgmerge \- Merge volume groups
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgmerge\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgmerge merges two existing VGs. The inactive source VG is merged into the
+destination VG if physical extent sizes are equal and PV and LV summaries
+of both VGs fit into the destination VG's limits.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgmerge\fP \fIVG\fP \fIVG\fP
+.br
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--list\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--list\fP
+.br
+Display merged destination VG like vgdisplay -v.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Merge an inactive VG named "vg00" into the active or inactive VG named
+"databases", giving verbose runtime information.
+.br
+.B vgmerge \-v databases vg00
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgmknodes.8.des b/man/vgmknodes.8.des
deleted file mode 100644
index a93d629..0000000
--- a/man/vgmknodes.8.des
+++ /dev/null
@@ -1,5 +0,0 @@
-vgmknodes checks the LVM device nodes in /dev that are needed for active
-LVs and creates any that are missing and removes unused ones.
-
-This command should not usually be needed if all the system components are
-interoperating correctly.
diff --git a/man/vgmknodes.8_des b/man/vgmknodes.8_des
new file mode 100644
index 0000000..a93d629
--- /dev/null
+++ b/man/vgmknodes.8_des
@@ -0,0 +1,5 @@
+vgmknodes checks the LVM device nodes in /dev that are needed for active
+LVs and creates any that are missing and removes unused ones.
+
+This command should not usually be needed if all the system components are
+interoperating correctly.
diff --git a/man/vgmknodes.8_end b/man/vgmknodes.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgmknodes.8_pregen b/man/vgmknodes.8_pregen
new file mode 100644
index 0000000..6f785b2
--- /dev/null
+++ b/man/vgmknodes.8_pregen
@@ -0,0 +1,346 @@
+.TH VGMKNODES 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgmknodes \- Create the special files for volume group devices in /dev
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgmknodes\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgmknodes checks the LVM device nodes in /dev that are needed for active
+LVs and creates any that are missing and removes unused ones.
+
+This command should not usually be needed if all the system components are
+interoperating correctly.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgmknodes\fP
+.br
+.RS 4
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--refresh\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fILV\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--refresh\fP
+.br
+If the LV is active, reload its metadata.
+This is not necessary in normal operation, but may be useful
+if something has gone wrong, or if some form of manual LV
+sharing is being used.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fILV\fP
+.br
+Logical Volume name.  See \fBlvm\fP(8) for valid names.
+An LV positional arg generally includes the VG name and LV name, e.g. VG/LV.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgreduce.8.des b/man/vgreduce.8.des
deleted file mode 100644
index 1bcdaf9..0000000
--- a/man/vgreduce.8.des
+++ /dev/null
@@ -1 +0,0 @@
-vgreduce removes one or more unused PVs from a VG.
diff --git a/man/vgreduce.8_des b/man/vgreduce.8_des
new file mode 100644
index 0000000..1bcdaf9
--- /dev/null
+++ b/man/vgreduce.8_des
@@ -0,0 +1 @@
+vgreduce removes one or more unused PVs from a VG.
diff --git a/man/vgreduce.8_end b/man/vgreduce.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgreduce.8_pregen b/man/vgreduce.8_pregen
new file mode 100644
index 0000000..548188b
--- /dev/null
+++ b/man/vgreduce.8_pregen
@@ -0,0 +1,483 @@
+.TH VGREDUCE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgreduce \- Remove physical volume(s) from a volume group
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgreduce\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.P
+.ad l
+ \fB-a\fP|\fB--all\fP
+.ad b
+.br
+.ad l
+ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+    \fB--commandprofile\fP \fIString\fP
+.ad b
+.br
+.ad l
+    \fB--config\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-d\fP|\fB--debug\fP
+.ad b
+.br
+.ad l
+    \fB--driverloaded\fP \fBy\fP|\fBn\fP
+.ad b
+.br
+.ad l
+ \fB-f\fP|\fB--force\fP
+.ad b
+.br
+.ad l
+ \fB-h\fP|\fB--help\fP
+.ad b
+.br
+.ad l
+    \fB--longhelp\fP
+.ad b
+.br
+.ad l
+    \fB--mirrorsonly\fP
+.ad b
+.br
+.ad l
+    \fB--profile\fP \fIString\fP
+.ad b
+.br
+.ad l
+ \fB-q\fP|\fB--quiet\fP
+.ad b
+.br
+.ad l
+    \fB--removemissing\fP
+.ad b
+.br
+.ad l
+    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.ad b
+.br
+.ad l
+ \fB-t\fP|\fB--test\fP
+.ad b
+.br
+.ad l
+ \fB-v\fP|\fB--verbose\fP
+.ad b
+.br
+.ad l
+    \fB--version\fP
+.ad b
+.br
+.ad l
+ \fB-y\fP|\fB--yes\fP
+.ad b
+
+.P
+
+.SH DESCRIPTION
+vgreduce removes one or more unused PVs from a VG.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Remove a PV from a VG.
+.br
+.P
+\fBvgreduce\fP \fIVG\fP \fIPV\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Remove all unused PVs from a VG.
+.br
+.P
+\fBvgreduce\fP \fB-a\fP|\fB--all\fP \fIVG\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Remove all missing PVs from a VG.
+.br
+.P
+\fBvgreduce\fP \fB--removemissing\fP \fIVG\fP
+.br
+.RS 4
+.ad l
+[    \fB--mirrorsonly\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+--
+
+.br
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+Removes all empty PVs if none are named on the command line.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--mirrorsonly\fP
+.br
+Only remove missing PVs from mirror LVs.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--removemissing\fP
+.br
+Removes all missing PVs from the VG, if there are no LVs allocated
+on them. This resumes normal operation of the VG (new LVs may again
+be created, changed and so on).
+If this is not possible because LVs are referencing the missing PVs,
+this option can be combined with --force to have the command remove
+any partial LVs. In this case, any LVs and dependent snapshots that
+were partly on the missing disks are removed completely, including
+those parts on disks that are still present.
+If LVs spanned several disks, including ones that are lost, salvaging
+some data first may be possible by activating LVs in partial mode.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgremove.8.des b/man/vgremove.8.des
deleted file mode 100644
index 6414c73..0000000
--- a/man/vgremove.8.des
+++ /dev/null
@@ -1,9 +0,0 @@
-vgremove removes one or more VGs. If LVs exist in the VG, a prompt is used
-to confirm LV removal.
-
-If one or more PVs in the VG are lost, consider
-\fBvgreduce \-\-removemissing\fP to make the VG
-metadata consistent again.
-
-Repeat the force option (\fB-ff\fP) to forcibly remove LVs in the VG
-without confirmation.
diff --git a/man/vgremove.8_des b/man/vgremove.8_des
new file mode 100644
index 0000000..6414c73
--- /dev/null
+++ b/man/vgremove.8_des
@@ -0,0 +1,9 @@
+vgremove removes one or more VGs. If LVs exist in the VG, a prompt is used
+to confirm LV removal.
+
+If one or more PVs in the VG are lost, consider
+\fBvgreduce \-\-removemissing\fP to make the VG
+metadata consistent again.
+
+Repeat the force option (\fB-ff\fP) to forcibly remove LVs in the VG
+without confirmation.
diff --git a/man/vgremove.8_end b/man/vgremove.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgremove.8_pregen b/man/vgremove.8_pregen
new file mode 100644
index 0000000..ab1aa90
--- /dev/null
+++ b/man/vgremove.8_pregen
@@ -0,0 +1,364 @@
+.TH VGREMOVE 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgremove \- Remove volume group(s)
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgremove\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgremove removes one or more VGs. If LVs exist in the VG, a prompt is used
+to confirm LV removal.
+
+If one or more PVs in the VG are lost, consider
+\fBvgreduce \-\-removemissing\fP to make the VG
+metadata consistent again.
+
+Repeat the force option (\fB-ff\fP) to forcibly remove LVs in the VG
+without confirmation.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgremove\fP \fIVG\fP|\fITag\fP|\fISelect\fP ...
+.br
+.RS 4
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noudevsync\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--noudevsync\fP
+.br
+Disables udev synchronisation. The process will not wait for notification
+from udev. It will continue irrespective of any possible udev processing
+in the background. Only use this if udev is not running or has rules that
+ignore the devices LVM creates.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fISelect\fP
+.br
+Select indicates that a required positional parameter can
+be omitted if the \fB--select\fP option is used.
+No arg appears in this position.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgrename.8.des b/man/vgrename.8.des
deleted file mode 100644
index 2384b6b..0000000
--- a/man/vgrename.8.des
+++ /dev/null
@@ -1,9 +0,0 @@
-vgrename renames a VG.
-
-All VGs visible to a system need to have different names, otherwise many
-LVM commands will refuse to run or give warning messages. VGs with the
-same name can occur when disks are moved between machines, or filters are
-changed. If a newly connected disk has a VG with the same name as the VG
-containing the root filesystem, the machine may not boot correctly. When
-two VGs have the same name, the VG UUID can be used in place of the source
-VG name.
diff --git a/man/vgrename.8.end b/man/vgrename.8.end
deleted file mode 100644
index 98eeb53..0000000
--- a/man/vgrename.8.end
+++ /dev/null
@@ -1,10 +0,0 @@
-.SH EXAMPLES
-
-Rename VG "vg02" to "myvg":
-.br
-.B vgrename "vg02" "myvg"
-
-Rename the VG with the specified UUID to "myvg".
-.br
-.B vgrename Zvlifi\-Ep3t\-e0Ng\-U42h\-o0ye\-KHu1\-nl7Ns4 myvg
-
diff --git a/man/vgrename.8_des b/man/vgrename.8_des
new file mode 100644
index 0000000..2384b6b
--- /dev/null
+++ b/man/vgrename.8_des
@@ -0,0 +1,9 @@
+vgrename renames a VG.
+
+All VGs visible to a system need to have different names, otherwise many
+LVM commands will refuse to run or give warning messages. VGs with the
+same name can occur when disks are moved between machines, or filters are
+changed. If a newly connected disk has a VG with the same name as the VG
+containing the root filesystem, the machine may not boot correctly. When
+two VGs have the same name, the VG UUID can be used in place of the source
+VG name.
diff --git a/man/vgrename.8_end b/man/vgrename.8_end
new file mode 100644
index 0000000..98eeb53
--- /dev/null
+++ b/man/vgrename.8_end
@@ -0,0 +1,10 @@
+.SH EXAMPLES
+
+Rename VG "vg02" to "myvg":
+.br
+.B vgrename "vg02" "myvg"
+
+Rename the VG with the specified UUID to "myvg".
+.br
+.B vgrename Zvlifi\-Ep3t\-e0Ng\-U42h\-o0ye\-KHu1\-nl7Ns4 myvg
+
diff --git a/man/vgrename.8_pregen b/man/vgrename.8_pregen
new file mode 100644
index 0000000..a9055d0
--- /dev/null
+++ b/man/vgrename.8_pregen
@@ -0,0 +1,361 @@
+.TH VGRENAME 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgrename \- Rename a volume group
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgrename\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgrename renames a VG.
+
+All VGs visible to a system need to have different names, otherwise many
+LVM commands will refuse to run or give warning messages. VGs with the
+same name can occur when disks are moved between machines, or filters are
+changed. If a newly connected disk has a VG with the same name as the VG
+containing the root filesystem, the machine may not boot correctly. When
+two VGs have the same name, the VG UUID can be used in place of the source
+VG name.
+
+.P
+.SH USAGE
+.br
+.P
+.
+Rename a VG.
+.br
+.P
+\fBvgrename\fP \fIVG\fP \fIVG\fP\fI_new\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Rename a VG by specifying the VG UUID.
+.br
+.P
+\fBvgrename\fP \fIString\fP \fIVG\fP\fI_new\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-f\fP|\fB--force\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-f\fP|\fB--force\fP ...
+.br
+Override various checks, confirmations and protections.
+Use with extreme caution.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH EXAMPLES
+
+Rename VG "vg02" to "myvg":
+.br
+.B vgrename "vg02" "myvg"
+
+Rename the VG with the specified UUID to "myvg".
+.br
+.B vgrename Zvlifi\-Ep3t\-e0Ng\-U42h\-o0ye\-KHu1\-nl7Ns4 myvg
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgs.8.des b/man/vgs.8.des
deleted file mode 100644
index 15bdb97..0000000
--- a/man/vgs.8.des
+++ /dev/null
@@ -1 +0,0 @@
-vgs produces formatted output about VGs.
diff --git a/man/vgs.8.end b/man/vgs.8.end
deleted file mode 100644
index b8cda26..0000000
--- a/man/vgs.8.end
+++ /dev/null
@@ -1,17 +0,0 @@
-.SH NOTES
-.
-The vg_attr bits are:
-.IP 1 3
-Permissions: (w)riteable, (r)ead-only
-.IP 2 3
-Resi(z)eable
-.IP 3 3
-E(x)ported
-.IP 4 3
-(p)artial: one or more physical volumes belonging to the volume group
-are missing from the system
-.IP 5 3
-Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere
-.IP 6 3
-(c)lustered, (s)hared
-
diff --git a/man/vgs.8_des b/man/vgs.8_des
new file mode 100644
index 0000000..15bdb97
--- /dev/null
+++ b/man/vgs.8_des
@@ -0,0 +1 @@
+vgs produces formatted output about VGs.
diff --git a/man/vgs.8_end b/man/vgs.8_end
new file mode 100644
index 0000000..b8cda26
--- /dev/null
+++ b/man/vgs.8_end
@@ -0,0 +1,17 @@
+.SH NOTES
+.
+The vg_attr bits are:
+.IP 1 3
+Permissions: (w)riteable, (r)ead-only
+.IP 2 3
+Resi(z)eable
+.IP 3 3
+E(x)ported
+.IP 4 3
+(p)artial: one or more physical volumes belonging to the volume group
+are missing from the system
+.IP 5 3
+Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere
+.IP 6 3
+(c)lustered, (s)hared
+
diff --git a/man/vgs.8_pregen b/man/vgs.8_pregen
new file mode 100644
index 0000000..c00460b
--- /dev/null
+++ b/man/vgs.8_pregen
@@ -0,0 +1,642 @@
+.TH VGS 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgs \- Display information about volume groups
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgs\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+    [ \fIposition_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgs produces formatted output about VGs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgs\fP
+.br
+.RS 4
+.ad l
+[ \fB-a\fP|\fB--all\fP ]
+.ad b
+.br
+.ad l
+[ \fB-o\fP|\fB--options\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[ \fB-S\fP|\fB--select\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[ \fB-O\fP|\fB--sort\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--aligned\fP ]
+.ad b
+.br
+.ad l
+[    \fB--binary\fP ]
+.ad b
+.br
+.ad l
+[    \fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP ]
+.ad b
+.br
+.ad l
+[    \fB--foreign\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignoreskippedcluster\fP ]
+.ad b
+.br
+.ad l
+[    \fB--logonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nameprefixes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--noheadings\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nolocking\fP ]
+.ad b
+.br
+.ad l
+[    \fB--nosuffix\fP ]
+.ad b
+.br
+.ad l
+[    \fB--readonly\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+.ad l
+[    \fB--rows\fP ]
+.ad b
+.br
+.ad l
+[    \fB--separator\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--shared\fP ]
+.ad b
+.br
+.ad l
+[    \fB--trustcache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unbuffered\fP ]
+.ad b
+.br
+.ad l
+[    \fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP ]
+.ad b
+.br
+.ad l
+[    \fB--unquoted\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+.RS 4
+[ \fIVG\fP|\fITag\fP ... ]
+.RE
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--aligned\fP
+.br
+Use with --separator to align the output columns
+.ad b
+
+.HP
+.ad l
+\fB-a\fP|\fB--all\fP
+.br
+List all VGs. Equivalent to not specifying any VGs.
+.ad b
+
+.HP
+.ad l
+\fB--binary\fP
+.br
+Use binary values "0" or "1" instead of descriptive literal values
+for columns that have exactly two valid values to report (not counting
+the "unknown" value which denotes that the value could not be determined).
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB--configreport\fP \fBlog\fP|\fBvg\fP|\fBlv\fP|\fBpv\fP|\fBpvseg\fP|\fBseg\fP
+.br
+See lvmreport(7).
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB--foreign\fP
+.br
+Report/display foreign VGs that would otherwise be skipped.
+See lvmsystemid(7) for more information about foreign VGs.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--ignoreskippedcluster\fP
+.br
+Use to avoid exiting with an non-zero status code if the command is run
+without clustered locking and clustered VGs are skipped.
+.ad b
+
+.HP
+.ad l
+\fB--logonly\fP
+.br
+Suppress command report and display only log report.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--nameprefixes\fP
+.br
+Add an "LVM2_" prefix plus the field name to the output. Useful
+with --noheadings to produce a list of field=value pairs that can
+be used to set environment variables (for example, in udev rules).
+.ad b
+
+.HP
+.ad l
+\fB--noheadings\fP
+.br
+Suppress the headings line that is normally the first line of output.
+Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--nolocking\fP
+.br
+Disable locking.
+.ad b
+
+.HP
+.ad l
+\fB--nosuffix\fP
+.br
+Suppress the suffix on output sizes. Use with --units
+(except h and H) if processing the output.
+.ad b
+
+.HP
+.ad l
+\fB-o\fP|\fB--options\fP \fIString\fP
+.br
+Comma-separated, ordered list of fields to display in columns.
+String arg syntax is: [+|-|#]Field1[,Field2 ...]
+The prefix \fB+\fP will append the specified fields to the default fields,
+\fB-\fP will remove the specified fields from the default fields, and
+\fB#\fP will compact specified fields (removing them when empty for all rows.)
+Use \fB-o help\fP to view the list of all available fields.
+The -o option can be repeated, providing several lists.
+These lists are evaluated from left to right.
+Use field name \fBlv_all\fP to view all LV fields,
+\fBvg_all\fP all VG fields,
+\fBpv_all\fP all PV fields,
+\fBpvseg_all\fP all PV segment fields,
+\fBseg_all\fP all LV segment fields, and
+\fBpvseg_all\fP all PV segment columns.
+See the lvm.conf report section for more config options.
+See lvmreport(7) for more information about reporting.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--readonly\fP
+.br
+Run the command in a special read-only mode which will read on-disk
+metadata without needing to take any locks. This can be used to peek
+inside metadata used by a virtual machine image while the virtual
+machine is running.
+It can also be used to peek inside the metadata of clustered VGs
+when clustered locking is not configured or running. No attempt
+will be made to communicate with the device-mapper kernel driver, so
+this option is unable to report whether or not LVs are
+actually in use.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB--rows\fP
+.br
+Output columns as rows.
+.ad b
+
+.HP
+.ad l
+\fB-S\fP|\fB--select\fP \fIString\fP
+.br
+Select objects for processing and reporting based on specified criteria.
+The criteria syntax is described by \fB--select help\fP and \fBlvmreport\fP(7).
+For reporting commands, one row is displayed for each object matching the criteria.
+See \fB--options help\fP for selectable object fields.
+Rows can be displayed with an additional "selected" field (-o selected)
+showing 1 if the row matches the selection and 0 otherwise.
+For non-reporting commands which process LVM entities, the selection is
+used to choose items to process.
+.ad b
+
+.HP
+.ad l
+\fB--separator\fP \fIString\fP
+.br
+String to use to separate each column. Useful if grepping the output.
+.ad b
+
+.HP
+.ad l
+\fB--shared\fP
+.br
+Report/display shared VGs that would otherwise be skipped when
+lvmlockd is not being used on the host.
+See lvmlockd(8) for more information about shared VGs.
+.ad b
+
+.HP
+.ad l
+\fB-O\fP|\fB--sort\fP \fIString\fP
+.br
+Comma-separated ordered list of columns to sort by. Replaces the default
+selection. Precede any column with \fB-\fP for a reverse sort on that column.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB--trustcache\fP
+.br
+Avoids certain device scanning during command processing. Do not use.
+.ad b
+
+.HP
+.ad l
+\fB--unbuffered\fP
+.br
+Produce output immediately without sorting or aligning the columns properly.
+.ad b
+
+.HP
+.ad l
+\fB--units\fP \fBr\fP|\fBR\fP|\fBh\fP|\fBH\fP|\fBb\fP|\fBB\fP|\fBs\fP|\fBS\fP|\fBk\fP|\fBK\fP|\fBm\fP|\fBM\fP|\fBg\fP|\fBG\fP|\fBt\fP|\fBT\fP|\fBp\fP|\fBP\fP|\fBe\fP|\fBE\fP
+.br
+All sizes are output in these units:
+human-(r)eadable with '<' rounding indicator,
+(h)uman-readable, (b)ytes, (s)ectors, (k)ilobytes, (m)egabytes,
+(g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
+Capitalise to use multiples of 1000 (S.I.) instead of 1024.
+Custom units can be specified, e.g. --units 3M.
+.ad b
+
+.HP
+.ad l
+\fB--unquoted\fP
+.br
+When used with --nameprefixes, output values in the field=value
+pairs are not quoted.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fITag\fP
+.br
+Tag name.  See \fBlvm\fP(8) for information about tag names and using tags
+in place of a VG, LV or PV.
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH NOTES
+.
+The vg_attr bits are:
+.IP 1 3
+Permissions: (w)riteable, (r)ead-only
+.IP 2 3
+Resi(z)eable
+.IP 3 3
+E(x)ported
+.IP 4 3
+(p)artial: one or more physical volumes belonging to the volume group
+are missing from the system
+.IP 5 3
+Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere
+.IP 6 3
+(c)lustered, (s)hared
+
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgscan.8.des b/man/vgscan.8.des
deleted file mode 100644
index e8041ed..0000000
--- a/man/vgscan.8.des
+++ /dev/null
@@ -1 +0,0 @@
-vgscan scans all supported LVM block devices in the system for VGs.
diff --git a/man/vgscan.8_des b/man/vgscan.8_des
new file mode 100644
index 0000000..e8041ed
--- /dev/null
+++ b/man/vgscan.8_des
@@ -0,0 +1 @@
+vgscan scans all supported LVM block devices in the system for VGs.
diff --git a/man/vgscan.8_end b/man/vgscan.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgscan.8_pregen b/man/vgscan.8_pregen
new file mode 100644
index 0000000..57691ef
--- /dev/null
+++ b/man/vgscan.8_pregen
@@ -0,0 +1,356 @@
+.TH VGSCAN 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgscan \- Search for all volume groups
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgscan\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgscan scans all supported LVM block devices in the system for VGs.
+
+.P
+.SH USAGE
+.br
+.P
+.
+\fBvgscan\fP
+.br
+.RS 4
+.ad l
+[ \fB-P\fP|\fB--partial\fP ]
+.ad b
+.br
+.ad l
+[    \fB--cache\fP ]
+.ad b
+.br
+.ad l
+[    \fB--ignorelockingfailure\fP ]
+.ad b
+.br
+.ad l
+[    \fB--mknodes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--notifydbus\fP ]
+.ad b
+.br
+.ad l
+[    \fB--reportformat\fP \fBbasic\fP|\fBjson\fP ]
+.ad b
+.br
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--cache\fP
+.br
+Scan all devices and send the metadata to lvmetad.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--ignorelockingfailure\fP
+.br
+Allows a command to continue with read-only metadata
+operations after locking failures.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB--mknodes\fP
+.br
+Also checks the LVM special files in /dev that are needed for active
+LVs and creates any missing ones and removes unused ones.
+.ad b
+
+.HP
+.ad l
+\fB--notifydbus\fP
+.br
+Send a notification to D-Bus. The command will exit with an error
+if LVM is not built with support for D-Bus notification, or if the
+notify_dbus config setting is disabled.
+.ad b
+
+.HP
+.ad l
+\fB-P\fP|\fB--partial\fP
+.br
+When set, the tools will do their best to provide access to VGs
+that are only partially available (one or more PVs belonging
+to the VG are missing from the system). Metadata may not be
+changed with this option.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB--reportformat\fP \fBbasic\fP|\fBjson\fP
+.br
+Overrides current output format for reports which is defined globally by
+the report/output_format setting in lvm.conf.
+\fBbasic\fP is the original format with columns and rows.
+If there is more than one report per command, each report is prefixed
+with the report name for identification. \fBjson\fP produces report
+output in JSON format. See \fBlvmreport\fP(7) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+
diff --git a/man/vgsplit.8.des b/man/vgsplit.8.des
deleted file mode 100644
index 29eb5c5..0000000
--- a/man/vgsplit.8.des
+++ /dev/null
@@ -1,13 +0,0 @@
-vgsplit moves one or more PVs from a source VG to a destination VG. The
-PVs can be specified explicitly or implicitly by naming an LV, in which
-case on PVs underlying the LV are moved.
-
-If the destination VG does not exist, a new VG is created (command options
-can be used to specify properties of the new VG, also see
-\fBvgcreate\fP(8).)
-
-LVs cannot be split between VGs; each LV must be entirely on the PVs in
-the source or destination VG.
-
-vgsplit can only move complete PVs. (See \fBpvmove\fP(8) for moving part
-of a PV.)
diff --git a/man/vgsplit.8_des b/man/vgsplit.8_des
new file mode 100644
index 0000000..29eb5c5
--- /dev/null
+++ b/man/vgsplit.8_des
@@ -0,0 +1,13 @@
+vgsplit moves one or more PVs from a source VG to a destination VG. The
+PVs can be specified explicitly or implicitly by naming an LV, in which
+case on PVs underlying the LV are moved.
+
+If the destination VG does not exist, a new VG is created (command options
+can be used to specify properties of the new VG, also see
+\fBvgcreate\fP(8).)
+
+LVs cannot be split between VGs; each LV must be entirely on the PVs in
+the source or destination VG.
+
+vgsplit can only move complete PVs. (See \fBpvmove\fP(8) for moving part
+of a PV.)
diff --git a/man/vgsplit.8_end b/man/vgsplit.8_end
new file mode 100644
index 0000000..e69de29
diff --git a/man/vgsplit.8_pregen b/man/vgsplit.8_pregen
new file mode 100644
index 0000000..a45db0b
--- /dev/null
+++ b/man/vgsplit.8_pregen
@@ -0,0 +1,444 @@
+.TH VGSPLIT 8 "LVM TOOLS 2.02.169(2)-git (2016-11-30)" "Red Hat, Inc."
+.SH NAME
+.
+vgsplit \- Move physical volumes into a new or existing volume group
+.P
+.
+.SH SYNOPSIS
+.br
+.P
+.
+\fBvgsplit\fP \fIoption_args\fP \fIposition_args\fP
+.br
+    [ \fIoption_args\fP ]
+.br
+.P
+
+.SH DESCRIPTION
+vgsplit moves one or more PVs from a source VG to a destination VG. The
+PVs can be specified explicitly or implicitly by naming an LV, in which
+case on PVs underlying the LV are moved.
+
+If the destination VG does not exist, a new VG is created (command options
+can be used to specify properties of the new VG, also see
+\fBvgcreate\fP(8).)
+
+LVs cannot be split between VGs; each LV must be entirely on the PVs in
+the source or destination VG.
+
+vgsplit can only move complete PVs. (See \fBpvmove\fP(8) for moving part
+of a PV.)
+
+.P
+.SH USAGE
+.br
+.P
+.
+Split a VG by specified PVs.
+.br
+.P
+\fBvgsplit\fP \fIVG\fP \fIVG\fP \fIPV\fP ...
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Split a VG by PVs in a specified LV.
+.br
+.P
+\fBvgsplit\fP \fB-n\fP|\fB--name\fP \fILV\fP \fIVG\fP \fIVG\fP
+.br
+.RS 4
+[ COMMON_OPTIONS ]
+.RE
+.br
+
+
+Common options for command:
+.
+.RS 4
+.ad l
+[ \fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[ \fB-l\fP|\fB--maxlogicalvolumes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP ]
+.ad b
+.br
+.ad l
+[ \fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP ]
+.ad b
+.br
+.ad l
+[    \fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP ]
+.ad b
+.br
+.ad l
+[    \fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP ]
+.ad b
+
+.RE
+.br
+
+Common options for lvm:
+.
+.RS 4
+.ad l
+[ \fB-d\fP|\fB--debug\fP ]
+.ad b
+.br
+.ad l
+[ \fB-h\fP|\fB--help\fP ]
+.ad b
+.br
+.ad l
+[ \fB-q\fP|\fB--quiet\fP ]
+.ad b
+.br
+.ad l
+[ \fB-t\fP|\fB--test\fP ]
+.ad b
+.br
+.ad l
+[ \fB-v\fP|\fB--verbose\fP ]
+.ad b
+.br
+.ad l
+[ \fB-y\fP|\fB--yes\fP ]
+.ad b
+.br
+.ad l
+[    \fB--commandprofile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--config\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--driverloaded\fP \fBy\fP|\fBn\fP ]
+.ad b
+.br
+.ad l
+[    \fB--longhelp\fP ]
+.ad b
+.br
+.ad l
+[    \fB--profile\fP \fIString\fP ]
+.ad b
+.br
+.ad l
+[    \fB--version\fP ]
+.ad b
+
+.RE
+
+.SH OPTIONS
+.br
+
+.HP
+.ad l
+\fB--alloc\fP \fBcontiguous\fP|\fBcling\fP|\fBcling_by_tags\fP|\fBnormal\fP|\fBanywhere\fP|\fBinherit\fP
+.br
+Determines the allocation policy when a command needs to allocate
+Physical Extents (PEs) from the VG. Each VG and LV has an allocation policy
+which can be changed with vgchange/lvchange, or overriden on the
+command line.
+\fBnormal\fP applies common sense rules such as not placing parallel stripes
+on the same PV.
+\fBinherit\fP applies the VG policy to an LV.
+\fBcontiguous\fP requires new PEs be placed adjacent to existing PEs.
+\fBcling\fP places new PEs on the same PV as existing PEs in the same
+stripe of the LV.
+If there are sufficient PEs for an allocation, but normal does not
+use them, \fBanywhere\fP will use them even if it reduces performance,
+e.g. by placing two stripes on the same PV.
+Optional positional PV args on the command line can also be used to limit
+which PVs the command will use for allocation.
+See \fBlvm\fP(8) for more information about allocation.
+.ad b
+
+.HP
+.ad l
+\fB-A\fP|\fB--autobackup\fP \fBy\fP|\fBn\fP
+.br
+Specifies if metadata should be backed up automatically after a change.
+Enabling this is strongly advised! See vgcfgbackup(8) for more information.
+.ad b
+
+.HP
+.ad l
+\fB-c\fP|\fB--clustered\fP \fBy\fP|\fBn\fP
+.br
+Specifies the clustered property of the new VG.
+.ad b
+
+.HP
+.ad l
+\fB--commandprofile\fP \fIString\fP
+.br
+The command profile to use for command configuration.
+See \fBlvm.conf\fP(5) for more information about profiles.
+.ad b
+
+.HP
+.ad l
+\fB--config\fP \fIString\fP
+.br
+Config settings for the command. These override lvm.conf settings.
+The String arg uses the same format as lvm.conf,
+or may use section/field syntax.
+See \fBlvm.conf\fP(5) for more information about config.
+.ad b
+
+.HP
+.ad l
+\fB-d\fP|\fB--debug\fP ...
+.br
+Set debug level. Repeat from 1 to 6 times to increase the detail of
+messages sent to the log file and/or syslog (if configured).
+.ad b
+
+.HP
+.ad l
+\fB--driverloaded\fP \fBy\fP|\fBn\fP
+.br
+If set to no, the command will not attempt to use device-mapper.
+For testing and debugging.
+.ad b
+
+.HP
+.ad l
+\fB-h\fP|\fB--help\fP
+.br
+Display help text.
+.ad b
+
+.HP
+.ad l
+\fB--longhelp\fP
+.br
+Display long help text.
+.ad b
+
+.HP
+.ad l
+\fB-l\fP|\fB--maxlogicalvolumes\fP \fINumber\fP
+.br
+Sets the maximum number of LVs allowed in a VG.
+.ad b
+
+.HP
+.ad l
+\fB-p\fP|\fB--maxphysicalvolumes\fP \fINumber\fP
+.br
+Sets the maximum number of PVs that can belong to the VG.
+The value 0 removes any limitation.
+For large numbers of PVs, also see options --pvmetadatacopies,
+and --vgmetadatacopies for improving performance.
+.ad b
+
+.HP
+.ad l
+\fB-M\fP|\fB--metadatatype\fP \fBlvm2\fP|\fBlvm1\fP
+.br
+Specifies the type of on-disk metadata to use.
+\fBlvm2\fP (or just \fB2\fP) is the current, standard format.
+\fBlvm1\fP (or just \fB1\fP) is a historical format that
+can be used for accessing old data.
+.ad b
+
+.HP
+.ad l
+\fB-n\fP|\fB--name\fP \fIString\fP
+.br
+Move only PVs used by the named LV.
+.ad b
+
+.HP
+.ad l
+\fB--profile\fP \fIString\fP
+.br
+An alias for --commandprofile or --metadataprofile, depending
+on the command.
+.ad b
+
+.HP
+.ad l
+\fB-q\fP|\fB--quiet\fP ...
+.br
+Suppress output and log messages. Overrides --debug and --verbose.
+Repeat once to also suppress any prompts with answer no.
+.ad b
+
+.HP
+.ad l
+\fB-t\fP|\fB--test\fP
+.br
+Run in test mode. Commands will not update metadata.
+This is implemented by disabling all metadata writing but nevertheless
+returning success to the calling function. This may lead to unusual
+error messages in multi-stage operations if a tool relies on reading
+back metadata it believes has changed but hasn't.
+.ad b
+
+.HP
+.ad l
+\fB-v\fP|\fB--verbose\fP ...
+.br
+Set verbose level. Repeat from 1 to 4 times to increase the detail
+of messages sent to stdout and stderr.
+.ad b
+
+.HP
+.ad l
+\fB--version\fP
+.br
+Display version information.
+.ad b
+
+.HP
+.ad l
+\fB--[vg]metadatacopies\fP \fBall\fP|\fBunmanaged\fP|\fINumber\fP
+.br
+Number of copies of the VG metadata that are kept.
+VG metadata is kept in VG metadata areas on PVs in the VG,
+i.e. reserved space at the start and/or end of the PVs.
+Keeping a copy of the VG metadata on every PV can reduce performance
+in VGs containing a large number of PVs.
+When this number is set to a non-zero value, LVM will automatically
+choose PVs on which to store metadata, using the metadataignore flags
+on PVs to achieve the specified number.
+The number can also be replaced with special string values:
+\fBunmanaged\fP causes LVM to not automatically manage the PV
+metadataignore flags.
+\fBall\fP causes LVM to first clear the metadataignore flags on
+all PVs, and then to become unmanaged.
+.ad b
+
+.HP
+.ad l
+\fB-y\fP|\fB--yes\fP
+.br
+Do not prompt for confirmation interactively but always assume the
+answer yes. Use with extreme caution.
+(For automatic no, see -qq.)
+.ad b
+.SH VARIABLES
+.br
+
+.HP
+\fIVG\fP
+.br
+Volume Group name.  See \fBlvm\fP(8) for valid names.
+
+.HP
+\fIPV\fP
+.br
+Physical Volume name, a device path under /dev.
+For commands managing physical extents, a PV positional arg
+generally accepts a suffix indicating a range (or multiple ranges)
+of physical extents (PEs). When the first PE is omitted, it defaults
+to the start of the device, and when the last PE is omitted it defaults to end.
+Start and end range (inclusive): \fIPV\fP[\fB:\fP\fIPE\fP\fB-\fP\fIPE\fP]...
+Start and length range (counting from 0): \fIPV\fP[\fB:\fP\fIPE\fP\fB+\fP\fIPE\fP]...
+
+.HP
+\fIString\fP
+.br
+See the option description for information about the string content.
+
+.HP
+\fISize\fP[UNIT]
+.br
+Size is an input number that accepts an optional unit.
+Input units are always treated as base two values, regardless of
+capitalization, e.g. 'k' and 'K' both refer to 1024.
+The default input unit is specified by letter, followed by |UNIT.
+UNIT represents other possible input units: \fBbBsSkKmMgGtTpPeE\fP.
+b|B is bytes, s|S is sectors of 512 bytes, k|K is kilobytes,
+m|M is megabytes, g|G is gigabytes, t|T is terabytes,
+p|P is petabytes, e|E is exabytes.
+(This should not be confused with the output control --units, where
+capital letters mean multiple of 1000.)
+.SH ENVIRONMENT VARIABLES
+.br
+See \fBlvm\fP(8) for information about environment variables used by lvm.
+For example, LVM_VG_NAME can generally be substituted for a required VG parameter.
+.SH SEE ALSO
+
+.BR lvm (8)
+.BR lvm.conf (5)
+.BR lvmconfig (8)
+
+.BR pvchange (8)
+.BR pvck (8)
+.BR pvcreate (8)
+.BR pvdisplay (8)
+.BR pvmove (8)
+.BR pvremove (8)
+.BR pvresize (8)
+.BR pvs (8)
+.BR pvscan (8) 
+
+.BR vgcfgbackup (8)
+.BR vgcfgrestore (8)
+.BR vgchange (8)
+.BR vgck (8)
+.BR vgcreate (8)
+.BR vgconvert (8)
+.BR vgdisplay (8)
+.BR vgexport (8)
+.BR vgextend (8)
+.BR vgimport (8)
+.BR vgimportclone (8)
+.BR vgmerge (8)
+.BR vgmknodes (8)
+.BR vgreduce (8)
+.BR vgremove (8)
+.BR vgrename (8)
+.BR vgs (8)
+.BR vgscan (8)
+.BR vgsplit (8) 
+
+.BR lvcreate (8)
+.BR lvchange (8)
+.BR lvconvert (8)
+.BR lvdisplay (8)
+.BR lvextend (8)
+.BR lvreduce (8)
+.BR lvremove (8)
+.BR lvrename (8)
+.BR lvresize (8)
+.BR lvs (8)
+.BR lvscan (8)
+
+.BR lvm2-activation-generator (8)
+.BR blkdeactivate (8)
+.BR lvmdump (8)
+
+.BR dmeventd (8)
+.BR lvmetad (8)
+.BR lvmpolld (8)
+.BR lvmlockd (8)
+.BR lvmlockctl (8)
+.BR clvmd (8)
+.BR cmirrord (8)
+.BR lvmdbusd (8)
+
+.BR lvmsystemid (7)
+.BR lvmreport (7)
+.BR lvmraid (7)
+.BR lvmthin (7)
+.BR lvmcache (7)
+




More information about the lvm-devel mailing list