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:
parent
f62867f3e4
commit
09f8953388
25
0118-man-Fix-typo.patch
Normal file
25
0118-man-Fix-typo.patch
Normal 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
|
||||||
|
|
649
0119-doc-fix-typos-in-documentation.patch
Normal file
649
0119-doc-fix-typos-in-documentation.patch
Normal 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
|
||||||
|
|
26
0120-archiving-Fix-doubled-filename-in-vgcfgrestore.patch
Normal file
26
0120-archiving-Fix-doubled-filename-in-vgcfgrestore.patch
Normal 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
|
||||||
|
|
26
0121-man-add-inte-g-rity-to-man-lvs.patch
Normal file
26
0121-man-add-inte-g-rity-to-man-lvs.patch
Normal 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
|
||||||
|
|
@ -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
|
||||||
|
|
52
0123-lvconvert-fix-lvconvert-m-0-for-in-sync-legs.patch
Normal file
52
0123-lvconvert-fix-lvconvert-m-0-for-in-sync-legs.patch
Normal 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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
53
0126-vgsplit-don-t-reread-vg_to.patch
Normal file
53
0126-vgsplit-don-t-reread-vg_to.patch
Normal 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
|
||||||
|
|
113
0127-lvmcache-remove-lvmcache_update_vg_from_write.patch
Normal file
113
0127-lvmcache-remove-lvmcache_update_vg_from_write.patch
Normal 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
|
||||||
|
|
124
0128-handle-duplicate-vgids.patch
Normal file
124
0128-handle-duplicate-vgids.patch
Normal 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
|
||||||
|
|
40
0129-remove-unused-variable.patch
Normal file
40
0129-remove-unused-variable.patch
Normal 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
|
||||||
|
|
25
0130-spec-Install-and-package-etc-lvm-devices.patch
Normal file
25
0130-spec-Install-and-package-etc-lvm-devices.patch
Normal 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
|
||||||
|
|
30
lvm2.spec
30
lvm2.spec
@ -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.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user