Additional patches for 8.10.0 lvm2

Resolves: RHEL-8289 RHEL-20192 RHEL-14216 RHEL-8298 RHEL-8334 RHEL-8270
This commit is contained in:
Marian Csontos 2024-02-02 14:46:23 +01:00
parent f62867f3e4
commit 09f8953388
14 changed files with 1347 additions and 1 deletions

25
0118-man-Fix-typo.patch Normal file
View File

@ -0,0 +1,25 @@
From cf7e7e0041b1f92ad3e9e8f1d7fb24c4ba5949e9 Mon Sep 17 00:00:00 2001
From: Marian Csontos <mcsontos@redhat.com>
Date: Wed, 31 Jan 2024 18:48:24 +0100
Subject: [PATCH 01/12] man: Fix typo
---
man/lvmcache.7_main | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/lvmcache.7_main b/man/lvmcache.7_main
index 519e352cb..824f24e91 100644
--- a/man/lvmcache.7_main
+++ b/man/lvmcache.7_main
@@ -252,7 +252,7 @@ when selecting the writecache cachevol size and the writecache block size.
.P
.IP \[bu] 2
writecache block size 4096: each 100 GiB of writecache cachevol uses
-slighly over 2 GiB of system memory.
+slightly over 2 GiB of system memory.
.IP \[bu] 2
writecache block size 512: each 100 GiB of writecache cachevol uses
a little over 16 GiB of system memory.
--
2.43.0

View File

@ -0,0 +1,649 @@
From 3d6f6b58f6426dfcbfa59de90b47f0bbd46759e7 Mon Sep 17 00:00:00 2001
From: Samanta Navarro <ferivoz@riseup.net>
Date: Fri, 30 Dec 2022 11:52:49 +0000
Subject: [PATCH 02/12] doc: fix typos in documentation
Typos found with codespell.
(cherry picked from commit aec5e573afe610070eb2c6bed675d2a7c0efc7e8)
---
TESTING | 2 +-
conf/example.conf.in | 12 ++++++------
doc/kernel/cache-policies.txt | 2 +-
doc/kernel/crypt.txt | 4 ++--
doc/kernel/integrity.txt | 2 +-
doc/kernel/verity.txt | 2 +-
doc/lvm2-raid.txt | 10 +++++-----
doc/lvm_fault_handling.txt | 10 +++++-----
doc/lvmpolld_overview.txt | 2 +-
doc/tagging.txt | 2 +-
doc/udev_assembly.txt | 2 +-
libdm/make.tmpl.in | 2 +-
make.tmpl.in | 2 +-
man/dmeventd.8_main | 6 +++---
man/dmsetup.8_main | 2 +-
man/dmstats.8_main | 24 ++++++++++++------------
man/lvchange.8_pregen | 2 +-
man/lvconvert.8_des | 2 +-
man/lvconvert.8_pregen | 2 +-
man/lvcreate.8_pregen | 2 +-
man/lvmcache.7_main | 8 ++++----
man/lvmdevices.8_des | 2 +-
man/lvmdevices.8_pregen | 2 +-
man/lvmreport.7_main | 6 +++---
man/vgcfgrestore.8_des | 2 +-
man/vgcfgrestore.8_pregen | 2 +-
man/vgchange.8_pregen | 2 +-
udev/69-dm-lvm-metad.rules.in | 2 +-
28 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/TESTING b/TESTING
index 57932f56a..3c1e3afc6 100644
--- a/TESTING
+++ b/TESTING
@@ -24,7 +24,7 @@ You MUST disable (or mask) any LVM daemons:
For running cluster tests, we are using singlenode locking. Pass
`--with-clvmd=singlenode` to configure.
-NOTE: This is useful only for testing, and should not be used in produciton
+NOTE: This is useful only for testing, and should not be used in production
code.
To run D-Bus daemon tests, existing D-Bus session is required.
diff --git a/conf/example.conf.in b/conf/example.conf.in
index d5af25061..bb2e60ace 100644
--- a/conf/example.conf.in
+++ b/conf/example.conf.in
@@ -752,7 +752,7 @@ allocation {
# vdo_max_discard = 1
# Configuration option allocation/vdo_pool_header_size.
- # Specified the emptry header size in KiB at the front and end of vdo pool device.
+ # Specified the empty header size in KiB at the front and end of vdo pool device.
# This configuration option has an automatic default value.
# vdo_pool_header_size = 512
}
@@ -931,7 +931,7 @@ backup {
# archive = 1
# Configuration option backup/archive_dir.
- # Location of the metdata archive files.
+ # Location of the metadata archive files.
# Remember to back up this directory regularly!
# This configuration option has an automatic default value.
# archive_dir = "@DEFAULT_SYS_DIR@/@DEFAULT_ARCHIVE_SUBDIR@"
@@ -1463,13 +1463,13 @@ activation {
# Configuration option activation/reserved_stack.
# Stack size in KiB to reserve for use while devices are suspended.
- # Insufficent reserve risks I/O deadlock during device suspension.
+ # Insufficient reserve risks I/O deadlock during device suspension.
# This configuration option has an automatic default value.
# reserved_stack = 64
# Configuration option activation/reserved_memory.
# Memory size in KiB to reserve for use while devices are suspended.
- # Insufficent reserve risks I/O deadlock during device suspension.
+ # Insufficient reserve risks I/O deadlock during device suspension.
# This configuration option has an automatic default value.
# reserved_memory = 8192
@@ -1604,7 +1604,7 @@ activation {
# This includes LVs that have the following segment types:
# raid1, raid4, raid5*, and raid6*.
# If a device in the LV fails, the policy determines the steps
- # performed by dmeventd automatically, and the steps perfomed by the
+ # performed by dmeventd automatically, and the steps performed by the
# manual command lvconvert --repair --use-policies.
# Automatic handling requires dmeventd to be monitoring the LV.
#
@@ -1628,7 +1628,7 @@ activation {
# (copies) and a mirror log. A disk log ensures that a mirror LV does
# not need to be re-synced (all copies made the same) every time a
# machine reboots or crashes. If a device in the LV fails, this policy
- # determines the steps perfomed by dmeventd automatically, and the steps
+ # determines the steps performed by dmeventd automatically, and the steps
# performed by the manual command lvconvert --repair --use-policies.
# Automatic handling requires dmeventd to be monitoring the LV.
#
diff --git a/doc/kernel/cache-policies.txt b/doc/kernel/cache-policies.txt
index d3ca8af21..1436dbc6e 100644
--- a/doc/kernel/cache-policies.txt
+++ b/doc/kernel/cache-policies.txt
@@ -67,7 +67,7 @@ the entries (each hotspot block covers a larger area than a single
cache block).
All this means smq uses ~25bytes per cache block. Still a lot of
-memory, but a substantial improvement nontheless.
+memory, but a substantial improvement nonetheless.
Level balancing:
mq placed entries in different levels of the multiqueue structures
diff --git a/doc/kernel/crypt.txt b/doc/kernel/crypt.txt
index 3b3e1de21..df18572f9 100644
--- a/doc/kernel/crypt.txt
+++ b/doc/kernel/crypt.txt
@@ -35,7 +35,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \
capi:authenc(hmac(sha256),xts(aes))-random
capi:rfc7539(chacha20,poly1305)-random
- The /proc/crypto contains a list of curently loaded crypto modes.
+ The /proc/crypto contains a list of currently loaded crypto modes.
<key>
Key used for encryption. It is encoded either as a hexadecimal number
@@ -81,7 +81,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \
<#opt_params>
Number of optional parameters. If there are no optional parameters,
- the optional paramaters section can be skipped or #opt_params can be zero.
+ the optional parameters section can be skipped or #opt_params can be zero.
Otherwise #opt_params is the number of following arguments.
Example of optional parameters section:
diff --git a/doc/kernel/integrity.txt b/doc/kernel/integrity.txt
index 03a3b956a..0822de802 100644
--- a/doc/kernel/integrity.txt
+++ b/doc/kernel/integrity.txt
@@ -120,7 +120,7 @@ journal_crypt:algorithm(:key) (the key is optional)
"salsa20", "ctr(aes)" or "ecb(arc4)").
The journal contains history of last writes to the block device,
- an attacker reading the journal could see the last sector nubmers
+ an attacker reading the journal could see the last sector numbers
that were written. From the sector numbers, the attacker can infer
the size of files that were written. To protect against this
situation, you can encrypt the journal.
diff --git a/doc/kernel/verity.txt b/doc/kernel/verity.txt
index 89fd8f9a2..9822f1d61 100644
--- a/doc/kernel/verity.txt
+++ b/doc/kernel/verity.txt
@@ -65,7 +65,7 @@ Construction Parameters
<#opt_params>
Number of optional parameters. If there are no optional parameters,
- the optional paramaters section can be skipped or #opt_params can be zero.
+ the optional parameters section can be skipped or #opt_params can be zero.
Otherwise #opt_params is the number of following arguments.
Example of optional parameters section:
diff --git a/doc/lvm2-raid.txt b/doc/lvm2-raid.txt
index a6f091543..a3226f230 100644
--- a/doc/lvm2-raid.txt
+++ b/doc/lvm2-raid.txt
@@ -37,7 +37,7 @@ segment type. The available RAID types are:
"raid6_nr" - RAID6 Rotating parity N with data restart
"raid6_nc" - RAID6 Rotating parity N with data continuation
The exception to 'no shorthand options' will be where the RAID implementations
-can displace traditional tagets. This is the case with 'mirror' and 'raid1'.
+can displace traditional targets. This is the case with 'mirror' and 'raid1'.
In this case, "mirror_segtype_default" - found under the "global" section in
lvm.conf - can be set to "mirror" or "raid1". The segment type inferred when
the '-m' option is used will be taken from this setting. The default segment
@@ -104,7 +104,7 @@ and 4 devices for RAID 6/10.
lvconvert should work exactly as it does now when dealing with mirrors -
even if(when) we switch to MD RAID1. Of course, there are no plans to
-allow the presense of the metadata area to be configurable (e.g. --corelog).
+allow the presence of the metadata area to be configurable (e.g. --corelog).
It will be simple enough to detect if the LV being up/down-converted is
new or old-style mirroring.
@@ -120,7 +120,7 @@ RAID4 to RAID5 or RAID5 to RAID6.
Line 02/03/04:
These are familiar options - all of which would now be available as options
for change. (However, it'd be nice if we didn't have regionsize in there.
-It's simple on the kernel side, but is just an extra - often unecessary -
+It's simple on the kernel side, but is just an extra - often unnecessary -
parameter to many functions in the LVM codebase.)
Line 05:
@@ -375,8 +375,8 @@ the slot. Even the names of the images will be renamed to properly reflect
their index in the array. Unlike the "mirror" segment type, you will never have
an image named "*_rimage_1" occupying the index position 0.
-As with adding images, removing images holds off on commiting LVM metadata
-until all possible changes have been made. This reduces the likelyhood of bad
+As with adding images, removing images holds off on committing LVM metadata
+until all possible changes have been made. This reduces the likelihood of bad
intermediate stages being left due to a failure of operation or machine crash.
RAID1 '--splitmirrors', '--trackchanges', and '--merge' operations
diff --git a/doc/lvm_fault_handling.txt b/doc/lvm_fault_handling.txt
index 53b447eac..196b782db 100644
--- a/doc/lvm_fault_handling.txt
+++ b/doc/lvm_fault_handling.txt
@@ -87,7 +87,7 @@ are as follows:
/etc/lvm/lvm.conf. Once this operation is complete, the logical volumes
will be consistent. However, the volume group will still be inconsistent -
due to the refernced-but-missing device/PV - and operations will still be
- restricted to the aformentioned actions until either the device is
+ restricted to the aforementioned actions until either the device is
restored or 'vgreduce --removemissing' is run.
Device Revival (transient failures):
@@ -135,9 +135,9 @@ If a mirror is not 'in-sync', a read failure will produce an I/O error.
This error will propagate all the way up to the applications above the
logical volume (e.g. the file system). No automatic intervention will
take place in this case either. It is up to the user to decide what
-can be done/salvaged in this senario. If the user is confident that the
+can be done/salvaged in this scenario. If the user is confident that the
images of the mirror are the same (or they are willing to simply attempt
-to retreive whatever data they can), 'lvconvert' can be used to eliminate
+to retrieve whatever data they can), 'lvconvert' can be used to eliminate
the failed image and proceed.
Mirror resynchronization errors:
@@ -191,11 +191,11 @@ command are set in the LVM configuration file. They are:
3-way mirror fails, the mirror will be converted to a 2-way mirror.
The "allocate" policy takes the further action of trying to replace
the failed image using space that is available in the volume group.
- Replacing a failed mirror image will incure the cost of
+ Replacing a failed mirror image will incur the cost of
resynchronizing - degrading the performance of the mirror. The
default policy for handling an image failure is "remove". This
allows the mirror to still function, but gives the administrator the
- choice of when to incure the extra performance costs of replacing
+ choice of when to incur the extra performance costs of replacing
the failed image.
RAID logical volume device failures are handled differently from the "mirror"
diff --git a/doc/lvmpolld_overview.txt b/doc/lvmpolld_overview.txt
index 8c66e5e1a..ecff2eb81 100644
--- a/doc/lvmpolld_overview.txt
+++ b/doc/lvmpolld_overview.txt
@@ -63,7 +63,7 @@ classical snapshot merge, thin snapshot merge.
The second store is suited only for pvmove --abort operations in-progress. Both
stores are independent and identical LVs (pvmove /dev/sda3 and pvmove --abort /dev/sda3)
-can be run concurently from lvmpolld point of view (on lvm2 side the consistency is
+can be run concurrently from lvmpolld point of view (on lvm2 side the consistency is
guaranteed by lvm2 locking mechanism).
Locking order
diff --git a/doc/tagging.txt b/doc/tagging.txt
index b66e0ecd3..95ee02d83 100644
--- a/doc/tagging.txt
+++ b/doc/tagging.txt
@@ -126,7 +126,7 @@ Usage Examples
followed by 'vgchange -ay vg2'
- Option (ii) - localised admin & configuation
+ Option (ii) - localised admin & configuration
(i.e. each host holds *locally* which classes of volumes to activate)
# Add @database tag to vg1's metadata
vgchange --addtag @database vg1
diff --git a/doc/udev_assembly.txt b/doc/udev_assembly.txt
index 618640273..45af41209 100644
--- a/doc/udev_assembly.txt
+++ b/doc/udev_assembly.txt
@@ -35,7 +35,7 @@ VGs from PVs as they appear, and at the same time collect information on what is
already available. A command, pvscan --cache is expected to be used to
implement udev rules. It is relatively easy to make this command print out a
list of VGs (and possibly LVs) that have been made available by adding any
-particular device to the set of visible devices. In othe words, udev says "hey,
+particular device to the set of visible devices. In other words, udev says "hey,
/dev/sdb just appeared", calls pvscan --cache, which talks to lvmetad, which
says "cool, that makes vg0 complete". Pvscan takes this info and prints it out,
and the udev rule can then somehow decide whether anything needs to be done
diff --git a/libdm/make.tmpl.in b/libdm/make.tmpl.in
index a306101d5..1816bff55 100644
--- a/libdm/make.tmpl.in
+++ b/libdm/make.tmpl.in
@@ -248,7 +248,7 @@ endif
# end of fPIC protection
endif
-# Combination of DEBUG_POOL and DEBUG_ENFORCE_POOL_LOCKING is not suppored.
+# Combination of DEBUG_POOL and DEBUG_ENFORCE_POOL_LOCKING is not supported.
#DEFS += -DDEBUG_POOL
# Default pool locking is using the crc checksum. With mprotect memory
# enforcing compilation faulty memory write could be easily found.
diff --git a/make.tmpl.in b/make.tmpl.in
index cccda10d6..7799a8adb 100644
--- a/make.tmpl.in
+++ b/make.tmpl.in
@@ -281,7 +281,7 @@ ifeq ("@BUILD_DMEVENTD@", "yes")
CLDFLAGS += -L$(top_builddir)/daemons/dmeventd
endif
-# Combination of DEBUG_POOL and DEBUG_ENFORCE_POOL_LOCKING is not suppored.
+# Combination of DEBUG_POOL and DEBUG_ENFORCE_POOL_LOCKING is not supported.
#DEFS += -DDEBUG_POOL
# Default pool locking is using the crc checksum. With mprotect memory
# enforcing compilation faulty memory write could be easily found.
diff --git a/man/dmeventd.8_main b/man/dmeventd.8_main
index c03605d9c..77b07e4d8 100644
--- a/man/dmeventd.8_main
+++ b/man/dmeventd.8_main
@@ -103,7 +103,7 @@ when it's been filled above configured threshold
\fBactivation/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.
+retries up to 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,
@@ -133,7 +133,7 @@ when it's been filled above the configured threshold
\fBactivation/vdo_pool_autoextend_threshold\fP.
If the command fails, dmeventd vdo plugin will keep
retrying execution with increasing time delay between
-retries upto 42 minutes.
+retries up to 42 minutes.
User may also configure external command to support more advanced
maintenance operations of a VDO pool.
Such external command can e.g. remove some unneeded space
@@ -166,7 +166,7 @@ actual usage of VDO pool data volume. Variable is not set when error event
is processed.
.TP
.B LVM_RUN_BY_DMEVENTD
-Variable is set by thin and vdo plugin to prohibit recursive interation
+Variable is set by thin and vdo plugin to prohibit recursive interaction
with dmeventd by any executed lvm2 command from
a thin_command, vdo_command environment.
.
diff --git a/man/dmsetup.8_main b/man/dmsetup.8_main
index 7576b54bc..1cafae017 100644
--- a/man/dmsetup.8_main
+++ b/man/dmsetup.8_main
@@ -572,7 +572,7 @@ See below for more information on the table format.
.B --udevcookie \fIcookie
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
+multiple different devices. It's not advised to combine different
operations on the single device.
.
.TP
diff --git a/man/dmstats.8_main b/man/dmstats.8_main
index bf492c554..6991071bb 100644
--- a/man/dmstats.8_main
+++ b/man/dmstats.8_main
@@ -292,7 +292,7 @@ region identifier.
.
.TP
.B --area
-When peforming a list or report, include objects of type area in the
+When performing a list or report, include objects of type area in the
results.
.
.TP
@@ -317,7 +317,7 @@ argument is zero reports will continue to repeat until interrupted.
.
.TP
.B --group
-When peforming a list or report, include objects of type group in the
+When performing a list or report, include objects of type group in the
results.
.
.TP
@@ -389,7 +389,7 @@ region as a comma separated list of latency values. Latency values are
given in nanoseconds. An optional unit suffix of
.BR ns , us , ms ,
or \fBs\fP may be given after each value to specify units of
-nanoseconds, microseconds, miliseconds or seconds respectively.
+nanoseconds, microseconds, milliseconds or seconds respectively.
.
.TP
.B --histogram
@@ -456,7 +456,7 @@ default program ID for dmstats-managed regions is "dmstats".
.
.TP
.B --region
-When peforming a list or report, include objects of type region in the
+When performing a list or report, include objects of type region in the
results.
.
.TP
@@ -530,7 +530,7 @@ Produce additional output.
.HP
.CMD_CLEAR
.br
-Instructs the kernel to clear statistics counters for the speficied
+Instructs the kernel to clear statistics counters for the specified
regions (with the exception of in-flight IO counters).
.
.HP
@@ -556,10 +556,10 @@ configured interval duration) on the final bin.
.sp
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
+microseconds, milliseconds 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
+one millisecond can only be used when precise timestamps are enabled: if
+\fB--precise\fP is not given and values less than one millisecond are
used it will be enabled automatically.
.sp
An optional \fBprogram_id\fP or \fBuser_data\fP string may be associated
@@ -627,7 +627,7 @@ 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
+continuous range of identifiers spanning from \fBR1\fP to \fBR2\fP may
be expressed as '\fBR1\fP-\fBR2\fP'.
.sp
Regions that have a histogram configured can be grouped: in this case
@@ -711,7 +711,7 @@ that were previously created with \fB--filemap\fP, either directly,
or by starting the monitoring daemon, \fBdmfilemapd\fP.
.sp
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
+extents of the file on-disk, since the time that it was created or last
updated.
.sp
Use of this command is not normally needed since the \fBdmfilemapd\fP
@@ -1090,13 +1090,13 @@ bounds.
.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
+units of seconds, milliseconds, 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
+"LOWER-UPPER" in whole units of seconds, milliseconds, microseconds or
nanoseconds with a suffix indicating the unit.
.TP
.B hist_bins
diff --git a/man/lvchange.8_pregen b/man/lvchange.8_pregen
index 27bee0f14..4e0a8bf70 100644
--- a/man/lvchange.8_pregen
+++ b/man/lvchange.8_pregen
@@ -744,7 +744,7 @@ See \fBlvmraid\fP(7) for more information.
.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.
+automated maintenance for the LV in response to specific events.
See \fBdmeventd\fP(8) for more information.
.
.HP
diff --git a/man/lvconvert.8_des b/man/lvconvert.8_des
index f36135f21..1bc3dfa11 100644
--- a/man/lvconvert.8_des
+++ b/man/lvconvert.8_des
@@ -23,7 +23,7 @@ The
type is equivalent to the
.B striped
type when one stripe exists.
-In that case, the types can sometimes be used interchangably.
+In that case, the types can sometimes be used interchangeably.
.P
In most cases, the
.B mirror
diff --git a/man/lvconvert.8_pregen b/man/lvconvert.8_pregen
index fa52da55c..f1d0d0256 100644
--- a/man/lvconvert.8_pregen
+++ b/man/lvconvert.8_pregen
@@ -196,7 +196,7 @@ The
type is equivalent to the
.B striped
type when one stripe exists.
-In that case, the types can sometimes be used interchangably.
+In that case, the types can sometimes be used interchangeably.
.P
In most cases, the
.B mirror
diff --git a/man/lvcreate.8_pregen b/man/lvcreate.8_pregen
index 0ffe92a94..5416b9c2f 100644
--- a/man/lvcreate.8_pregen
+++ b/man/lvcreate.8_pregen
@@ -1175,7 +1175,7 @@ See \fBlvmraid\fP(7) for more information.
.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.
+automated maintenance for the LV in response to specific events.
See \fBdmeventd\fP(8) for more information.
.
.HP
diff --git a/man/lvmcache.7_main b/man/lvmcache.7_main
index 824f24e91..a139062d1 100644
--- a/man/lvmcache.7_main
+++ b/man/lvmcache.7_main
@@ -73,7 +73,7 @@ using dm-writecache (with cachevol):
.P
# lvconvert --type writecache --cachevol fast vg/main
.P
-For more alteratives see:
+For more alternatives see:
.br
dm-cache command shortcut
.br
@@ -286,11 +286,11 @@ read requests.
.TP
autocommit_blocks = <count>
When the application writes this amount of blocks without issuing the
-FLUSH request, the blocks are automatically commited.
+FLUSH request, the blocks are automatically committed.
.
.TP
autocommit_time = <milliseconds>
-The data is automatically commited if this time passes and no FLUSH
+The data is automatically committed if this time passes and no FLUSH
request is received.
.
.TP
@@ -403,7 +403,7 @@ cache, in which small reads and writes cause large sections of an LV to be
stored in the cache. It can also require increasing migration threshold
which defaults to 2048 sectors (1 MiB). Lvm2 ensures migration threshold is
at least 8 chunks in size. This may in some cases result in very
-high bandwidth load of transfering data between the cache LV and its
+high bandwidth load of transferring data between the cache LV and its
cache origin LV. 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
diff --git a/man/lvmdevices.8_des b/man/lvmdevices.8_des
index 2335456ad..ed24d4cd4 100644
--- a/man/lvmdevices.8_des
+++ b/man/lvmdevices.8_des
@@ -95,7 +95,7 @@ is used for loop devices, the backing file name repored by sysfs.
the device name is used if no other type applies.
.P
-The default choice for device ID type can be overriden using lvmdevices
+The default choice for device ID type can be overridden using lvmdevices
--addev --deviceidtype <type>. If the specified type is available for the
device it will be used, otherwise the device will be added using the type
that would otherwise be chosen.
diff --git a/man/lvmdevices.8_pregen b/man/lvmdevices.8_pregen
index a2397e50f..e782596d0 100644
--- a/man/lvmdevices.8_pregen
+++ b/man/lvmdevices.8_pregen
@@ -162,7 +162,7 @@ is used for loop devices, the backing file name repored by sysfs.
the device name is used if no other type applies.
.P
-The default choice for device ID type can be overriden using lvmdevices
+The default choice for device ID type can be overridden using lvmdevices
--addev --deviceidtype <type>. If the specified type is available for the
device it will be used, otherwise the device will be added using the type
that would otherwise be chosen.
diff --git a/man/lvmreport.7_main b/man/lvmreport.7_main
index f0f04ad1c..021089951 100644
--- a/man/lvmreport.7_main
+++ b/man/lvmreport.7_main
@@ -1197,7 +1197,7 @@ But let's still use the original "," character for list_item_separator
for subsequent examples.
.P
Format for any of time values displayed in reports can be configured with
-\fBreport/time_format\fP configuretion setting. By default complete date
+\fBreport/time_format\fP configuration setting. By default complete date
and time is displayed, including timezone.
.P
.nf
@@ -1302,9 +1302,9 @@ binary_values_as_numeric=1
.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
+configuration setting (or \fB--reportformat\fP command line option) to switch
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.
+we used above used this format) and \fB"json"\fP output format.
.P
.nf
# lvs -o lv_name,lv_size --reportformat json
diff --git a/man/vgcfgrestore.8_des b/man/vgcfgrestore.8_des
index dbc9aee16..10aa460c6 100644
--- a/man/vgcfgrestore.8_des
+++ b/man/vgcfgrestore.8_des
@@ -1,6 +1,6 @@
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.
+specified in back up file.
.P
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
diff --git a/man/vgcfgrestore.8_pregen b/man/vgcfgrestore.8_pregen
index 6165cd36e..86e62c870 100644
--- a/man/vgcfgrestore.8_pregen
+++ b/man/vgcfgrestore.8_pregen
@@ -63,7 +63,7 @@ vgcfgrestore \(em Restore volume group configuration
.
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.
+specified in back up file.
.P
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
diff --git a/man/vgchange.8_pregen b/man/vgchange.8_pregen
index 7c7030c0d..0e6bd7b24 100644
--- a/man/vgchange.8_pregen
+++ b/man/vgchange.8_pregen
@@ -670,7 +670,7 @@ See \fBlvm.conf\fP(5) for more information about profiles.
.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.
+automated maintenance for the LV in response to specific events.
See \fBdmeventd\fP(8) for more information.
.
.HP
diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in
index 78f506520..7e2af981f 100644
--- a/udev/69-dm-lvm-metad.rules.in
+++ b/udev/69-dm-lvm-metad.rules.in
@@ -87,7 +87,7 @@ LABEL="systemd_background"
#
# In this case, we simply set up the dependency between the device and the pvscan
# job using SYSTEMD_ALIAS (which sets up a simplified device identifier that
-# allows using "BindsTo" in the sytemd unit file) and SYSTEMD_WANTS (which tells
+# allows using "BindsTo" in the systemd unit file) and SYSTEMD_WANTS (which tells
# systemd to start the pvscan job once the device is ready).
# We need to set these variables for both "add" and "change" events, otherwise
# systemd may loose information about the device/unit dependencies.
--
2.43.0

View File

@ -0,0 +1,26 @@
From 4d602fc32a2c7f7575dae4b37f6a0b12f4c09cb4 Mon Sep 17 00:00:00 2001
From: Ranjith ML <rmadhuso@redhat.com>
Date: Wed, 24 Jan 2024 14:05:24 +0100
Subject: [PATCH 03/12] archiving: Fix doubled filename in vgcfgrestore
(cherry picked from commit 1c3ae2b678ddae0c1916caca4dbe65049dcea3d7)
---
lib/format_text/archive.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/format_text/archive.c b/lib/format_text/archive.c
index 2e8792a93..388789c0d 100644
--- a/lib/format_text/archive.c
+++ b/lib/format_text/archive.c
@@ -313,7 +313,7 @@ static void _display_archive(struct cmd_context *cmd, const char *dir, struct ar
}
log_print(" ");
- log_print("File:\t\t%s/%s", path, af->name);
+ log_print("File:\t\t%s", path);
tc.path_live = path;
fic.type = FMT_INSTANCE_PRIVATE_MDAS;
--
2.43.0

View File

@ -0,0 +1,26 @@
From 4db199be5c7ac6da9741e188f7ad1a076659b8c0 Mon Sep 17 00:00:00 2001
From: Lukas Herbolt <lukas@herbolt.com>
Date: Tue, 5 Dec 2023 09:08:24 -0600
Subject: [PATCH 04/12] man: add inte(g)rity to man lvs
(cherry picked from commit 7b64d9946d6a3be84338ad976383b6ab53e97484)
---
man/lvs.8_end | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/man/lvs.8_end b/man/lvs.8_end
index dc3a27446..e9897b4fc 100644
--- a/man/lvs.8_end
+++ b/man/lvs.8_end
@@ -4,7 +4,7 @@
The lv_attr bits are:
.IP 1 3
Volume type: (\fBC\fP)ache, (\fBm\fP)irrored, (\fBM\fP)irrored without initial sync, (\fBo\fP)rigin,
-(\fBO\fP)rigin with merging snapshot, (\fBr\fP)aid, (\fBR\fP)aid without initial sync,
+(\fBO\fP)rigin with merging snapshot, inte(\fBg\fP)rity, (\fBr\fP)aid, (\fBR\fP)aid without initial sync,
(\fBs\fP)napshot, merging (\fBS\fP)napshot, (\fBp\fP)vmove, (\fBv\fP)irtual,
mirror or raid (\fBi\fP)mage, mirror or raid (\fBI\fP)mage out-of-sync, mirror (\fBl\fP)og device,
under (\fBc\fP)onversion, thin (\fBV\fP)olume, (\fBt\fP)hin pool, (\fBT\fP)hin pool data,
--
2.43.0

View File

@ -0,0 +1,48 @@
From 3b5e2537ae1ce6ee633b92f8df30602b9167044e Mon Sep 17 00:00:00 2001
From: heinzm <heinzm@redhat.com>
Date: Fri, 5 May 2023 15:00:49 +0200
Subject: [PATCH 05/12] Fix "lvconvert -m 0 will always take rimage_0 even if
it is out-of-sync"
Bail out in case first rimage is out-of-sync.
Refresh first, i.e. "lvchange --resync $RaidLV",
then retry downgrade to linear after resynchronization.
(cherry picked from commit d7e922480e04ecfb7c4d8b2d42533699ddef5c34)
---
lib/metadata/raid_manip.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 0e6a77bac..5112989ab 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -3112,14 +3112,23 @@ static int _raid_remove_images(struct logical_volume *lv, int yes,
{
struct dm_list removed_lvs;
- if (!archive(lv->vg))
- return_0;
+ if (new_count == 1) {
+ struct lv_segment *seg = first_seg(lv);
+
+ if (seg_is_raid1(seg) && !lv_raid_image_in_sync(seg_lv(seg, 0))) {
+ log_error("%s is out-of-sync! Please try refreshing first.", display_lvname(lv));
+ return 0;
+ }
+ }
if (!removal_lvs) {
dm_list_init(&removed_lvs);
removal_lvs = &removed_lvs;
}
+ if (!archive(lv->vg))
+ return_0;
+
if (!_raid_extract_images(lv, 0, new_count, allocate_pvs, 1,
removal_lvs, removal_lvs)) {
log_error("Failed to extract images from %s.",
--
2.43.0

View File

@ -0,0 +1,52 @@
From 54576eb1e4217353072933d5c2b3274c08c67e82 Mon Sep 17 00:00:00 2001
From: Heinz Mauelshagen <heinzm@redhat.com>
Date: Thu, 19 Oct 2023 16:50:01 +0200
Subject: [PATCH 06/12] lvconvert: fix "lvconvert -m 0" for in-sync legs
With commit d7e922480e04ecfb7c4d8b2d42533699ddef5c34
lvconvert -m may fail if we try to remove 1st. leg that
is out-of-sync while other leg is in-sync.
Hot fix allows to proceed with such down conversion.
Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
(cherry picked from commit e41da923a3bec2df603b54f0f466e9574b6544db)
---
lib/metadata/raid_manip.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 5112989ab..7ce2c177d 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -3113,9 +3113,26 @@ static int _raid_remove_images(struct logical_volume *lv, int yes,
struct dm_list removed_lvs;
if (new_count == 1) {
+ uint32_t s;
struct lv_segment *seg = first_seg(lv);
- if (seg_is_raid1(seg) && !lv_raid_image_in_sync(seg_lv(seg, 0))) {
+ if (!seg_is_raid1(seg)) {
+ log_error("%s called on non-raid1 LV.", display_lvname(lv));
+ return 0;
+ }
+
+ for (s = 0; s < seg->area_count; s++) {
+ if (seg_type(seg, s) == AREA_UNASSIGNED)
+ continue;
+
+ if (lv_raid_image_in_sync(seg_lv(seg, s))) {
+ _swap_areas(seg->areas + 0, seg->areas + s);
+ break;
+ }
+
+ }
+
+ if (s >= seg->area_count) {
log_error("%s is out-of-sync! Please try refreshing first.", display_lvname(lv));
return 0;
}
--
2.43.0

View File

@ -0,0 +1,79 @@
From b9b28ee11adc8aba0fe11dda56a88b3cfc8d6b41 Mon Sep 17 00:00:00 2001
From: heinzm <heinzm@redhat.com>
Date: Wed, 10 May 2023 18:22:11 +0200
Subject: [PATCH 07/12] Fix "multisegment RAID1, allocator uses one disk for
both legs"
In case of e.g. 3 PVs, creating or extending a RaidLV causes SubLV
collocation thus putting segments of diffent rimage (and potentially
larger rmeta) SubLVs onto the same PV. For redundant RaidLVs this'll
compromise redundancy. Fix by detecting such bogus allocation on
lvcreate/lvextend and reject the request.
(cherry picked from commit 05c2b10c5d0a99993430ffbcef684a099ba810ad)
---
lib/metadata/lv_manip.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 0a51e0315..24d8adc18 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -4454,6 +4454,38 @@ static int _lv_extend_layered_lv(struct alloc_handle *ah,
return 1;
}
+/* Check either RAID images and metas are being allocated redundantly. */
+static int _lv_raid_redundant(struct logical_volume *lv,
+ struct dm_list *allocatable_pvs, int meta)
+{
+ uint32_t nlvs, s;
+ struct lv_segment *seg = first_seg(lv);
+ struct pv_list *pvl;
+
+ if (meta && !seg->meta_areas)
+ return 1;
+
+ dm_list_iterate_items(pvl, allocatable_pvs) {
+ nlvs = 0;
+
+ for (s = 0; s < seg->area_count; s++) {
+ struct logical_volume *slv = meta ? seg_metalv(seg, s) : seg_lv(seg, s);
+
+ if (slv && lv_is_on_pv(slv, pvl->pv) && nlvs++)
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+/* Check both RAID images and metas are being allocated redundantly. */
+static int _lv_raid_redundant_allocation(struct logical_volume *lv, struct dm_list *allocatable_pvs)
+{
+ return _lv_raid_redundant(lv, allocatable_pvs, 0) &&
+ _lv_raid_redundant(lv, allocatable_pvs, 1);
+}
+
/*
* Entry point for single-step LV allocation + extension.
* Extents is the number of logical extents to append to the LV unless
@@ -4556,6 +4588,15 @@ int lv_extend(struct logical_volume *lv,
mirrors, stripes, stripe_size)))
goto_out;
+ if (segtype_is_raid(segtype) &&
+ alloc != ALLOC_ANYWHERE &&
+ !(r = _lv_raid_redundant_allocation(lv, allocatable_pvs))) {
+ log_error("Insufficient suitable allocatable extents for logical volume %s", display_lvname(lv));
+ if (!lv_remove(lv) || !vg_write(lv->vg) || !vg_commit(lv->vg))
+ return_0;
+ goto out;
+ }
+
if (lv_raid_has_integrity(lv)) {
if (!lv_extend_integrity_in_raid(lv, allocatable_pvs)) {
r = 0;
--
2.43.0

View File

@ -0,0 +1,58 @@
From 1c773b76965efe1fd7c4b3c8211296ede5b4c1e5 Mon Sep 17 00:00:00 2001
From: Heinz Mauelshagen <heinzm@redhat.com>
Date: Wed, 6 Dec 2023 12:58:14 +0100
Subject: [PATCH 08/12] raid: add messages to lvs command output in case
RaidLVs require a refresh
If a RaidLV mapping is required to be refreshed as a result of temporarily failed
and recurred RAID leg device (pairs) caused by writes to the LV during failure,
the requirement is reported by volume health character r' in position 9 of the
LV's attribute field (see 'man lvs' about additional volume health characters).
As this character can be overlooked, this patch adds messages to the top
of the lvs command output informing the user explicitely about the fact.
(cherry picked from commit b69f73b13ee55ef3feb7427c6dc099dc3472d9fc)
---
tools/reporter.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/tools/reporter.c b/tools/reporter.c
index eafba4fec..ff30a31a9 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -150,6 +150,13 @@ static int _check_merging_origin(const struct logical_volume *lv,
return 1;
}
+static void _cond_warn_raid_volume_health(struct cmd_context *cmd, const struct logical_volume *lv)
+{
+ if (lv_is_raid(lv) && !lv_raid_healthy(lv) && !lv_is_partial(lv))
+ log_warn("WARNING: RaidLV %s needs to be refreshed! See character 'r' at position 9 in the RaidLV's attributes%s.", display_lvname(lv),
+ arg_is_set(cmd, all_ARG) ? " and its SubLV(s)" : " and also its SubLV(s) with option '-a'");
+}
+
static int _do_lvs_with_info_and_status_single(struct cmd_context *cmd,
const struct logical_volume *lv,
int do_info, int do_status,
@@ -176,6 +183,8 @@ static int _do_lvs_with_info_and_status_single(struct cmd_context *cmd,
lv = lv->snapshot->lv;
}
+ _cond_warn_raid_volume_health(cmd, lv);
+
if (!report_object(sh ? : handle->custom_handle, sh != NULL,
lv->vg, lv, NULL, NULL, NULL, &status, NULL))
goto out;
@@ -238,6 +247,8 @@ static int _do_segs_with_info_and_status_single(struct cmd_context *cmd,
seg = seg->lv->snapshot;
}
+ _cond_warn_raid_volume_health(cmd, seg->lv);
+
if (!report_object(sh ? : handle->custom_handle, sh != NULL,
seg->lv->vg, seg->lv, NULL, seg, NULL, &status, NULL))
goto_out;
--
2.43.0

View File

@ -0,0 +1,53 @@
From b7334daa69e998b604f59697d7614c54d6373160 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Wed, 12 Jan 2022 16:42:01 -0600
Subject: [PATCH 09/12] vgsplit: don't reread vg_to
The destination vg is first written with the EXPORTED flag,
then the source vg is written, then the destination vg is
written again without the EXPORTED flag. Remove an unnecessary
vg_read of the destination vg just before the second write.
(cherry picked from commit 5e428d22d9647a294eba65852078947df5ade48f)
---
tools/vgsplit.c | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/tools/vgsplit.c b/tools/vgsplit.c
index 9d6534e89..c7f4b8af4 100644
--- a/tools/vgsplit.c
+++ b/tools/vgsplit.c
@@ -728,30 +728,6 @@ int vgsplit(struct cmd_context *cmd, int argc, char **argv)
backup(vg_from);
}
- /*
- * Finally, remove the EXPORTED flag from the new VG and write it out.
- * We need to unlock vg_to because vg_read_for_update wants to lock it.
- */
- if (!test_mode()) {
- unlock_vg(cmd, NULL, vg_name_to);
- release_vg(vg_to);
-
- /*
- * This command uses the exported vg flag internally, but
- * exported VGs are not allowed to be split from the command
- * level, so ALLOW_EXPORTED is not set in commands.h.
- */
- cmd->include_exported_vgs = 1;
-
- vg_to = vg_read_for_update(cmd, vg_name_to, NULL, 0, 0);
-
- if (!vg_to) {
- log_error("Volume group \"%s\" became inconsistent: "
- "please fix manually", vg_name_to);
- goto bad;
- }
- }
-
vg_to->status &= ~EXPORTED_VG;
if (!vg_write(vg_to) || !vg_commit(vg_to))
--
2.43.0

View File

@ -0,0 +1,113 @@
From 2ae69ffd78d3dd65843c48e3369b75ae49787fd4 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Wed, 12 Jan 2022 16:46:26 -0600
Subject: [PATCH 10/12] lvmcache: remove lvmcache_update_vg_from_write
After a vg_write, this function was used to attempt to
make lvmcache data match the new state written to disk.
It was not updated correctly in a many or most cases,
and the resulting lvmcache is not actually used after
vg_write, making the update unnecessary.
(cherry picked from commit cb798ee1c102aadde93965a894c5aa59d4e76e4a)
---
lib/cache/lvmcache.c | 44 -----------------------------------------
lib/cache/lvmcache.h | 1 -
lib/metadata/metadata.c | 7 -------
3 files changed, 52 deletions(-)
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 04e9f0605..85a1d4806 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -2233,50 +2233,6 @@ int lvmcache_update_vgname_and_id(struct cmd_context *cmd, struct lvmcache_info
return 1;
}
-/*
- * FIXME: quit trying to mirror changes that a command is making into lvmcache.
- *
- * First, it's complicated and hard to ensure it's done correctly in every case
- * (it would be much easier and safer to just toss out what's in lvmcache and
- * reread the info to recreate it from scratch instead of trying to make sure
- * every possible discrete state change is correct.)
- *
- * Second, it's unnecessary if commands just use the vg they are modifying
- * rather than also trying to get info from lvmcache. The lvmcache state
- * should be populated by label_scan, used to perform vg_read's, and then
- * ignored (or dropped so it can't be used).
- *
- * lvmcache info is already used very little after a command begins its
- * operation. The code that's supposed to keep the lvmcache in sync with
- * changes being made to disk could be half wrong and we wouldn't know it.
- * That creates a landmine for someone who might try to use a bit of it that
- * isn't being updated correctly.
- */
-
-int lvmcache_update_vg_from_write(struct volume_group *vg)
-{
- char vgid[ID_LEN + 1] __attribute__((aligned(8))) = { 0 };
- struct pv_list *pvl;
- struct lvmcache_info *info;
- struct lvmcache_vgsummary vgsummary = {
- .vgname = vg->name,
- .vgstatus = vg->status,
- .system_id = vg->system_id,
- .lock_type = vg->lock_type
- };
-
- memcpy(vgid, &vg->id, ID_LEN);
- memcpy(vgsummary.vgid, vgid, ID_LEN);
-
- dm_list_iterate_items(pvl, &vg->pvs) {
- if ((info = lvmcache_info_from_pv_id(&pvl->pv->id, pvl->pv->dev, 0)) &&
- !lvmcache_update_vgname_and_id(vg->cmd, info, &vgsummary))
- return_0;
- }
-
- return 1;
-}
-
/*
* The lvmcache representation of a VG after label_scan can be incorrect
* because the label_scan does not use the full VG metadata to construct
diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h
index 9511bb9e9..2a48786e1 100644
--- a/lib/cache/lvmcache.h
+++ b/lib/cache/lvmcache.h
@@ -84,7 +84,6 @@ void lvmcache_del_dev(struct device *dev);
int lvmcache_update_vgname_and_id(struct cmd_context *cmd, struct lvmcache_info *info,
struct lvmcache_vgsummary *vgsummary);
int lvmcache_update_vg_from_read(struct volume_group *vg, unsigned precommitted);
-int lvmcache_update_vg_from_write(struct volume_group *vg);
void lvmcache_lock_vgname(const char *vgname, int read_only);
void lvmcache_unlock_vgname(const char *vgname);
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index c4f65366b..fabc6529a 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -3102,7 +3102,6 @@ static int _vg_commit_mdas(struct volume_group *vg)
DM_LIST_INIT(ignored);
int failed = 0;
int good = 0;
- int cache_updated = 0;
/* Rearrange the metadata_areas_in_use so ignored mdas come first. */
dm_list_iterate_items_safe(mda, tmda, &vg->fid->metadata_areas_in_use)
@@ -3123,12 +3122,6 @@ static int _vg_commit_mdas(struct volume_group *vg)
failed = 1;
} else
good++;
-
- /* Update cache first time we succeed */
- if (!failed && !cache_updated) {
- lvmcache_update_vg_from_write(vg);
- cache_updated = 1;
- }
}
if (good)
return 1;
--
2.43.0

View File

@ -0,0 +1,124 @@
From 05bb44d8216fb258fa6d4d0c237ea5c00085dc9e Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Thu, 6 Jan 2022 10:15:16 -0600
Subject: [PATCH 11/12] handle duplicate vgids
The approach to duplicate VGIDs has been that it is not possible
or not allowed, so the behavior has been undefined. The actual
result was unpredictable and/or broken, and generally unhelpful.
Improve this by recognizing the problem, displaying the VGs,
and printing a warning to fix the problem. Beyond this,
using VGs with duplicate VGIDs remains undefined, but should
work well enough to correct the problem with vgchange -u.
It's possible to create this condition without too much difficulty
by cloning PVs, followed by an incomplete attempt at making the two
VGs unique (vgrename and pvchange -u, but missing vgchange -u.)
(cherry picked from commit 18f451e09e943eb3d51f8394f6fe8967e1e9f565)
---
lib/cache/lvmcache.c | 20 +++++++++++---
test/shell/duplicate-vgid.sh | 52 ++++++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+), 4 deletions(-)
create mode 100644 test/shell/duplicate-vgid.sh
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 85a1d4806..9b3c83736 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -354,9 +354,11 @@ static struct lvmcache_vginfo *_vginfo_lookup(const char *vgname, const char *vg
if (vgid_arg) {
if ((vginfo = dm_hash_lookup(_vgid_hash, vgid))) {
if (vgname && strcmp(vginfo->vgname, vgname)) {
- /* should never happen */
- log_error(INTERNAL_ERROR "vginfo_lookup vgid %s has two names %s %s",
- vgid, vginfo->vgname, vgname);
+ log_warn("WARNING: lookup found duplicate VGID %s for VGs %s and %s.", vgid, vginfo->vgname, vgname);
+ if ((vginfo = dm_hash_lookup(_vgname_hash, vgname))) {
+ if (!memcmp(vginfo->vgid, vgid, ID_LEN))
+ return vginfo;
+ }
return NULL;
}
return vginfo;
@@ -1878,7 +1880,17 @@ static int _lvmcache_update_vgname(struct cmd_context *cmd,
_drop_vginfo(info, info->vginfo);
- if (!(vginfo = lvmcache_vginfo_from_vgid(vgid))) {
+ vginfo = lvmcache_vginfo_from_vgid(vgid);
+ if (vginfo && strcmp(vginfo->vgname, vgname)) {
+ log_warn("WARNING: fix duplicate VGID %s for VGs %s and %s (see vgchange -u).", vgid_dashed, vgname, vginfo->vgname);
+ vginfo = lvmcache_vginfo_from_vgname(vgname, NULL);
+ if (vginfo && memcmp(vginfo->vgid, vgid, ID_LEN)) {
+ log_error("Ignoring %s with conflicting VG info %s %s.", dev_name(info->dev), vgid_dashed, vgname);
+ return_0;
+ }
+ }
+
+ if (!vginfo) {
/*
* Create a vginfo struct for this VG and put the vginfo
* into the hash table.
diff --git a/test/shell/duplicate-vgid.sh b/test/shell/duplicate-vgid.sh
new file mode 100644
index 000000000..12163c2f0
--- /dev/null
+++ b/test/shell/duplicate-vgid.sh
@@ -0,0 +1,52 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2008-2013 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+
+SKIP_WITH_LVMLOCKD=1
+SKIP_WITH_LVMPOLLD=1
+
+. lib/inittest
+
+aux prepare_devs 2
+
+vgcreate $vg1 "$dev1"
+vgchange --setautoactivation n $vg1
+UUID1=$(vgs --noheading -o vg_uuid $vg1 | xargs)
+lvcreate -l1 -an -n $lv1 $vg1
+dd if="$dev1" of="$dev2" bs=1M count=1
+aux disable_dev "$dev1"
+vgrename $vg1 $vg2
+pvchange -u "$dev2"
+aux enable_dev "$dev1"
+
+vgs -o+uuid |tee out
+grep $vg1 out | tee out1
+grep $UUID1 out1
+grep $vg2 out | tee out2
+grep $UUID1 out2
+
+vgs $vg1
+vgs $vg2
+lvs $vg1/$lv1
+lvs $vg2/$lv1
+
+lvremove $vg1/$lv1
+lvremove $vg2/$lv1
+
+lvcreate -l1 -an -n $lv2 $vg1
+lvcreate -l1 -an -n $lv3 $vg2
+
+vgchange -u $vg2
+
+vgs -o uuid $vg1 |tee out
+grep $UUID1 out
+
+vgs -o uuid $vg2 |tee out
+not grep $UUID1 out
+
+vgremove -ff $vg1
+vgremove -ff $vg2
--
2.43.0

View File

@ -0,0 +1,40 @@
From c78f2e6ee218d12fb71fc70cd66a21f4ea324a91 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Thu, 13 Jan 2022 11:41:09 -0600
Subject: [PATCH 12/12] remove unused variable
resulting from commit cb798ee1c102aadde93965a894c5aa59d4e76e4a
"lvmcache: remove lvmcache_update_vg_from_write"
(cherry picked from commit 0c80ea88477b3511562036748d3bf837bf7b3e8b)
---
lib/metadata/metadata.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index fabc6529a..4f947401f 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -3100,7 +3100,6 @@ static int _vg_commit_mdas(struct volume_group *vg)
{
struct metadata_area *mda, *tmda;
DM_LIST_INIT(ignored);
- int failed = 0;
int good = 0;
/* Rearrange the metadata_areas_in_use so ignored mdas come first. */
@@ -3115,11 +3114,9 @@ static int _vg_commit_mdas(struct volume_group *vg)
dm_list_iterate_items(mda, &vg->fid->metadata_areas_in_use) {
if (mda->status & MDA_FAILED)
continue;
- failed = 0;
if (mda->ops->vg_commit &&
!mda->ops->vg_commit(vg->fid, vg, mda)) {
stack;
- failed = 1;
} else
good++;
}
--
2.43.0

View File

@ -0,0 +1,25 @@
From e85d3a5487893cd2b8464d0b9a69f0050f686d7e Mon Sep 17 00:00:00 2001
From: Marian Csontos <mcsontos@redhat.com>
Date: Wed, 29 Nov 2023 15:09:36 +0100
Subject: [PATCH] spec: Install and package /etc/lvm/devices
(cherry picked from commit ee31ba5023e6e1430c0d808f54015ccd3eb3931a)
---
Makefile.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/Makefile.in b/Makefile.in
index f7a46269a..afbb0d1bd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -127,6 +127,7 @@ all_man:
install_system_dirs:
$(INSTALL_DIR) $(DESTDIR)$(DEFAULT_SYS_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_SYS_DIR)/devices
$(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_ARCHIVE_DIR)
$(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_BACKUP_DIR)
$(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_CACHE_DIR)
--
2.43.0

View File

@ -68,7 +68,7 @@ Version: 2.03.14
%if 0%{?from_snapshot} %if 0%{?from_snapshot}
Release: 0.1.20210426git%{shortcommit}%{?dist}%{?rel_suffix} Release: 0.1.20210426git%{shortcommit}%{?dist}%{?rel_suffix}
%else %else
Release: 13%{?dist}%{?rel_suffix} Release: 14%{?dist}%{?rel_suffix}
%endif %endif
License: GPLv2 License: GPLv2
URL: http://sourceware.org/lvm2 URL: http://sourceware.org/lvm2
@ -206,6 +206,27 @@ Patch116: 0115-vdo-support-version-4.patch
Patch117: 0116-vdo-use-long-verbose.patch Patch117: 0116-vdo-use-long-verbose.patch
# BZ 2233901: # BZ 2233901:
Patch118: 0117-vdo-Sync-lvm_import_vdo.sh-with-main-as-of-970e4d295.patch Patch118: 0117-vdo-Sync-lvm_import_vdo.sh-with-main-as-of-970e4d295.patch
# RHEL-8289:
Patch119: 0118-man-Fix-typo.patch
Patch120: 0119-doc-fix-typos-in-documentation.patch
# RHEL-20192:
Patch121: 0120-archiving-Fix-doubled-filename-in-vgcfgrestore.patch
# RHEL-14216:
Patch122: 0121-man-add-inte-g-rity-to-man-lvs.patch
# RHEL-8298:
Patch123: 0122-Fix-lvconvert-m-0-will-always-take-rimage_0-even-if-.patch
Patch124: 0123-lvconvert-fix-lvconvert-m-0-for-in-sync-legs.patch
# RHEL-8334:
Patch125: 0124-Fix-multisegment-RAID1-allocator-uses-one-disk-for-b.patch
# RHEL-8270:
Patch126: 0125-raid-add-messages-to-lvs-command-output-in-case-Raid.patch
## RHEL-8295:
#Patch127: 0126-vgsplit-don-t-reread-vg_to.patch
#Patch128: 0127-lvmcache-remove-lvmcache_update_vg_from_write.patch
#Patch129: 0128-handle-duplicate-vgids.patch
#Patch130: 0129-remove-unused-variable.patch
#
Patch131: 0130-spec-Install-and-package-etc-lvm-devices.patch
BuildRequires: gcc BuildRequires: gcc
%if %{enable_testsuite} %if %{enable_testsuite}
@ -522,6 +543,7 @@ systemctl start lvm2-lvmpolld.socket >/dev/null 2>&1 || :
%dir %{_sysconfdir}/lvm/backup %dir %{_sysconfdir}/lvm/backup
%dir %{_sysconfdir}/lvm/cache %dir %{_sysconfdir}/lvm/cache
%dir %{_sysconfdir}/lvm/archive %dir %{_sysconfdir}/lvm/archive
%dir %{_sysconfdir}/lvm/devices
%dir %{_default_locking_dir} %dir %{_default_locking_dir}
%dir %{_default_run_dir} %dir %{_default_run_dir}
%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
@ -883,6 +905,12 @@ An extensive functional testsuite for LVM2.
%endif %endif
%changelog %changelog
* Fri Feb 02 2024 Marian Csontos <mcsontos@redhat.com> - 2.03.14-14
- Fix multisegment RAID1 allocator using one disk for both legs.
- Fix lvconvert -m 0 taking rimage_0 even if it is out of sync.
- Add warning message when mirror images have (r)efresh bit set.
- Document lv_attr volume type bit (g) for raid+integrity in lvs(8).
* Mon Sep 18 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.14-13.el8_9 * Mon Sep 18 2023 Marian Csontos <mcsontos@redhat.com> - 2.03.14-13.el8_9
- Fix error paths in lvm_import_vdo.sh. - Fix error paths in lvm_import_vdo.sh.