Subject: [PATCH] mapped-devices: Document lvm-mapping-device.

From: Mikhail Tsykalov <[email-masked]>
Date: Fri, 15 May 2020 04:17:40 +0300

---
  doc/guix.texi | 30 ++++++++++++++++++++++++++----
  1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index d6fbd85fde..612a9b25e5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11738,7 +11738,6 @@ Guix extends this notion by considering any 
device or set of devices that
  are @dfn{transformed} in some way to create a new device; for instance,
  RAID devices are obtained by @dfn{assembling} several other devices, such
  as hard disks or partitions, into a new one that behaves as one partition.
-Other examples, not yet implemented, are LVM logical volumes.

  Mapped devices are declared using the @code{mapped-device} form,
  defined as follows; for examples, see below.
@@ -11751,15 +11750,20 @@ the system boots up.
  @item source
  This is either a string specifying the name of the block device to be 
mapped,
  such as @code{"/dev/sda3"}, or a list of such strings when several devices
-need to be assembled for creating a new one.
+need to be assembled for creating a new one. In case of LVM this is a
+string specifying name of the volume group to be mapped.

  @item target
-This string specifies the name of the resulting mapped device. For
-kernel mappers such as encrypted devices of type 
@code{luks-device-mapping},
+This is either a string specifying the name of the resulting mapped
+device, or a list of such strings in case there are several, which is
+common while using LVM.
+For kernel mappers such as encrypted devices of type 
@code{luks-device-mapping},
  specifying @code{"my-partition"} leads to the creation of
  the @code{"/dev/mapper/my-partition"} device.
  For RAID devices of type @code{raid-device-mapping}, the full device name
  such as @code{"/dev/md0"} needs to be given.
+LVM logical volumes of type @code{lvm-device-mapping} need to
+be specified as @code{"VGNAME-LVNAME"}.

  @item type
  This must be a @code{mapped-device-kind} object, which specifies how
@@ -11780,6 +11784,11 @@ module for the appropriate RAID level to be 
loaded, such as @code{raid456}
  for RAID-4, RAID-5 or RAID-6, or @code{raid10} for RAID-10.
  @end defvr

+@defvr {Scheme Variable} lvm-device-mapping
+This defines LVM logical volume(s). Volume group is activated by
+@command{vgchange} command from the package @code{lvm2}.
+@end defvr
+
  @cindex disk encryption
  @cindex LUKS
  The following example specifies a mapping from @file{/dev/sda3} to
@@ -11837,6 +11846,19 @@ Note that the RAID level need not be given; it 
is chosen during the
  initial creation and formatting of the RAID device and is determined
  automatically later.

+LVM logical volumes ``alpha'' and ``beta'' from volume group ``vg0'' can
+be declared as follows:
+
+@lisp
+(mapped-device
+  (source "vg0")
+  (target (list "vg0-alpha" "vg0-beta"))
+  (type lvm-device-mapping))
+@end lisp
+
+Devices @file{/dev/mapper/vg0-alpha} and @file{/dev/mapper/vg0-beta} can
+then be used as the @code{device} of a @code{file-system} declaration
+(@pxref{File Systems}).

  @node User Accounts
  @section User Accounts
-- 
2.26.2