import rear-2.6-4.el8
This commit is contained in:
parent
e28ffcfbe4
commit
137c28b477
56
SOURCES/rear-bz2035939.patch
Normal file
56
SOURCES/rear-bz2035939.patch
Normal file
@ -0,0 +1,56 @@
|
||||
diff --git a/usr/share/rear/conf/default.conf b/usr/share/rear/conf/default.conf
|
||||
index 0c230f38..f231bf3d 100644
|
||||
--- a/usr/share/rear/conf/default.conf
|
||||
+++ b/usr/share/rear/conf/default.conf
|
||||
@@ -2707,6 +2707,15 @@ WARN_MISSING_VOL_ID=1
|
||||
USE_CFG2HTML=
|
||||
# The SKIP_CFG2HTML variable is no longer supported since ReaR 1.18
|
||||
|
||||
+# IP addresses that are present on the system but must be excluded when
|
||||
+# building the network configuration used in recovery mode; this is typically
|
||||
+# used when floating IP addresses are used on the system
|
||||
+EXCLUDE_IP_ADDRESSES=()
|
||||
+
|
||||
+# Network interfaces that are present on the system but must be excluded when
|
||||
+# building the network configuration used in recovery mode
|
||||
+EXCLUDE_NETWORK_INTERFACES=()
|
||||
+
|
||||
# Simplify bonding setups by configuring always the first active device of a
|
||||
# bond, except when mode is 4 (IEEE 802.3ad policy)
|
||||
SIMPLIFY_BONDING=no
|
||||
diff --git a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
index f806bfbf..2385f5b6 100644
|
||||
--- a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
+++ b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
@@ -355,6 +355,11 @@ function is_interface_up () {
|
||||
local network_interface=$1
|
||||
local sysfspath=/sys/class/net/$network_interface
|
||||
|
||||
+ if IsInArray "$network_interface" "${EXCLUDE_NETWORK_INTERFACES[@]}"; then
|
||||
+ LogPrint "Excluding '$network_interface' per EXCLUDE_NETWORK_INTERFACES directive."
|
||||
+ return 1
|
||||
+ fi
|
||||
+
|
||||
local state=$( cat $sysfspath/operstate )
|
||||
if [ "$state" = "down" ] ; then
|
||||
return 1
|
||||
@@ -403,11 +408,19 @@ function ipaddr_setup () {
|
||||
if [ -n "$ipaddrs" ] ; then
|
||||
# If some IP is found for the network interface, then use them
|
||||
for ipaddr in $ipaddrs ; do
|
||||
+ if IsInArray "${ipaddr%%/*}" "${EXCLUDE_IP_ADDRESSES[@]}"; then
|
||||
+ LogPrint "Excluding IP address '$ipaddr' per EXCLUDE_IP_ADDRESSES directive even through it's defined in mapping file '$CONFIG_DIR/mappings/ip_addresses'."
|
||||
+ continue
|
||||
+ fi
|
||||
echo "ip addr add $ipaddr dev $mapped_as"
|
||||
done
|
||||
else
|
||||
# Otherwise, collect IP addresses for the network interface on the system
|
||||
for ipaddr in $( ip a show dev $network_interface scope global | grep "inet.*\ " | tr -s " " | cut -d " " -f 3 ) ; do
|
||||
+ if IsInArray "${ipaddr%%/*}" "${EXCLUDE_IP_ADDRESSES[@]}"; then
|
||||
+ LogPrint "Excluding IP address '$ipaddr' per EXCLUDE_IP_ADDRESSES directive."
|
||||
+ continue
|
||||
+ fi
|
||||
echo "ip addr add $ipaddr dev $mapped_as"
|
||||
done
|
||||
fi
|
78
SOURCES/rear-bz2048454.patch
Normal file
78
SOURCES/rear-bz2048454.patch
Normal file
@ -0,0 +1,78 @@
|
||||
diff --git a/usr/share/rear/layout/save/GNU/Linux/220_lvm_layout.sh b/usr/share/rear/layout/save/GNU/Linux/220_lvm_layout.sh
|
||||
index 35be1721..d3c9ae86 100644
|
||||
--- a/usr/share/rear/layout/save/GNU/Linux/220_lvm_layout.sh
|
||||
+++ b/usr/share/rear/layout/save/GNU/Linux/220_lvm_layout.sh
|
||||
@@ -103,12 +103,7 @@ local lvs_exit_code
|
||||
pdev=$( get_device_name $pdev )
|
||||
|
||||
# Output lvmdev entry to DISKLAYOUT_FILE:
|
||||
- # With the above example the output is:
|
||||
- # lvmdev /dev/system /dev/sda1 7wwpcO-KmNN-qsTE-7sp7-JBJS-vBdC-Zyt1W7 41940992
|
||||
- echo "lvmdev /dev/$vgrp $pdev $uuid $size"
|
||||
-
|
||||
- # After the 'lvmdev' line was written to disklayout.conf so that the user can inspect it
|
||||
- # check that the required positional parameters in the 'lvmdev' line are non-empty
|
||||
+ # Check that the required positional parameters in the 'lvmdev' line are non-empty
|
||||
# because an empty positional parameter would result an invalid 'lvmdev' line
|
||||
# which would cause invalid parameters are 'read' as input during "rear recover"
|
||||
# cf. "Verifying ... 'lvm...' entries" in layout/save/default/950_verify_disklayout_file.sh
|
||||
@@ -117,13 +112,24 @@ local lvs_exit_code
|
||||
# so that this also checks that the variables do not contain blanks or more than one word
|
||||
# because blanks (actually $IFS characters) are used as field separators in disklayout.conf
|
||||
# which means the positional parameter values must be exactly one non-empty word.
|
||||
- # Two separated simple 'test $vgrp && test $pdev' commands are used here because
|
||||
- # 'test $vgrp -a $pdev' does not work when $vgrp is empty or only blanks
|
||||
- # because '-a' has two different meanings: "EXPR1 -a EXPR2" and "-a FILE" (see "help test")
|
||||
- # so that when $vgrp is empty 'test $vgrp -a $pdev' tests if file $pdev exists
|
||||
- # which is usually true because $pdev is usually a partition device node (e.g. /dev/sda1)
|
||||
- # so that when $vgrp is empty 'test $vgrp -a $pdev' would falsely succeed:
|
||||
- test $vgrp && test $pdev || Error "LVM 'lvmdev' entry in $DISKLAYOUT_FILE where volume_group or device is empty or more than one word"
|
||||
+ test $pdev || Error "Cannot make 'lvmdev' entry in disklayout.conf (PV device '$pdev' empty or more than one word)"
|
||||
+ if ! test $vgrp ; then
|
||||
+ # Valid $pdev but invalid $vgrp (empty or more than one word):
|
||||
+ # When $vgrp is empty it means it is a PV that is not part of a VG so the PV exists but it is not used.
|
||||
+ # PVs that are not part of a VG are documented as comment in disklayout.conf but they are not recreated
|
||||
+ # because they were not used on the original system so there is no need to recreate them by "rear recover"
|
||||
+ # (the user can manually recreate them later in his recreated system when needed)
|
||||
+ # cf. https://github.com/rear/rear/issues/2596
|
||||
+ DebugPrint "Skipping PV $pdev that is not part of a valid VG (VG '$vgrp' empty or more than one word)"
|
||||
+ echo "# Skipping PV $pdev that is not part of a valid VG (VG '$vgrp' empty or more than one word):"
|
||||
+ contains_visible_char "$vgrp" || vgrp='<missing_VG>'
|
||||
+ echo "# lvmdev /dev/$vgrp $pdev $uuid $size"
|
||||
+ # Continue with the next line in the output of "lvm pvdisplay -c"
|
||||
+ continue
|
||||
+ fi
|
||||
+ # With the above example the output is:
|
||||
+ # lvmdev /dev/system /dev/sda1 7wwpcO-KmNN-qsTE-7sp7-JBJS-vBdC-Zyt1W7 41940992
|
||||
+ echo "lvmdev /dev/$vgrp $pdev $uuid $size"
|
||||
|
||||
done
|
||||
# Check the exit code of "lvm pvdisplay -c"
|
||||
@@ -161,8 +167,15 @@ local lvs_exit_code
|
||||
# lvmgrp /dev/system 4096 5119 20967424
|
||||
echo "lvmgrp /dev/$vgrp $extentsize $nrextents $size"
|
||||
|
||||
- # Check that the required positional parameters in the 'lvmgrp' line are non-empty
|
||||
- # cf. the code above to "check that the required positional parameters in the 'lvmdev' line are non-empty":
|
||||
+ # Check that the required positional parameters in the 'lvmgrp' line are non-empty.
|
||||
+ # The tested variables are intentionally not quoted here, cf. the code above to
|
||||
+ # "check that the required positional parameters in the 'lvmdev' line are non-empty".
|
||||
+ # Two separated simple 'test $vgrp && test $extentsize' commands are used here because
|
||||
+ # 'test $vgrp -a $extentsize' does not work when $vgrp is empty or only blanks
|
||||
+ # because '-a' has two different meanings: "EXPR1 -a EXPR2" and "-a FILE" (see "help test")
|
||||
+ # so with empty $vgrp it becomes 'test -a $extentsize' that tests if a file $extentsize exists
|
||||
+ # which is unlikely to be true but it is not impossible that a file $extentsize exists
|
||||
+ # so when $vgrp is empty (or blanks) 'test $vgrp -a $extentsize' might falsely succeed:
|
||||
test $vgrp && test $extentsize || Error "LVM 'lvmgrp' entry in $DISKLAYOUT_FILE where volume_group or extentsize is empty or more than one word"
|
||||
|
||||
done
|
||||
@@ -305,7 +318,8 @@ local lvs_exit_code
|
||||
fi
|
||||
already_processed_lvs+=( "$vg/$lv" )
|
||||
# Check that the required positional parameters in the 'lvmvol' line are non-empty
|
||||
- # cf. the code above to "check that the required positional parameters in the 'lvmdev' line are non-empty":
|
||||
+ # cf. the code above to "check that the required positional parameters in the 'lvmdev' line are non-empty"
|
||||
+ # and the code above to "check that the required positional parameters in the 'lvmgrp' line are non-empty":
|
||||
test $vg && test $lv && test $size && test $layout || Error "LVM 'lvmvol' entry in $DISKLAYOUT_FILE where volume_group or name or size or layout is empty or more than one word"
|
||||
fi
|
||||
|
25
SOURCES/rear-bz2049091.patch
Normal file
25
SOURCES/rear-bz2049091.patch
Normal file
@ -0,0 +1,25 @@
|
||||
diff --git a/usr/share/rear/layout/save/default/335_remove_excluded_multipath_vgs.sh b/usr/share/rear/layout/save/default/335_remove_excluded_multipath_vgs.sh
|
||||
index 040e9eec..e731c994 100644
|
||||
--- a/usr/share/rear/layout/save/default/335_remove_excluded_multipath_vgs.sh
|
||||
+++ b/usr/share/rear/layout/save/default/335_remove_excluded_multipath_vgs.sh
|
||||
@@ -19,9 +19,9 @@ while read lvmdev name mpdev junk ; do
|
||||
# Remember, multipath devices from a volume group that is "excluded" should be 'commented out'
|
||||
device=$(echo $mpdev | cut -c1-45)
|
||||
while read LINE ; do
|
||||
- # Now we need to comment all lines that contain "$devices" in the LAYOUT_FILE
|
||||
+ # Now we need to comment all lines that contain "$device" in the LAYOUT_FILE
|
||||
sed -i "s|^$LINE|\#$LINE|" "$LAYOUT_FILE"
|
||||
- done < <(grep "$device" $LAYOUT_FILE | grep -v "^#")
|
||||
+ done < <(grep " $device " $LAYOUT_FILE | grep -v "^#")
|
||||
Log "Excluding multipath device $device"
|
||||
done < <(grep "^#lvmdev" $LAYOUT_FILE)
|
||||
|
||||
@@ -31,7 +31,7 @@ done < <(grep "^#lvmdev" $LAYOUT_FILE)
|
||||
while read LINE ; do
|
||||
# multipath /dev/mapper/360060e8007e2e3000030e2e300002065 /dev/sdae,/dev/sdat,/dev/sdbi,/dev/sdp
|
||||
device=$(echo $LINE | awk '{print $2}' | cut -c1-45)
|
||||
- num=$(grep "$device" $LAYOUT_FILE | grep -v "^#" | wc -l)
|
||||
+ num=$(grep " $device " $LAYOUT_FILE | grep -v "^#" | wc -l)
|
||||
if [ $num -lt 2 ] ; then
|
||||
# If the $device is only seen once (in a uncommented line) then the multipath is not in use
|
||||
sed -i "s|^$LINE|\#$LINE|" "$LAYOUT_FILE"
|
60
SOURCES/rear-pr2675.patch
Normal file
60
SOURCES/rear-pr2675.patch
Normal file
@ -0,0 +1,60 @@
|
||||
diff --git a/usr/share/rear/lib/framework-functions.sh b/usr/share/rear/lib/framework-functions.sh
|
||||
index 4878216b..e919bdbf 100644
|
||||
--- a/usr/share/rear/lib/framework-functions.sh
|
||||
+++ b/usr/share/rear/lib/framework-functions.sh
|
||||
@@ -121,7 +121,7 @@ function cleanup_build_area_and_end_program () {
|
||||
sleep 2
|
||||
umount_mountpoint_lazy $BUILD_DIR/outputfs
|
||||
fi
|
||||
- remove_temporary_mountpoint '$BUILD_DIR/outputfs' || BugError "Directory $BUILD_DIR/outputfs not empty, can not remove"
|
||||
+ remove_temporary_mountpoint "$BUILD_DIR/outputfs" || BugError "Directory $BUILD_DIR/outputfs not empty, can not remove"
|
||||
rmdir $v $BUILD_DIR >&2
|
||||
fi
|
||||
Log "End of program reached"
|
||||
diff --git a/usr/share/rear/lib/global-functions.sh b/usr/share/rear/lib/global-functions.sh
|
||||
index c1a11615..0f8f362d 100644
|
||||
--- a/usr/share/rear/lib/global-functions.sh
|
||||
+++ b/usr/share/rear/lib/global-functions.sh
|
||||
@@ -317,7 +317,20 @@ function url_path() {
|
||||
|
||||
### Returns true if one can upload files to the URL
|
||||
function scheme_accepts_files() {
|
||||
- local scheme=$1
|
||||
+ # Be safe against 'set -eu' which would exit 'rear' with "bash: $1: unbound variable"
|
||||
+ # when scheme_accepts_files is called without an argument
|
||||
+ # by bash parameter expansion with using an empty default value if $1 is unset or null.
|
||||
+ # Bash parameter expansion with assigning a default value ${1:=} does not work
|
||||
+ # (then it would still exit with "bash: $1: cannot assign in this way")
|
||||
+ # but using a default value is practicable here because $1 is used only once
|
||||
+ # cf. https://github.com/rear/rear/pull/2675#discussion_r705018956
|
||||
+ local scheme=${1:-}
|
||||
+ # Return false if scheme is empty or blank (e.g. when OUTPUT_URL is unset or empty or blank)
|
||||
+ # cf. https://github.com/rear/rear/issues/2676
|
||||
+ # and https://github.com/rear/rear/issues/2667#issuecomment-914447326
|
||||
+ # also return false if scheme is more than one word (so no quoted "$scheme" here)
|
||||
+ # cf. https://github.com/rear/rear/pull/2675#discussion_r704401462
|
||||
+ test $scheme || return 1
|
||||
case $scheme in
|
||||
(null|tape|obdr)
|
||||
# tapes do not support uploading arbitrary files, one has to handle them
|
||||
@@ -341,7 +354,10 @@ function scheme_accepts_files() {
|
||||
### Returning true does not imply that the URL is currently mounted at a filesystem and usable,
|
||||
### only that it can be mounted (use mount_url() first)
|
||||
function scheme_supports_filesystem() {
|
||||
- local scheme=$1
|
||||
+ # Be safe against 'set -eu' exit if scheme_supports_filesystem is called without argument
|
||||
+ local scheme=${1:-}
|
||||
+ # Return false if scheme is empty or blank or more than one word, cf. scheme_accepts_files() above
|
||||
+ test $scheme || return 1
|
||||
case $scheme in
|
||||
(null|tape|obdr|rsync|fish|ftp|ftps|hftp|http|https|sftp)
|
||||
return 1
|
||||
@@ -560,7 +576,7 @@ function umount_url() {
|
||||
|
||||
RemoveExitTask "perform_umount_url '$url' '$mountpoint' lazy"
|
||||
|
||||
- remove_temporary_mountpoint '$mountpoint' && RemoveExitTask "remove_temporary_mountpoint '$mountpoint'"
|
||||
+ remove_temporary_mountpoint "$mountpoint" && RemoveExitTask "remove_temporary_mountpoint '$mountpoint'"
|
||||
return 0
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
Summary: Relax-and-Recover is a Linux disaster recovery and system migration tool
|
||||
Name: rear
|
||||
Version: 2.6
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
License: GPLv3
|
||||
Group: Applications/File
|
||||
URL: http://relax-and-recover.org/
|
||||
@ -19,6 +19,10 @@ Patch34: rear-asciidoc.patch
|
||||
Patch35: rear-bz1983013.patch
|
||||
Patch36: rear-bz1993296.patch
|
||||
Patch37: rear-bz1747468.patch
|
||||
Patch38: rear-bz2049091.patch
|
||||
Patch39: rear-pr2675.patch
|
||||
Patch40: rear-bz2048454.patch
|
||||
Patch41: rear-bz2035939.patch
|
||||
|
||||
### Dependencies on all distributions
|
||||
BuildRequires: asciidoc
|
||||
@ -67,8 +71,10 @@ Requires: /usr/sbin/bootlist
|
||||
|
||||
Requires: crontabs
|
||||
Requires: iproute
|
||||
#Requires: mkisofs
|
||||
# No ISO image support on s390x (may change when we add support for LPARs)
|
||||
%ifnarch s390x
|
||||
Requires: xorriso
|
||||
%endif
|
||||
|
||||
# mingetty is not available anymore with RHEL 7 (use agetty instead via systemd)
|
||||
# Note that CentOS also has rhel defined so there is no need to use centos
|
||||
@ -120,6 +126,10 @@ fi
|
||||
%patch35 -p1
|
||||
%patch36 -p1
|
||||
%patch37 -p1
|
||||
%patch38 -p1
|
||||
%patch39 -p1
|
||||
%patch40 -p1
|
||||
%patch41 -p1
|
||||
|
||||
echo "30 1 * * * root test -f /var/lib/rear/layout/disklayout.conf && /usr/sbin/rear checklayout || /usr/sbin/rear mkrescue" >rear.cron
|
||||
|
||||
@ -153,6 +163,14 @@ TZ=UTC %{__make} -C doc
|
||||
%{_sbindir}/rear
|
||||
|
||||
%changelog
|
||||
* Sun Feb 27 2022 Pavel Cahyna <pcahyna@redhat.com> - 2.6-4
|
||||
- Apply PR2675 to fix leftover temp dir bug (introduced in backported PR2625)
|
||||
- Apply PR2603 to ignore unused PV devices
|
||||
- Apply upstream PR2750 to avoid exclusion of wanted multipath devices
|
||||
- Remove unneeded xorriso dep on s390x (no ISO image support there)
|
||||
- Apply upstream PR2736 to add the EXCLUDE_{IP_ADDRESSES,NETWORK_INTERFACES}
|
||||
options
|
||||
|
||||
* Mon Aug 30 2021 Pavel Cahyna <pcahyna@redhat.com> - 2.6-3
|
||||
- Add patch for better handling of thin pools and other LV types not supported
|
||||
by vgcfgrestore
|
||||
|
Loading…
Reference in New Issue
Block a user