stable-2.02 - thin: pass through whole code
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8a0f9537f14267bae41...
Commit: 8a0f9537f14267bae4153deb9160ae2d75623829
Parent: 3a2ada80cb9f8982c91772a0bb4309027dcb8b2b
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 25 14:34:49 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
thin: pass through whole code
Instead of early 'return 0' let the whole code finish
in case of an error with syncing.
---
lib/metadata/thin_manip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadata/thin_manip.c b/lib/metadata/thin_manip.c
index 02a97d588..db2644a05 100644
--- a/lib/metadata/thin_manip.c
+++ b/lib/metadata/thin_manip.c
@@ -534,7 +534,7 @@ int update_pool_lv(struct logical_volume *lv, int activate)
if (!sync_local_dev_names(lv->vg->cmd)) {
log_error("Failed to sync local devices LV %s.",
display_lvname(lv));
- return 0;
+ ret = 0;
}
if (activate &&
3 years, 6 months
stable-2.02 - thin: improve error message
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3a2ada80cb9f8982c91...
Commit: 3a2ada80cb9f8982c91772a0bb4309027dcb8b2b
Parent: 22b256a09ae6a7def0228a18a940b3f6876c3211
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 25 22:42:22 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
thin: improve error message
Add more info, explaing why the suspend of thin snapshot origin was omitted.
---
lib/thin/thin.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/thin/thin.c b/lib/thin/thin.c
index b6eb3aaae..69317a8e5 100644
--- a/lib/thin/thin.c
+++ b/lib/thin/thin.c
@@ -360,8 +360,11 @@ static int _thin_pool_add_target_line(struct dev_manager *dm,
if (!lv_thin_pool_transaction_id(seg->lv, &transaction_id))
return_0; /* Thin pool should exist and work */
if ((transaction_id + 1) != seg->transaction_id) {
- log_error("Can't create snapshot %s as origin %s is not suspended.",
- lmsg->u.lv->name, origin->name);
+ log_error("Omitting suspend of thin snapshot origin %s with expected "
+ "transaction_id " FMTu64 ", but active pool has " FMTu64 ".",
+ display_lvname(origin),
+ !seg->transaction_id ? 0 : seg->transaction_id - 1,
+ transaction_id);
return 0;
}
}
3 years, 6 months
stable-2.02 - thin: enhance lvcreate error paths
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=22b256a09ae6a7def02...
Commit: 22b256a09ae6a7def0228a18a940b3f6876c3211
Parent: 9e8016ffa96490f040cab35b83c18ef92409b7b9
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 25 22:43:57 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
thin: enhance lvcreate error paths
Improve error response and reporting, when creating thin snapshots.
If the thin pool kernel metadata already have device with ID lvm2
tries to create, give more meanigful error message and also properly
restore transaction id to the value known to thin-pool in this case.
Before it's been possible to divert by one from kernel TID value,
and lvm2 stacked delete message for such thin device.
---
WHATS_NEW | 1 +
lib/metadata/lv_manip.c | 39 ++++++++++++++++++++++++++++++++-------
2 files changed, 33 insertions(+), 7 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 8b6f8965c..fe1093201 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.188 -
==================================
+ Enhance reporting and error handling when creating thin volumes.
Use revert_lv() on reload error path after vg_revert().
Improve estimation of needed extents when creating thin-pool.
Use extra 1% when resizing thin-pool metadata LV with --use-policy.
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 1bed4f525..dbfb306de 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -7522,6 +7522,8 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
struct lv_segment *seg, *pool_seg;
int thin_pool_was_active = -1; /* not scanned, inactive, active */
int historical;
+ uint64_t transaction_id;
+ int ret;
if (new_lv_name && lv_name_is_used_in_vg(vg, new_lv_name, &historical)) {
log_error("%sLogical Volume \"%s\" already exists in "
@@ -7976,15 +7978,38 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
log_very_verbose("Cache pool is prepared.");
} else if (lv_is_thin_volume(lv)) {
/* For snapshot, suspend active thin origin first */
- if (origin_lv && lv_is_active(origin_lv) && lv_is_thin_volume(origin_lv)) {
- if (!suspend_lv_origin(cmd, origin_lv)) {
- log_error("Failed to suspend thin snapshot origin %s/%s.",
- origin_lv->vg->name, origin_lv->name);
- goto revert_new_lv;
+ if (origin_lv && lv_is_thin_volume(origin_lv) && lv_is_active(origin_lv)) {
+ if (!(ret = suspend_lv_origin(cmd, origin_lv))) {
+ log_error("Failed to suspend thin snapshot origin %s.",
+ display_lvname(origin_lv));
}
+ /* Note: always proceed with resume_lv() to leave critical_section */
if (!resume_lv_origin(cmd, origin_lv)) { /* deptree updates thin-pool */
- log_error("Failed to resume thin snapshot origin %s/%s.",
- origin_lv->vg->name, origin_lv->name);
+ log_error("Failed to resume thin snapshot origin %s.",
+ display_lvname(origin_lv));
+ if (ret)
+ /* suspend with message was OK, only resume failed */
+ goto revert_new_lv; /* hard to fix things here */
+ }
+ if (!ret) {
+ /* Pool transaction_id has been incremented for this canceled transaction
+ * and needs to be restored to the state from this canceled segment.
+ * TODO: there is low chance actual suspend has failed
+ */
+ if (!lv_thin_pool_transaction_id(pool_lv, &transaction_id)) {
+ log_error("Aborting. Failed to read transaction_id from thin pool %s.",
+ display_lvname(pool_lv)); /* Can't even get thin pool transaction id ??? */
+ } else if (transaction_id != first_seg(pool_lv)->transaction_id) {
+ if (transaction_id == seg->transaction_id)
+ log_debug_metadata("Reverting back transaction_id " FMTu64 " for thin pool %s.",
+ seg->transaction_id, display_lvname(pool_lv));
+ else
+ log_warn("WARNING: Metadata for thin pool %s have transaction_id " FMTu64
+ ", but active pool has " FMTu64 ".",
+ display_lvname(pool_lv), seg->transaction_id, transaction_id);
+ first_seg(pool_lv)->transaction_id = seg->transaction_id;
+ first_seg(lv)->device_id = 0; /* no delete of never existing thin device */
+ }
goto revert_new_lv;
}
/* At this point remove pool messages, snapshot is active */
3 years, 6 months
stable-2.02 - thin: no delete message for device_id 0
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9e8016ffa96490f040c...
Commit: 9e8016ffa96490f040cab35b83c18ef92409b7b9
Parent: 5726b93709890ddc6f9f08a28ca1e835b2c05a3b
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 25 22:42:53 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
thin: no delete message for device_id 0
Since we always use device_id > 0, we could use
device_id == 0 to actually mark thinLV as an
LV we want to remove without delete message.
---
lib/metadata/pool_manip.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/metadata/pool_manip.c b/lib/metadata/pool_manip.c
index b832db747..1381f29bf 100644
--- a/lib/metadata/pool_manip.c
+++ b/lib/metadata/pool_manip.c
@@ -296,7 +296,8 @@ int detach_pool_lv(struct lv_segment *seg)
if (!detach_thin_external_origin(seg))
return_0;
- if (!attach_pool_message(first_seg(seg->pool_lv),
+ if (seg->device_id && /* Only thins with device_id > 0 can be deleted */
+ !attach_pool_message(first_seg(seg->pool_lv),
DM_THIN_MESSAGE_DELETE,
NULL, seg->device_id, no_update))
return_0;
3 years, 6 months
stable-2.02 - activation: use revert_lv on tree suspend failure
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=5726b93709890ddc6f9...
Commit: 5726b93709890ddc6f9f08a28ca1e835b2c05a3b
Parent: 05ba12350c8530395d675538b8b3b741274e041d
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Tue Sep 22 13:35:27 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
activation: use revert_lv on tree suspend failure
When thetable reload fails during suspend() - we were only calling
plain resume() - and this will reload only those devices,
which were left suspend, but will not try to restore
metadata state according to lvm2 reverted metadata.
So if we were reloading device tree - we have restored
only top-level LV and rest of reverted device manipulation
were left alone and possibly mismatched what is in committed
metadata.
FIXME: There are several cases were such revert will likely not work
properly anyway as some operation are currenly handled in single commit,
while they need multiple commits, but it's step towards better correctness.
At least we catch there errors now earlier.
---
WHATS_NEW | 1 +
lib/activate/activate.c | 3 +++
lib/metadata/lv_manip.c | 4 ++++
3 files changed, 8 insertions(+)
diff --git a/WHATS_NEW b/WHATS_NEW
index 125e094ee..8b6f8965c 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.188 -
==================================
+ Use revert_lv() on reload error path after vg_revert().
Improve estimation of needed extents when creating thin-pool.
Use extra 1% when resizing thin-pool metadata LV with --use-policy.
Enhance --use-policy percentage rounding.
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index 50269acd1..3f3adafba 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -2542,6 +2542,9 @@ static int _lv_resume(struct cmd_context *cmd, const char *lvid_s,
lv_is_thin_volume(lv) ? " thin only" : " without snapshots") : "",
laopts->revert ? " (reverting)" : "");
+ if (laopts->revert)
+ goto needs_resume;
+
if (!lv_info(cmd, lv, laopts->origin_only, &info, 0, 0))
goto_out;
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 63ed182bd..1bed4f525 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -6448,6 +6448,10 @@ static int _lv_update_and_reload(struct logical_volume *lv, int origin_only)
log_error("Failed to lock logical volume %s.",
display_lvname(lock_lv));
vg_revert(vg);
+ if (!revert_lv(vg->cmd, lock_lv))
+ log_error("Failed to revert logical volume %s.",
+ display_lvname(lock_lv));
+ return 0;
} else if (!(r = vg_commit(vg)))
stack; /* !vg_commit() has implict vg_revert() */
else
3 years, 6 months
stable-2.02 - tests: use zero backend
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=688c72411e206008d5c...
Commit: 688c72411e206008d5cd7553ed0b126549b7f987
Parent: cd681efd9fa2d2fd74093e702c708461dc5f0348
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat Sep 19 15:58:11 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
tests: use zero backend
Since we are not reading read - just use zero device as backend for
test, so we do not eat real disk space.
---
test/shell/lvcreate-large-raid.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/shell/lvcreate-large-raid.sh b/test/shell/lvcreate-large-raid.sh
index b66cfd26e..a7af9cb48 100644
--- a/test/shell/lvcreate-large-raid.sh
+++ b/test/shell/lvcreate-large-raid.sh
@@ -38,7 +38,7 @@ aux lvmconf 'devices/issue_discards = 1'
# Delay PVs so that resynchronization doesn't fill too much space
for device in "${DEVICES[@]}"
do
- aux delay_dev "$device" 0 10 "$(get first_extent_sector "$device")"
+ aux zero_dev "$device" "$(( $(get first_extent_sector "$device") + 8192 )):"
done
# bz837927 START
3 years, 6 months
stable-2.02 - tests: inittest supports SKIP_WITH_LOW_SPACE
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=cd681efd9fa2d2fd740...
Commit: cd681efd9fa2d2fd74093e702c708461dc5f0348
Parent: 3f06b5c39c47e0540db0ca26c7c0b93ad19f123c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 18 14:25:50 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
tests: inittest supports SKIP_WITH_LOW_SPACE
Test can set individually a higher value for required free space on
storage.
Note: it is not fully reliable since when 'brd' (ramdisk) device is used
this free space value is rather meanigul, but it might help
in case where a real filesystem is doing back-end for test devices.
---
test/lib/inittest.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/test/lib/inittest.sh b/test/lib/inittest.sh
index 967fc1f66..993dec5cf 100644
--- a/test/lib/inittest.sh
+++ b/test/lib/inittest.sh
@@ -50,6 +50,7 @@ SKIP_WITH_LVMETAD=${SKIP_WITH_LVMETAD-}
SKIP_WITH_LVMPOLLD=${SKIP_WITH_LVMPOLLD-}
SKIP_WITH_LVMLOCKD=${SKIP_WITH_LVMLOCKD-}
SKIP_ROOT_DM_CHECK=${SKIP_ROOT_DM_CHECK-}
+SKIP_WITH_LOW_SPACE=${SKIP_WITH_LOW_SPACE-50}
test -n "$LVM_TEST_FLAVOUR" || { echo "NOTE: Empty flavour">&2; initskip; }
test -f "lib/flavour-$LVM_TEST_FLAVOUR" || { echo "NOTE: Flavour '$LVM_TEST_FLAVOUR' does not exist">&2; initskip; }
@@ -134,10 +135,9 @@ elif test -z "$SKIP_ROOT_DM_CHECK" ; then
fi
echo "$TESTNAME" >TESTNAME
-
# Require 50M of free space in testdir
-test "$(df -k -P . | awk '/\// {print $4}')" -gt 51200 || \
- skip "Testing requires more then 50M of free space in directory $TESTDIR!\\n$(df -H | sed -e 's,^,## DF: ,')"
+test "$(df -k -P . | awk '/\// {print $4}')" -gt $(( SKIP_WITH_LOW_SPACE * 1024 )) || \
+ skip "Testing requires more then ${SKIP_WITH_LOW_SPACE}M of free space in directory $TESTDIR!\\n$(df -H | sed -e 's,^,## DF: ,')"
echo "Kernel is $(uname -a)"
# Report SELinux mode
3 years, 6 months
stable-2.02 - tests: utils better handle ouf of disk space
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3f06b5c39c47e0540db...
Commit: 3f06b5c39c47e0540db0ca26c7c0b93ad19f123c
Parent: 276e22e263645138d315c1057c85233ad32f0c11
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 18 14:29:15 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
tests: utils better handle ouf of disk space
When the test exhausts all the available free space on storage device,
then during the fail we cannot write anything as well - yet
the teardown needs to finish it's work - otherwise we leave
basicaly overfilled filesystem for all remaining tests.
---
test/lib/utils.sh | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/test/lib/utils.sh b/test/lib/utils.sh
index 36fbf0602..4f4bf9a21 100644
--- a/test/lib/utils.sh
+++ b/test/lib/utils.sh
@@ -135,18 +135,23 @@ STACKTRACE() {
# Get backtraces from coredumps
if which gdb &>/dev/null; then
- {
- echo bt full
- echo l
- echo quit
- } > gdb_commands.txt
-
# Check for all cores newer then TESTNAME file
# Assume users keep prefix 'core'
# TODO: possibly better integrate with coredumpctl & systemd
while IFS= read -r i; do
bin=$(gdb -batch -c "$i" 2>&1 | grep "generated by" | \
sed -e "s,.*generated by \`\([^ ']*\).*,\1,") || continue
+ {
+ echo bt full
+ echo l
+ echo quit
+ } > gdb_commands.txt || rm -f gdb_commands.txt
+
+ if test ! -s gdb_commands.txt ; then
+ echo "Out of disk space, can't check coredump $i generated by $bin."
+ continue
+ fi
+
echo "## Checking coredump: $i generated by $bin."
gdb -batch -c "$i" -x gdb_commands.txt "$(which "$bin")" 2>/dev/null | \
sed -e "s,^,## GDB: ," || continue
@@ -171,10 +176,9 @@ STACKTRACE() {
echo "<======== Strace debug log ========>"
sed -e "s,^,## STRACE: ," strace.log
fi
- dmsetup info -c | grep1_ "$PREFIX" > out
- if test "$(wc -l < out)" -gt 1 ; then
+ if dmsetup info -c | grep -q "$PREFIX" ; then
echo "<======== Info ========>"
- sed -e "s,^,## DMINFO: ," out
+ dmsetup info -c | grep1_ "$PREFIX"| sed -e "s,^,## DMINFO: ,"
echo "<======== Active table ========>"
dmsetup table | grep "$PREFIX" | sed -e "s,^,## DMTABLE: ,"
echo "<======== Inactive table ========>"
3 years, 6 months
stable-2.02 - tests: aux better handle invalid table
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=276e22e263645138d31...
Commit: 276e22e263645138d315c1057c85233ad32f0c11
Parent: f9327d040c4a9b525117b40adea796a8072a25c7
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 18 14:23:20 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
tests: aux better handle invalid table
In cases where internal functions like zero_dev, delay_dev pass-in
invalid parameter so resulting table can't work, resume at least
previous table line before failing out - so the cleaning process
later on is not stuck waiting on a suspended device.
---
test/lib/aux.sh | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 75dcbc41d..8758dc01d 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -1117,7 +1117,13 @@ restore_from_devtable() {
for dev in "$@"; do
local name=${dev##*/}
dmsetup load "$name" "$name.devtable"
- dmsetup resume "$name"
+ if not dmsetup resume "$name" ; then
+ dmsetup clear $name
+ dmsetup resume $name
+ finish_udev_transaction
+ echo "Device $name has unusable table \"$(cat $name.devtable)\""
+ return 1
+ fi
done
finish_udev_transaction
3 years, 6 months
stable-2.02 - tests: smaller delay and lowered version
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f9327d040c4a9b52511...
Commit: f9327d040c4a9b525117b40adea796a8072a25c7
Parent: 238da8ddd9c7dd9e9c9413564d67e8bd7055b4ec
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Oct 16 13:33:28 2020 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Fri Oct 16 17:07:59 2020 +0200
tests: smaller delay and lowered version
See if this will still work. Some boxes are delayed too much.
Also try to check for raid extend progress from version 1.13.
---
test/shell/lvextend-raid.sh | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/test/shell/lvextend-raid.sh b/test/shell/lvextend-raid.sh
index 04e9adf87..e8bd7deea 100644
--- a/test/shell/lvextend-raid.sh
+++ b/test/shell/lvextend-raid.sh
@@ -15,10 +15,9 @@ SKIP_WITH_LVMPOLLD=1
. lib/inittest
-aux have_raid 1 7 0 || skip
-
-v1_15_0=0
-aux have_raid 1 15 0 && v1_15_0=1
+aux have_raid 1 3 0 || skip
+PROGRESS=0
+aux have_raid 1 13 0 && PROGRESS=1
# Use smallest regionsize to save VG space
regionsize=$(getconf PAGESIZE) # in bytes
@@ -42,10 +41,14 @@ lvcreate -l1 $vg "$dev1"
lvcreate -l1 $vg "$dev2"
sector=$(( $(get first_extent_sector "$dev2") + 2048 ))
-aux delayzero_dev "$dev2" 0 50 "${sector}:"
+aux zero_dev "$dev1" "${sector}:"
+aux delayzero_dev "$dev2" 0 10 "${sector}:"
# Create raid1 LV consuming 1 MD bitmap page
lvcreate --yes --type raid1 --regionsize ${regionsize}K -L$(($lvsz-$lvext))M -n $lv1 $vg
+
+lvs -a $vg
+
not check lv_field $vg/$lv1 sync_percent "100.00"
check lv_field $vg/$lv1 size "$(($lvsz-$lvext)).00m" $vg/$lv1
aux wait_for_sync $vg $lv1
@@ -54,31 +57,32 @@ check lv_field $vg/$lv1 region_size "4.00k"
# to slow down extension - slowdown readings
aux delayzero_dev "$dev1" 50 0 "${sector}:"
+aux delayzero_dev "$dev2" 0 50 "${sector}:"
-dmsetup table
-dmsetup info -c
-dmsetup status
# Extend so that full MD bitmap page is consumed
-lvextend -vvvv -y -L+${lvext}M $vg/$lv1
+lvextend -y -L+${lvext}M $vg/$lv1
+if [ $PROGRESS -eq 1 ]
+then
not check lv_field $vg/$lv1 sync_percent "100.00"
check lv_field $vg/$lv1 size "$(($lvsz)).00m" $vg/$lv1
-lvs -a $vg
+fi
aux wait_for_sync $vg $lv1
check lv_field $vg/$lv1 sync_percent "100.00"
# Extend so that another MD bitmap page is allocated
lvextend -y -L+${lvext}M $vg/$lv1
-if [ $v1_15_0 -eq 1 ]
+if [ $PROGRESS -eq 1 ]
then
not check lv_field $vg/$lv1 sync_percent "100.00"
else
check lv_field $vg/$lv1 sync_percent "100.00"
fi
-aux wait_for_sync $vg $lv1
-check lv_field $vg/$lv1 sync_percent "100.00"
-check lv_field $vg/$lv1 size "$(($lvsz+$lvext)).00m" $vg/$lv1
aux enable_dev "$dev1"
aux enable_dev "$dev2"
+aux wait_for_sync $vg $lv1
+check lv_field $vg/$lv1 sync_percent "100.00"
+check lv_field $vg/$lv1 size "$(($lvsz+$lvext)).00m" $vg/$lv1
+
vgremove -ff $vg
3 years, 6 months