main - aux: use unused brd device for testing
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a51b6d5e4269ba4a5b3...
Commit: a51b6d5e4269ba4a5b335a3894873c750c2e8384
Parent: 5e4c0701d9d37eaa46468319c4df8f221acd38b3
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Apr 24 23:46:50 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Apr 25 00:12:31 2023 +0200
aux: use unused brd device for testing
When 'brd' device can be removed (is unused AKA not opened),
remove such device and use again for testing.
Let's assume user has no unused brd device left in the system.
When the 'tests' sometimes fail to cleanup devices, with this
change futher cleanup from some next test may evenually release
brd device and make it available for testing.
---
test/lib/aux.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 8b04e1d30..b2660b65c 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -675,6 +675,9 @@ prepare_loop() {
prepare_ramdisk() {
local size=$1
+ # if brd is unused, remove and use for test
+ modprobe -r brd || return 0
+
echo -n "## preparing ramdisk device..."
modprobe brd rd_size=$((size * 1024)) || return
5 months, 1 week
main - aux: more efficient lvmlock shutdown
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=5e4c0701d9d37eaa464...
Commit: 5e4c0701d9d37eaa46468319c4df8f221acd38b3
Parent: 8947964f10499cf286985da37973cdbcaff9d7f1
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Apr 24 22:18:57 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Apr 25 00:12:31 2023 +0200
aux: more efficient lvmlock shutdown
---
test/lib/aux.sh | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index a385df76b..8b04e1d30 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -175,7 +175,7 @@ prepare_lvmlockd() {
fi
sleep 1
- if ! pgrep lvmlockd; then
+ if ! pgrep lvmlockd >LOCAL_LVMLOCKD; then
echo "Failed to start lvmlockd"
exit 1
fi
@@ -552,11 +552,7 @@ teardown() {
if test -n "$LVM_TEST_LVMLOCKD_TEST" ; then
echo ""
echo "## stopping lvmlockd in teardown"
- killall lvmlockd
- sleep 1
- killall lvmlockd || true
- sleep 1
- killall -9 lvmlockd || true
+ kill_sleep_kill_ LOCAL_LVMLOCKD 0
fi
dm_table | not grep -E -q "$vg|$vg1|$vg2|$vg3|$vg4" || {
5 months, 1 week
main - wipe_lv: use zeroing ioctl only for large sizes
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8947964f10499cf2869...
Commit: 8947964f10499cf286985da37973cdbcaff9d7f1
Parent: 31cfcf7ce9aab5dd16ba15e48bfe33be849fad4c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Apr 24 23:58:21 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Tue Apr 25 00:12:31 2023 +0200
wipe_lv: use zeroing ioctl only for large sizes
There is no easy way to detect, whether device supports zeroing,
and kernel also zeroes device when it's not directly supported,
but with extra message:
operation not supported error, dev X, sector Y op 0x9:(WRITE_ZEROES)...
So to avoid generating such message with every 'lvcreate', use for
zeroing of upto 8K just standard write of zeroed page.
(maybe we can go with even larger sizes).
---
lib/metadata/lv_manip.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 2a4e0e88a..762a65785 100644
--- a/lib/metadata/lv_manip.c
+++ b/lib/metadata/lv_manip.c
@@ -8718,7 +8718,7 @@ int wipe_lv(struct logical_volume *lv, struct wipe_params wp)
display_lvname(lv), wp.zero_value);
#ifdef HAVE_BLKZEROOUT
- if (!test_mode() && !wp.zero_value) {
+ if (!test_mode() && !wp.zero_value && (zero_sectors > 16)) {
/* TODO: maybe integrate with bcache_zero_set() */
const uint64_t end = zero_sectors << SECTOR_SHIFT;
uint64_t range[2] = { 0, 1024 * 1024 }; /* zeroing with 1M steps (for better ^C support) */
5 months, 1 week
main - fix dev_name use in add_areas_line
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=31cfcf7ce9aab5dd16b...
Commit: 31cfcf7ce9aab5dd16ba15e48bfe33be849fad4c
Parent: afc02ae6e7234e1190cedf5c74ca3d6367efd7d1
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Apr 24 15:47:45 2023 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Mon Apr 24 15:49:00 2023 -0500
fix dev_name use in add_areas_line
This function was relying on dev_name() returning NULL
to indicate no device, but dev_name never returns NULL.
---
lib/activate/dev_manager.c | 45 +++++++++++++++++++++++++++++----------------
1 file changed, 29 insertions(+), 16 deletions(-)
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 07d58733e..ac3f01718 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -3000,34 +3000,47 @@ static int _add_error_area(struct dev_manager *dm, struct dm_tree_node *node,
return 1;
}
+static int _bad_pv_area(struct lv_segment *seg, uint32_t s)
+{
+ struct stat info;
+ const char *name;
+ struct device *dev;
+
+ if (!seg_pvseg(seg, s))
+ return 1;
+ if (!seg_pv(seg, s))
+ return 1;
+ if (!(dev = seg_dev(seg, s)))
+ return 1;
+ if (dm_list_empty(&dev->aliases))
+ return 1;
+ /* FIXME Avoid repeating identical stat in dm_tree_node_add_target_area */
+ name = dev_name(dev);
+ if (stat(name, &info) < 0)
+ return 1;
+ if (!S_ISBLK(info.st_mode))
+ return 1;
+ return 0;
+}
+
int add_areas_line(struct dev_manager *dm, struct lv_segment *seg,
struct dm_tree_node *node, uint32_t start_area,
uint32_t areas)
{
+ struct cmd_context *cmd = seg->lv->vg->cmd;
uint64_t extent_size = seg->lv->vg->extent_size;
uint32_t s;
char *dlid;
- struct stat info;
const char *name;
unsigned num_error_areas = 0;
unsigned num_existing_areas = 0;
- /* FIXME Avoid repeating identical stat in dm_tree_node_add_target_area */
for (s = start_area; s < areas; s++) {
-
- /* FIXME: dev_name() does not return NULL! It needs to check if dm_list_empty(&dev->aliases)
- but this knot of logic is too complex to pull apart without careful deconstruction. */
-
- if ((seg_type(seg, s) == AREA_PV &&
- (!seg_pvseg(seg, s) || !seg_pv(seg, s) || !seg_dev(seg, s) ||
- !(name = dev_name(seg_dev(seg, s))) || !*name ||
- stat(name, &info) < 0 || !S_ISBLK(info.st_mode))) ||
- (seg_type(seg, s) == AREA_LV && !seg_lv(seg, s))) {
- if (!seg->lv->vg->cmd->partial_activation) {
- if (!seg->lv->vg->cmd->degraded_activation ||
- !lv_is_raid_type(seg->lv)) {
- log_error("Aborting. LV %s is now incomplete "
- "and '--activationmode partial' was not specified.",
+ if (((seg_type(seg, s) == AREA_PV) && _bad_pv_area(seg, s)) ||
+ ((seg_type(seg, s) == AREA_LV) && !seg_lv(seg, s))) {
+ if (!cmd->partial_activation) {
+ if (!cmd->degraded_activation || !lv_is_raid_type(seg->lv)) {
+ log_error("Aborting. LV %s is incomplete and --activationmode partial was not specified.",
display_lvname(seg->lv));
return 0;
}
5 months, 1 week
main - lvmdbus: preserve PATH envvar
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=afc02ae6e7234e1190c...
Commit: afc02ae6e7234e1190cedf5c74ca3d6367efd7d1
Parent: ce8835d4c429bd87da5731e3015d9ddc9e3fb888
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun Apr 23 12:49:37 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Apr 23 12:49:37 2023 +0200
lvmdbus: preserve PATH envvar
---
daemons/lvmdbusd/lvm_shell_proxy.py.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/daemons/lvmdbusd/lvm_shell_proxy.py.in b/daemons/lvmdbusd/lvm_shell_proxy.py.in
index b8c8fa565..02a776e1d 100755
--- a/daemons/lvmdbusd/lvm_shell_proxy.py.in
+++ b/daemons/lvmdbusd/lvm_shell_proxy.py.in
@@ -154,6 +154,8 @@ class LVMShellProxy(object):
# If any env variables contain LVM we will propagate them too
for k, v in os.environ.items():
+ if "PATH" in k:
+ local_env[k] = v
if "LVM" in k:
local_env[k] = v
5 months, 1 week
main - tests: enforce 4K block for integrity fs
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=ce8835d4c429bd87da5...
Commit: ce8835d4c429bd87da5731e3015d9ddc9e3fb888
Parent: 7cf5feb7d245d22d4968b95f3b7cfb6467461ff2
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun Apr 23 00:03:43 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Apr 23 00:03:43 2023 +0200
tests: enforce 4K block for integrity fs
With raid tests it's important we don't get spread of 4K file
across 1K block on a multiple disk stripe - so use 4K block size
for ext4 fs.
---
test/shell/integrity-caching.sh | 4 ++--
test/shell/integrity.sh | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/test/shell/integrity-caching.sh b/test/shell/integrity-caching.sh
index 52aec98ce..73d33de18 100644
--- a/test/shell/integrity-caching.sh
+++ b/test/shell/integrity-caching.sh
@@ -45,7 +45,7 @@ _prepare_vg() {
}
_test_fs_with_read_repair() {
- mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" $mnt
@@ -92,7 +92,7 @@ _test_fs_with_read_repair() {
}
_add_new_data_to_mnt() {
- mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" $mnt
diff --git a/test/shell/integrity.sh b/test/shell/integrity.sh
index c649bef11..b55855ab4 100644
--- a/test/shell/integrity.sh
+++ b/test/shell/integrity.sh
@@ -45,7 +45,7 @@ _prepare_vg() {
}
_test_fs_with_read_repair() {
- mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" $mnt
@@ -73,7 +73,7 @@ _test_fs_with_read_repair() {
}
_add_new_data_to_mnt() {
- mkfs.ext4 "$DM_DEV_DIR/$vg/$lv1"
+ mkfs.ext4 -b 4096 "$DM_DEV_DIR/$vg/$lv1"
mount "$DM_DEV_DIR/$vg/$lv1" $mnt
5 months, 1 week
main - aux: loop doesn't support zeroing discard
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7cf5feb7d245d22d496...
Commit: 7cf5feb7d245d22d4968b95f3b7cfb6467461ff2
Parent: bbc67abeed8a7a5f4a31c6dd0d3bf4cb26c6a50a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sun Apr 23 00:02:33 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Apr 23 00:02:33 2023 +0200
aux: loop doesn't support zeroing discard
To avoid logging unsupported WRITE_ZEROES with loop,
disable usage for this backend device.
---
test/lib/aux.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index d6689e3b8..a385df76b 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -669,6 +669,7 @@ prepare_loop() {
done
fi
test -n "$LOOP" # confirm or fail
+ touch NO_BLKDISCARD_Z # loop devices do not support WRITE_ZEROS
BACKING_DEV=$LOOP
echo "$LOOP" > LOOP
echo "$LOOP" > BACKING_DEV
5 months, 1 week
main - tests: hide some more file in error trace
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bbc67abeed8a7a5f4a3...
Commit: bbc67abeed8a7a5f4a31c6dd0d3bf4cb26c6a50a
Parent: f239ce2353504f1a69fd7cc5386067cffd71b965
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat Apr 22 11:23:04 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Apr 22 11:25:39 2023 +0200
tests: hide some more file in error trace
Hide unneeded dev nodes.
---
test/lib/utils.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/test/lib/utils.sh b/test/lib/utils.sh
index ca9f5ec61..5e462605f 100644
--- a/test/lib/utils.sh
+++ b/test/lib/utils.sh
@@ -190,7 +190,8 @@ STACKTRACE() {
dmsetup ls --tree | sed -e "s,^,## DMTREE: ,"
echo "<======== Recursive list of $DM_DEV_DIR ========>"
ls -Rl --hide=shm --hide=bus --hide=snd --hide=input --hide=dri \
- --hide=net --hide=hugepages --hide=mqueue --hide=pts \
+ --hide=net --hide=hugepages --hide=mqueue --hide=pts \
+ --hide=tty?* --hide=vcs?* --hide=usb --hide=char \
"$DM_DEV_DIR" | sed -e "s,^,## LSLR: ,"
echo "<======== Udev DB content ========>"
for i in /sys/block/dm-* /sys/block/loop* ; do
5 months, 1 week
main - makefiles: forgotten to install some test config
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f239ce2353504f1a69f...
Commit: f239ce2353504f1a69fd7cc5386067cffd71b965
Parent: 1f4e3832e0b6c877857e26f50aaa7196d9034cca
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Sat Apr 22 11:21:46 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Apr 22 11:25:39 2023 +0200
makefiles: forgotten to install some test config
rpm testing missed config files.
---
test/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/Makefile.in b/test/Makefile.in
index 1ea797d85..bb6167ea5 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -234,7 +234,7 @@ install: .tests-stamp lib/paths-installed
$(Q)- $(INSTALL_PROGRAM) dbus/*.py $(DATADIR)/dbus/
$(Q) $(INSTALL_DATA) lib/paths-installed $(DATADIR)/lib/paths
$(Q) cd lib &&\
- $(INSTALL_DATA) $(LIB_DATA) $(DATADIR)/lib
+ $(INSTALL_DATA) $(LIB_DATA) $(LIB_CONF) $(DATADIR)/lib
$(Q) cd lib &&\
$(INSTALL_SCRIPT) $(LIB_SHARED) $(DATADIR)/lib
$(Q) cd lib &&\
5 months, 1 week
main - test: use aux wait_recalc
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=1f4e3832e0b6c877857...
Commit: 1f4e3832e0b6c877857e26f50aaa7196d9034cca
Parent: 2043bb0e387ddec2f2b1ad4cd0a93cfeb272bf85
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Apr 21 22:30:50 2023 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Apr 22 11:25:39 2023 +0200
test: use aux wait_recalc
Use aux function.
---
test/shell/integrity-misc.sh | 61 +++++++++++---------------------------------
1 file changed, 15 insertions(+), 46 deletions(-)
diff --git a/test/shell/integrity-misc.sh b/test/shell/integrity-misc.sh
index 37f272cd0..3ab0c2ba2 100644
--- a/test/shell/integrity-misc.sh
+++ b/test/shell/integrity-misc.sh
@@ -94,43 +94,12 @@ _verify_data_on_lv() {
lvchange -an $vg/$lv1
}
-_sync_percent() {
- local checklv=$1
- get lv_field "$checklv" sync_percent | cut -d. -f1
-}
-
-_wait_sync() {
- local checklv=$1
-
- for i in $(seq 1 10) ; do
- sync=$(_sync_percent "$checklv")
- echo "sync_percent is $sync"
-
- if test "$sync" = "100"; then
- return
- fi
-
- sleep 1
- done
-
- # TODO: There is some strange bug, first leg of RAID with integrity
- # enabled never gets in sync. I saw this in BB, but not when executing
- # the commands manually
- if test -z "$sync"; then
- echo "TEST\ WARNING: Resync of dm-integrity device '$checklv' failed"
- dmsetup status "$DM_DEV_DIR/mapper/${checklv/\//-}"
- exit
- fi
- echo "timeout waiting for recalc"
- return 1
-}
-
# lvrename
_prepare_vg
lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg
-_wait_sync $vg/${lv1}_rimage_0
-_wait_sync $vg/${lv1}_rimage_1
-_wait_sync $vg/$lv1
+aux wait_recalc $vg/${lv1}_rimage_0
+aux wait_recalc $vg/${lv1}_rimage_1
+aux wait_recalc $vg/$lv1
_add_new_data_to_mnt
umount $mnt
lvrename $vg/$lv1 $vg/$lv2
@@ -146,9 +115,9 @@ vgremove -ff $vg
# lv must be active
_prepare_vg
lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2"
-_wait_sync $vg/${lv1}_rimage_0
-_wait_sync $vg/${lv1}_rimage_1
-_wait_sync $vg/$lv1
+aux wait_recalc $vg/${lv1}_rimage_0
+aux wait_recalc $vg/${lv1}_rimage_1
+aux wait_recalc $vg/$lv1
lvs -o raidintegritymode $vg/$lv1 | grep journal
_add_new_data_to_mnt
lvconvert --replace "$dev1" $vg/$lv1 "$dev3"
@@ -169,9 +138,9 @@ vgremove -ff $vg
# same as prev but with bitmap mode
_prepare_vg
lvcreate --type raid1 -m1 --raidintegrity y --raidintegritymode bitmap -n $lv1 -l 8 $vg "$dev1" "$dev2"
-_wait_sync $vg/${lv1}_rimage_0
-_wait_sync $vg/${lv1}_rimage_1
-_wait_sync $vg/$lv1
+aux wait_recalc $vg/${lv1}_rimage_0
+aux wait_recalc $vg/${lv1}_rimage_1
+aux wait_recalc $vg/$lv1
lvs -o raidintegritymode $vg/$lv1 | grep bitmap
_add_new_data_to_mnt
lvconvert --replace "$dev1" $vg/$lv1 "$dev3"
@@ -194,9 +163,9 @@ vgremove -ff $vg
# (like lvconvert --replace does for a dev that's not missing).
_prepare_vg
lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2"
-_wait_sync $vg/${lv1}_rimage_0
-_wait_sync $vg/${lv1}_rimage_1
-_wait_sync $vg/$lv1
+aux wait_recalc $vg/${lv1}_rimage_0
+aux wait_recalc $vg/${lv1}_rimage_1
+aux wait_recalc $vg/$lv1
_add_new_data_to_mnt
aux disable_dev "$dev2"
lvs -a -o+devices $vg > out
@@ -223,9 +192,9 @@ vgremove -ff $vg
_prepare_vg
lvcreate --type raid1 -m1 --raidintegrity y -n $lv1 -l 8 $vg "$dev1" "$dev2"
-_wait_sync $vg/${lv1}_rimage_0
-_wait_sync $vg/${lv1}_rimage_1
-_wait_sync $vg/$lv1
+aux wait_recalc $vg/${lv1}_rimage_0
+aux wait_recalc $vg/${lv1}_rimage_1
+aux wait_recalc $vg/$lv1
_add_new_data_to_mnt
umount $mnt
lvchange -an $vg/$lv1
5 months, 1 week