From b408c947c9eec9aa3df1a2b50173353a1351a7b1 Mon Sep 17 00:00:00 2001 From: Susan LeGendre-McGhee Date: Wed, 22 Mar 2023 18:59:16 +0000 Subject: [PATCH] Rebuilt for latest 4.18 kernel. Related: rhbz#2173037 Signed-off-by: Susan LeGendre-McGhee --- kmod-kvdo.spec | 8 +- tests/.fmf/version | 1 + tests/provision.fmf | 4 + tests/sanity/Makefile | 62 +++++++++++++++ tests/sanity/PURPOSE | 3 + tests/sanity/runtest.sh | 62 +++++++++++++++ tests/smoke/Makefile | 62 +++++++++++++++ tests/smoke/PURPOSE | 3 + tests/smoke/runtest.sh | 167 ++++++++++++++++++++++++++++++++++++++++ tests/tests.yml | 10 +++ 10 files changed, 380 insertions(+), 2 deletions(-) create mode 100644 tests/.fmf/version create mode 100644 tests/provision.fmf create mode 100644 tests/sanity/Makefile create mode 100644 tests/sanity/PURPOSE create mode 100644 tests/sanity/runtest.sh create mode 100644 tests/smoke/Makefile create mode 100644 tests/smoke/PURPOSE create mode 100644 tests/smoke/runtest.sh create mode 100644 tests/tests.yml diff --git a/kmod-kvdo.spec b/kmod-kvdo.spec index 10c7664..9723900 100644 --- a/kmod-kvdo.spec +++ b/kmod-kvdo.spec @@ -1,12 +1,12 @@ %global commit c3fab428a1fdc02cb0d5f4bba7e88ec94056e96f %global gittag 6.2.8.7 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%define spec_release 88 +%define spec_release 89 %define kmod_name kvdo %define kmod_driver_version %{gittag} %define kmod_rpm_release %{spec_release} -%define kmod_kernel_version 4.18.0-458.el8 +%define kmod_kernel_version 4.18.0-481.el8 %define kmod_headers_version %(rpm -qa kernel-devel | sed 's/^kernel-devel-//') %define kmod_kbuild_dir . %define kmod_dependencies %{nil} @@ -165,6 +165,10 @@ install -m 644 -D source/greylist.txt $RPM_BUILD_ROOT/usr/share/doc/kmod-%{kmod_ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Mar 22 2023 - Susan LeGendre-McGhee - 6.2.8.7-89 +- Rebuilt for latest 4.18 kernel. +- Related: rhbz#2173037 + * Tue Feb 14 2023 - Susan LeGendre-McGhee - 6.2.8.7-88 - Fixed bug in read-only rebuild when the logical size of the volume is an exact multiple of 821 4K blocks. diff --git a/tests/.fmf/version b/tests/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/tests/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/tests/provision.fmf b/tests/provision.fmf new file mode 100644 index 0000000..c4bef80 --- /dev/null +++ b/tests/provision.fmf @@ -0,0 +1,4 @@ +--- +standard-inventory-qcow2: + qemu: + m: 4G diff --git a/tests/sanity/Makefile b/tests/sanity/Makefile new file mode 100644 index 0000000..86ef186 --- /dev/null +++ b/tests/sanity/Makefile @@ -0,0 +1,62 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /kernel/test_beakertask/Sanity/beaker_test +# Description: Install VDO +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/beaker_test +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Andy Walsh " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Installs VDO" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: test_beakertask" >> $(METADATA) + @echo "Requires: test_beakertask" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/sanity/PURPOSE b/tests/sanity/PURPOSE new file mode 100644 index 0000000..c9f6b26 --- /dev/null +++ b/tests/sanity/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE Test the kmod-kvdo package for driver siguatures +Description: Installs the kmod-kvdo package and loads the modules into the kernel, checking for the unsigned taint flag +Author: Andy Walsh diff --git a/tests/sanity/runtest.sh b/tests/sanity/runtest.sh new file mode 100644 index 0000000..f16be30 --- /dev/null +++ b/tests/sanity/runtest.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of kmod-kvdo/sanity +# Description: Checking that the kmod-kvdo kernel modules can be loaded. +# Author: Andy Walsh +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2019 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + # Collect information + rlLog "uname: $(uname -a)" + rlPhaseEnd + + rlPhaseStartTest "Confirm modules are installed" + rlRun "find /lib/modules -type f -name uds.ko" + rlRun "find /lib/modules -type f -name kvdo.ko" + rlPhaseEnd + + rlPhaseStartTest "Validate module information" + rlRun "modinfo -l uds" + rlRun "modinfo -l kvdo" + rlPhaseEnd + + rlPhaseStartTest "Confirm the modules can be loaded" + rlRun "modprobe uds" + rlRun "lsmod | grep uds" + rlRun "modprobe kvdo" + rlRun "lsmod | grep kvdo" + rlPhaseEnd + + rlPhaseStartCleanup "Unload the modules" + rlRun "modprobe -r kvdo" + rlRun "modprobe -r uds" + rlPhaseEnd + + rlJournalPrintText +rlJournalEnd + diff --git a/tests/smoke/Makefile b/tests/smoke/Makefile new file mode 100644 index 0000000..86ef186 --- /dev/null +++ b/tests/smoke/Makefile @@ -0,0 +1,62 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /kernel/test_beakertask/Sanity/beaker_test +# Description: Install VDO +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/beaker_test +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Andy Walsh " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Installs VDO" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: test_beakertask" >> $(METADATA) + @echo "Requires: test_beakertask" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/smoke/PURPOSE b/tests/smoke/PURPOSE new file mode 100644 index 0000000..c9f6b26 --- /dev/null +++ b/tests/smoke/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE Test the kmod-kvdo package for driver siguatures +Description: Installs the kmod-kvdo package and loads the modules into the kernel, checking for the unsigned taint flag +Author: Andy Walsh diff --git a/tests/smoke/runtest.sh b/tests/smoke/runtest.sh new file mode 100644 index 0000000..cf0200b --- /dev/null +++ b/tests/smoke/runtest.sh @@ -0,0 +1,167 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of VDO smoke test +# Description: Check that VDO is able to read/write data and start/stop +# Author: Andy Walsh +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + +rlPhaseStartSetup "Create backing device" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "df ." + + # If we end up with less than 15G of available space, then we can't + # create a VDO volume sufficient for testing. We should bail out as a + # result. + loopbackSize=$(($(df --sync --output=avail / | tail -1) * 1024 - 1024*1024*1024)) + if [ ${loopbackSize} -lt $((1024*1024*1024*15)) ]; then + rlDie "Not enough space to create loopback device." + fi + rlRun "truncate -s ${loopbackSize} $TmpDir/loop0.bin" 0 "Laying out loopfile backing" + rlRun "losetup /dev/loop0 $TmpDir/loop0.bin" 0 "Creating loopdevice" + rlRun "mkdir -p /mnt/testmount" 0 "Creating test mountpoint dir" +rlPhaseEnd + +rlPhaseStartTest "Gather Relevant Info" + # Gather some system information for debug purposes + rlRun "uname -a" + rlRun "find /lib/modules -name kvdo.ko" + rlRun "modinfo uds" || insertModuleWithDMesgOutput uds + rlRun "modinfo kvdo" || insertModuleWithDMesgOutput kvdo +rlPhaseEnd + +rlPhaseStartTest "Generate Test Data" + # Write some data, check statistics + rlRun "dd if=/dev/urandom of=${TmpDir}/urandom_fill_file bs=1M count=100" + rlRun "ls -lh ${TmpDir}/urandom_fill_file" +rlPhaseEnd + +for partition_type in "raw" "lvm" "part" +do + case $partition_type in + "raw"*) + backing_device=/dev/loop0 + ;; + "lvm"*) + rlPhaseStartTest "Create LVM backing device" + rlRun "pvcreate /dev/loop0" 0 "Creating PV" + rlRun "vgcreate vdo_base /dev/loop0" 0 "Creating VG" + rlRun "lvcreate -n vdo_base -l100%FREE vdo_base" 0 "Creating LV" + rlPhaseEnd + backing_device=/dev/vdo_base/vdo_base + ;; + "part"*) + rlPhaseStartTest "Create partitioned backing device" + rlRun "parted -s /dev/loop0 mklabel msdos" 0 "Creating label" + rlRun 'parted -s /dev/loop0 mkpart primary "" 1M -- -1M' 0 "Creating partition" + rlPhaseEnd + backing_device=/dev/loop0p1 + ;; + *) + ;; + esac + + rlPhaseStartTest "Smoke Test" + # Create the VDO volume and get the initial statistics + rlRun "vdo create --name=vdo1 --device=${backing_device} --verbose" 0 "Creating VDO volume vdo1" + rlRun "vdostats vdo1" + + # Create a filesystem and mount the device, check statistics + rlRun "mkfs.xfs -K /dev/mapper/vdo1" 0 "Making xfs filesystem on VDO volume" + rlRun "mount -o discard /dev/mapper/vdo1 /mnt/testmount" 0 "Mounting xfs filesystem on VDO volume" + rlRun "df --sync /mnt/testmount" + rlRun "vdostats vdo1" + + # Copy the test data onto VDO volume 4 times to get some deduplication + for i in {1..4} + do + rlRun "cp ${TmpDir}/urandom_fill_file /mnt/testmount/test_file-${i}" + done + rlRun "df --sync /mnt/testmount" + rlRun "vdostats vdo1" + + # Verify the data + for i in {1..4} + do + rlRun "cmp ${TmpDir}/urandom_fill_file /mnt/testmount/test_file-${i}" + done + + # Unmount and stop the volume, check statistics + rlRun "umount /mnt/testmount" 0 "Unmounting testmount" + rlRun "vdostats vdo1" + rlRun "vdo stop --name=vdo1 --verbose" 0 "Stopping VDO volume vdo1" + + # Start the VDO volume, mount it, check statistics, verify data. + rlRun "vdo start --name=vdo1 --verbose" 0 "Starting VDO volume vdo1" + rlRun "mount -o discard /dev/mapper/vdo1 /mnt/testmount" 0 "Mounting xfs filesystem on VDO volume" + + rlRun "df --sync /mnt/testmount" + rlRun "vdostats vdo1" + + # Verify the data + for i in {1..4} + do + rlRun "cmp ${TmpDir}/urandom_fill_file /mnt/testmount/test_file-${i}" + done + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "umount /mnt/testmount" 0 "Unmounting testmount" + rlRun "vdo remove --name=vdo1 --verbose" 0 "Removing VDO volume vdo1" + case $partition_type in + "lvm"*) + rlPhaseStartCleanup + rlRun "lvremove -ff ${backing_device}" 0 "Removing LV" + rlRun "vgremove vdo_base" 0 "Removing VG" + rlRun "pvremove /dev/loop0" 0 "Removing PV" + rlPhaseEnd + ;; + "part"*) + rlPhaseStartCleanup + rlRun "parted -s /dev/loop0 rm 1" 0 "Removing partition" + rlPhaseEnd + ;; + *) + ;; + esac + + rlRun "dd if=/dev/zero of=/dev/loop0 bs=1M count=10 oflag=direct" 0 "Wiping Block Device" + + rlPhaseEnd +done + +rlPhaseStartCleanup + rlRun "losetup -d /dev/loop0" 0 "Deleting loopdevice" + rlRun "rm -f $TmpDir/loop0.bin" 0 "Removing loopfile backing" + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" +rlPhaseEnd + +rlJournalPrintText +rlJournalEnd diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..69915cc --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,10 @@ +- hosts: localhost + tags: + - classic + roles: + - role: standard-test-beakerlib + tests: + - sanity + - smoke + required_packages: + - vdo