2023-09-03 22:59:06 +03:00
#!/usr/bin/env bash
# Copyright (C) 2021 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# Test conversion of VDO volumes made by vdo manager into VDO LV.
2023-09-04 15:24:22 +03:00
SKIP_WITH_LVMLOCKD = 1
2023-09-03 22:59:06 +03:00
SKIP_WITH_LVMPOLLD = 1
. lib/inittest
# Use local for this test vdo configuratoin
VDO_CONFIG = "vdotestconf.yml"
VDOCONF = " -f $VDO_CONFIG "
#VDOCONF=""
export VDOCONF VDO_CONFIG
VDONAME = " ${ PREFIX } -TESTVDO "
export DM_UUID_PREFIX = $PREFIX
# Conversion can be made with this version of vdo driver
aux have_vdo 6 2 3 || skip
2024-04-05 15:25:27 +03:00
# With new upstream VDO conversion is not supported
aux have_vdo 9 0 0 && skip
2023-09-03 22:59:06 +03:00
if not which vdo ; then
which lvm_vdo_wrapper || skip "Missing 'lvm_vdo_wrapper'."
2023-09-04 15:24:22 +03:00
which oldvdoformat || skip "Emulation of vdo manager 'oldvdoformat' missing."
which oldvdoprepareforlvm || skip "Emulation of vdo manager 'oldvdoprepareforlvm' missing."
2023-09-03 22:59:06 +03:00
# enable expansion of aliasis within script itself
shopt -s expand_aliases
alias vdo = 'lvm_vdo_wrapper'
export VDO_BINARY = lvm_vdo_wrapper
echo "Using 'lvm_vdo_wrapper' emulation of 'vdo' manager."
fi
# VDO automatically starts dmeventd
aux prepare_dmeventd
which mkfs.ext4 || skip
export MKE2FS_CONFIG = " $TESTDIR /lib/mke2fs.conf "
export TMPDIR = $PWD
######################################################################
#
# !!! This is rather tricky way how to 'play' with large SCSI !!!
#
# Use 311/313MB 'wrap-around' RAM for 4GiB virtual disk.
# (using prime number for dev_size_mb)
#
# ATM this seems work with the test for layout of VDO written data.
# Minimal required size for VDO volume is ~4GiB
#
aux prepare_scsi_debug_dev 311 "virtual_gb=4"
SCSI_DEV = $( < SCSI_DEBUG_DEV)
# this non-scsi backend should always work, but we want to get DEVLINKS
#aux prepare_devs 1 6144
#SCSI_DEV=$dev1
blockdev --getsize64 " $SCSI_DEV "
aux extend_filter_LVMTEST " a| $SCSI_DEV | "
# use some not so 'well' aligned virtual|logical size
vdo create $VDOCONF --name " $VDONAME " --device " $SCSI_DEV " \
--vdoSlabSize 128M --vdoLogicalSize 5M
mkfs.ext4 -E nodiscard " $DM_DEV_DIR /mapper/ $VDONAME "
# Try just dry run and observe logging
lvm_import_vdo --dry-run -y -v --name $lv1 " $SCSI_DEV "
lvm_import_vdo -y --name $vg /$lv " $SCSI_DEV "
check lv_field $vg /$lv size "6.00m"
vgremove -f $vg