mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-01 09:24:29 +00:00 
			
		
		
		
	ZTS: Add LUKS sanity test
Add a LUKS sanity test to trigger: #16631 Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Rob Norris <robn@despairlabs.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Tony Hutter <hutter2@llnl.gov> Closes #16681
This commit is contained in:
		
							parent
							
								
									7e3ce4efaa
								
							
						
					
					
						commit
						f7b4bca66a
					
				
							
								
								
									
										35
									
								
								.github/workflows/scripts/qemu-3-deps.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/scripts/qemu-3-deps.sh
									
									
									
									
										vendored
									
									
								
							| @ -13,10 +13,10 @@ function archlinux() { | ||||
|   echo "##[endgroup]" | ||||
| 
 | ||||
|   echo "##[group]Install Development Tools" | ||||
|   sudo pacman -Sy --noconfirm base-devel bc cpio dhclient dkms fakeroot \ | ||||
|     fio gdb inetutils jq less linux linux-headers lsscsi nfs-utils parted \ | ||||
|     pax perf python-packaging python-setuptools qemu-guest-agent ksh samba \ | ||||
|     sysstat rng-tools rsync wget xxhash | ||||
|   sudo pacman -Sy --noconfirm base-devel bc cpio cryptsetup dhclient dkms \ | ||||
|     fakeroot fio gdb inetutils jq less linux linux-headers lsscsi nfs-utils \ | ||||
|     parted pax perf python-packaging python-setuptools qemu-guest-agent ksh \ | ||||
|     samba sysstat rng-tools rsync wget xxhash | ||||
|   echo "##[endgroup]" | ||||
| } | ||||
| 
 | ||||
| @ -30,11 +30,11 @@ function debian() { | ||||
| 
 | ||||
|   echo "##[group]Install Development Tools" | ||||
|   sudo apt-get install -y \ | ||||
|     acl alien attr autoconf bc cpio curl dbench dh-python dkms fakeroot \ | ||||
|     fio gdb gdebi git ksh lcov isc-dhcp-client jq libacl1-dev libaio-dev \ | ||||
|     libattr1-dev libblkid-dev libcurl4-openssl-dev libdevmapper-dev libelf-dev \ | ||||
|     libffi-dev libmount-dev libpam0g-dev libselinux-dev libssl-dev libtool \ | ||||
|     libtool-bin libudev-dev libunwind-dev linux-headers-$(uname -r) \ | ||||
|     acl alien attr autoconf bc cpio cryptsetup curl dbench dh-python dkms \ | ||||
|     fakeroot fio gdb gdebi git ksh lcov isc-dhcp-client jq libacl1-dev \ | ||||
|     libaio-dev libattr1-dev libblkid-dev libcurl4-openssl-dev libdevmapper-dev \ | ||||
|     libelf-dev libffi-dev libmount-dev libpam0g-dev libselinux-dev libssl-dev \ | ||||
|     libtool libtool-bin libudev-dev libunwind-dev linux-headers-$(uname -r) \ | ||||
|     lsscsi nfs-kernel-server pamtester parted python3 python3-all-dev \ | ||||
|     python3-cffi python3-dev python3-distlib python3-packaging \ | ||||
|     python3-setuptools python3-sphinx qemu-guest-agent rng-tools rpm2cpio \ | ||||
| @ -68,14 +68,15 @@ function rhel() { | ||||
|   echo "##[group]Install Development Tools" | ||||
|   sudo dnf group install -y "Development Tools" | ||||
|   sudo dnf install -y \ | ||||
|     acl attr bc bzip2 curl dbench dkms elfutils-libelf-devel fio gdb git \ | ||||
|     jq kernel-rpm-macros ksh libacl-devel libaio-devel libargon2-devel \ | ||||
|     libattr-devel libblkid-devel libcurl-devel libffi-devel ncompress \ | ||||
|     libselinux-devel libtirpc-devel libtool libudev-devel libuuid-devel \ | ||||
|     lsscsi mdadm nfs-utils openssl-devel pam-devel pamtester parted perf \ | ||||
|     python3 python3-cffi python3-devel python3-packaging kernel-devel \ | ||||
|     python3-setuptools qemu-guest-agent rng-tools rpcgen rpm-build rsync \ | ||||
|     samba sysstat systemd watchdog wget xfsprogs-devel xxhash zlib-devel | ||||
|     acl attr bc bzip2 cryptsetup curl dbench dkms elfutils-libelf-devel fio \ | ||||
|     gdb git jq kernel-rpm-macros ksh libacl-devel libaio-devel \ | ||||
|     libargon2-devel libattr-devel libblkid-devel libcurl-devel libffi-devel \ | ||||
|     ncompress libselinux-devel libtirpc-devel libtool libudev-devel \ | ||||
|     libuuid-devel lsscsi mdadm nfs-utils openssl-devel pam-devel pamtester \ | ||||
|     parted perf python3 python3-cffi python3-devel python3-packaging \ | ||||
|     kernel-devel python3-setuptools qemu-guest-agent rng-tools rpcgen \ | ||||
|     rpm-build rsync samba sysstat systemd watchdog wget xfsprogs-devel xxhash \ | ||||
|     zlib-devel | ||||
|   echo "##[endgroup]" | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -147,6 +147,12 @@ tags = ['functional', 'largest_pool'] | ||||
| tests = ['longname_001_pos', 'longname_002_pos', 'longname_003_pos'] | ||||
| tags = ['functional', 'longname'] | ||||
| 
 | ||||
| [tests/functional/luks:Linux] | ||||
| pre = | ||||
| post = | ||||
| tests = ['luks_sanity'] | ||||
| tags = ['functional', 'luks'] | ||||
| 
 | ||||
| [tests/functional/mmap:Linux] | ||||
| tests = ['mmap_libaio_001_pos', 'mmap_sync_001_pos'] | ||||
| tags = ['functional', 'mmap'] | ||||
|  | ||||
| @ -129,6 +129,7 @@ export SYSTEM_FILES_LINUX='attr | ||||
|     blkdiscard | ||||
|     blockdev | ||||
|     chattr | ||||
|     cryptsetup | ||||
|     exportfs | ||||
|     fallocate | ||||
|     flock | ||||
|  | ||||
| @ -80,7 +80,8 @@ if BUILD_LINUX | ||||
| nobase_dist_datadir_zfs_tests_tests_SCRIPTS += \
 | ||||
| 	functional/simd/simd_supported.ksh \
 | ||||
| 	functional/tmpfile/cleanup.ksh \
 | ||||
| 	functional/tmpfile/setup.ksh | ||||
| 	functional/tmpfile/setup.ksh \
 | ||||
| 	functional/luks/luks_sanity.ksh | ||||
| endif | ||||
| 
 | ||||
| nobase_dist_datadir_zfs_tests_tests_DATA += \
 | ||||
|  | ||||
							
								
								
									
										90
									
								
								tests/zfs-tests/tests/functional/luks/luks_sanity.ksh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										90
									
								
								tests/zfs-tests/tests/functional/luks/luks_sanity.ksh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,90 @@ | ||||
| #!/bin/ksh -p | ||||
| # | ||||
| # CDDL HEADER START | ||||
| # | ||||
| # The contents of this file are subject to the terms of the | ||||
| # Common Development and Distribution License (the "License"). | ||||
| # You may not use this file except in compliance with the License. | ||||
| # | ||||
| # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||||
| # or https://opensource.org/licenses/CDDL-1.0. | ||||
| # See the License for the specific language governing permissions | ||||
| # and limitations under the License. | ||||
| # | ||||
| # When distributing Covered Code, include this CDDL HEADER in each | ||||
| # file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||||
| # If applicable, add the following below this CDDL HEADER, with the | ||||
| # fields enclosed by brackets "[]" replaced with your own identifying | ||||
| # information: Portions Copyright [yyyy] [name of copyright owner] | ||||
| # | ||||
| # CDDL HEADER END | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Copyright (c) 2024 by Lawrence Livermore National Security, LLC. | ||||
| # Use is subject to license terms. | ||||
| # | ||||
| 
 | ||||
| # DESCRIPTION: | ||||
| #	Verify ZFS works on a LUKS-backed pool | ||||
| # | ||||
| # STRATEGY: | ||||
| #	1. Create a LUKS device | ||||
| #	2. Make a pool with it | ||||
| #	3. Write files to the pool | ||||
| #	4. Verify no errors | ||||
| 
 | ||||
| . $STF_SUITE/include/libtest.shlib | ||||
| 
 | ||||
| verify_runnable "both" | ||||
| 
 | ||||
| VDEV=$(mktemp --suffix=luks_sanity) | ||||
| TESTPOOL=testpool | ||||
| 
 | ||||
| function cleanup | ||||
| { | ||||
| 	log_must zpool destroy $TESTPOOL | ||||
| 
 | ||||
| 	log_must cryptsetup luksClose /dev/mapper/luksdev | ||||
| 	log_must rm -f $VDEV | ||||
| } | ||||
| 
 | ||||
| log_assert "Verify ZFS on LUKS works" | ||||
| log_onexit cleanup | ||||
| 
 | ||||
| PASS="fdsjfosdijfsdkjsldfjdlk" | ||||
| 
 | ||||
| # Make a small LUKS device since LUKS formatting takes time and we want to | ||||
| # make this test run as quickly as possible. | ||||
| truncate -s 100M $VDEV | ||||
| 
 | ||||
| log_must cryptsetup luksFormat --type luks2 $VDEV <<< $PASS | ||||
| log_must cryptsetup luksOpen $VDEV luksdev <<< $PASS | ||||
| 
 | ||||
| log_must zpool create $TESTPOOL /dev/mapper/luksdev | ||||
| 
 | ||||
| CPUS=$(get_num_cpus) | ||||
| 
 | ||||
| # Use these specific size and offset ranges as they often cause errors with | ||||
| # https://github.com/openzfs/zfs/issues/16631 | ||||
| # and we want to try to test for that. | ||||
| for SIZE in {70..100} ; do | ||||
| 	for OFF in {70..100} ; do | ||||
| 		for i in {1..$CPUS} ; do | ||||
| 			dd if=/dev/urandom of=/$TESTPOOL/file$i-bs$SIZE-off$OFF \ | ||||
| 			    seek=$OFF bs=$SIZE count=1 &>/dev/null & | ||||
| 		done | ||||
| 		wait | ||||
| 	done | ||||
| 	sync_pool $TESTPOOL | ||||
| 	rm -f /$TESTPOOL/file* | ||||
| done | ||||
| 
 | ||||
| # Verify no read/write/checksum errors.  Don't use JSON here so that we could | ||||
| # could potentially backport this test case to the 2.2.x branch. | ||||
| if zpool status -e | grep -q "luksdev" ; then | ||||
| 	log_note "$(zpool status -v)" | ||||
| 	log_fail "Saw errors writing to LUKS device" | ||||
| fi | ||||
| 
 | ||||
| log_pass "Verified ZFS on LUKS works" | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tony Hutter
						Tony Hutter