mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	OpenZFS 7535 - need test for resumed send of top most filesystem
Authored by: John Kennedy <john.kennedy@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Richard Lowe <richlowe@richlowe.net> Ported-by: Brian Behlendorf <behlendorf1@llnl.gov> Porting Notes: - zfs_share_001_pos.ksh - Older versions of exportfs will match multiple exports that share a common prefix. Reorder the 'fs' list so unshares occur from most to least unique. - zfs_share_005_pos.ksh - Enabled and updated for Linux. OpenZFS-issue: https://www.illumos.org/issues/7535 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/ac89d1e Closes #5979
This commit is contained in:
		
							parent
							
								
									17b43f96f9
								
							
						
					
					
						commit
						dd49132a1d
					
				| @ -184,11 +184,9 @@ tests = ['cache_001_pos', 'cache_002_neg', 'canmount_001_pos', | |||||||
|     'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos', |     'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos', | ||||||
|     'mountpoint_003_pos', 'ro_props_001_pos'] |     'mountpoint_003_pos', 'ro_props_001_pos'] | ||||||
| 
 | 
 | ||||||
| # DISABLED: |  | ||||||
| # zfs_share_005_pos - needs investigation, probably unsupported NFS share format |  | ||||||
| [tests/functional/cli_root/zfs_share] | [tests/functional/cli_root/zfs_share] | ||||||
| tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos', | tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos', | ||||||
|     'zfs_share_004_pos', 'zfs_share_006_pos', |     'zfs_share_004_pos', 'zfs_share_005_pos', 'zfs_share_006_pos', | ||||||
|     'zfs_share_007_neg', 'zfs_share_008_neg', 'zfs_share_009_neg', |     'zfs_share_007_neg', 'zfs_share_008_neg', 'zfs_share_009_neg', | ||||||
|     'zfs_share_010_neg', 'zfs_share_011_pos'] |     'zfs_share_010_neg', 'zfs_share_011_pos'] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -70,23 +70,28 @@ export FIO_SCRIPTS=$STF_SUITE/tests/perf/fio | |||||||
| export PERF_SCRIPTS=$STF_SUITE/tests/perf/scripts | export PERF_SCRIPTS=$STF_SUITE/tests/perf/scripts | ||||||
| 
 | 
 | ||||||
| # some test pool names | # some test pool names | ||||||
| export TESTPOOL=testpool.$$ | export TESTPOOL=testpool | ||||||
| export TESTPOOL1=testpool1.$$ | export TESTPOOL1=testpool1 | ||||||
| export TESTPOOL2=testpool2.$$ | export TESTPOOL2=testpool2 | ||||||
| export TESTPOOL3=testpool3.$$ | export TESTPOOL3=testpool3 | ||||||
| export PERFPOOL=perfpool | export PERFPOOL=perfpool | ||||||
| 
 | 
 | ||||||
| # some test file system names | # some test file system names | ||||||
| export TESTFS=testfs.$$ | export TESTFS=testfs | ||||||
| export TESTFS1=testfs1.$$ | export TESTFS1=testfs1 | ||||||
| export TESTFS2=testfs2.$$ | export TESTFS2=testfs2 | ||||||
| export TESTFS3=testfs3.$$ | export TESTFS3=testfs3 | ||||||
| 
 | 
 | ||||||
| # some test directory names | # some test directory names | ||||||
| export TESTDIR=${TEST_BASE_DIR%%/}/testdir$$ | export TESTDIR=${TEST_BASE_DIR%%/}/testdir | ||||||
| export TESTDIR0=${TEST_BASE_DIR%%/}/testdir0$$ | export TESTDIR0=${TEST_BASE_DIR%%/}/testdir0 | ||||||
| export TESTDIR1=${TEST_BASE_DIR%%/}/testdir1$$ | export TESTDIR1=${TEST_BASE_DIR%%/}/testdir1 | ||||||
| export TESTDIR2=${TEST_BASE_DIR%%/}/testdir2$$ | export TESTDIR2=${TEST_BASE_DIR%%/}/testdir2 | ||||||
|  | 
 | ||||||
|  | # some test sub file system names | ||||||
|  | export TESTSUBFS=subfs | ||||||
|  | export TESTSUBFS1=subfs1 | ||||||
|  | export TESTSUBFS2=subfs2 | ||||||
| 
 | 
 | ||||||
| # some temp files | # some temp files | ||||||
| export TEMPFILE=${TEST_BASE_DIR%%/}/tempfile$$ | export TEMPFILE=${TEST_BASE_DIR%%/}/tempfile$$ | ||||||
| @ -96,23 +101,23 @@ export TEMPFILE2=${TEST_BASE_DIR%%/}/tempfile2$$ | |||||||
| 
 | 
 | ||||||
| export ZFSROOT= | export ZFSROOT= | ||||||
| 
 | 
 | ||||||
| export TESTSNAP=testsnap$$ | export TESTSNAP=testsnap | ||||||
| export TESTSNAP1=testsnap1$$ | export TESTSNAP1=testsnap1 | ||||||
| export TESTSNAP2=testsnap2$$ | export TESTSNAP2=testsnap2 | ||||||
| export TESTCLONE=testclone$$ | export TESTCLONE=testclone | ||||||
| export TESTCLONE1=testclone1$$ | export TESTCLONE1=testclone1 | ||||||
| export TESTCLONE2=testclone2$$ | export TESTCLONE2=testclone2 | ||||||
| export TESTCLCT=testclct$$ | export TESTCLCT=testclct | ||||||
| export TESTCTR=testctr$$ | export TESTCTR=testctr | ||||||
| export TESTCTR1=testctr1$$ | export TESTCTR1=testctr1 | ||||||
| export TESTCTR2=testctr2$$ | export TESTCTR2=testctr2 | ||||||
| export TESTVOL=testvol$$ | export TESTVOL=testvol | ||||||
| export TESTVOL1=testvol1$$ | export TESTVOL1=testvol1 | ||||||
| export TESTVOL2=testvol2$$ | export TESTVOL2=testvol2 | ||||||
| export TESTFILE0=testfile0.$$ | export TESTFILE0=testfile0 | ||||||
| export TESTFILE1=testfile1.$$ | export TESTFILE1=testfile1 | ||||||
| export TESTFILE2=testfile2.$$ | export TESTFILE2=testfile2 | ||||||
| export TESTBKMARK=testbkmark$$ | export TESTBKMARK=testbkmark | ||||||
| 
 | 
 | ||||||
| export LONGPNAME="poolname50charslong_012345678901234567890123456789" | export LONGPNAME="poolname50charslong_012345678901234567890123456789" | ||||||
| export LONGFSNAME="fsysname50charslong_012345678901234567890123456789" | export LONGFSNAME="fsysname50charslong_012345678901234567890123456789" | ||||||
|  | |||||||
| @ -42,7 +42,7 @@ function cleanup | |||||||
| 	zfs destroy -rf $TESTPOOL/recvfs | 	zfs destroy -rf $TESTPOOL/recvfs | ||||||
| 	rm $streamfile | 	rm $streamfile | ||||||
| 	rm $vdev | 	rm $vdev | ||||||
| 	zpool destroy testpool | 	zpool destroy tmp_pool | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -88,12 +88,11 @@ test_pool () | |||||||
| 
 | 
 | ||||||
| test_pool $TESTPOOL | test_pool $TESTPOOL | ||||||
| log_must truncate --size=1G $vdev | log_must truncate --size=1G $vdev | ||||||
| log_must zpool create -o version=1 testpool $vdev | log_must zpool create -o version=1 tmp_pool $vdev | ||||||
| test_pool testpool | test_pool tmp_pool | ||||||
| log_must zpool destroy testpool | log_must zpool destroy tmp_pool | ||||||
| log_must zpool create -d testpool $vdev | log_must zpool create -d tmp_pool $vdev | ||||||
| test_pool testpool | test_pool tmp_pool | ||||||
| log_must zpool destroy testpool | log_must zpool destroy tmp_pool | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| log_pass "'zfs send' drills appropriate holes" | log_pass "'zfs send' drills appropriate holes" | ||||||
|  | |||||||
| @ -47,9 +47,9 @@ | |||||||
| verify_runnable "global" | verify_runnable "global" | ||||||
| 
 | 
 | ||||||
| set -A fs \ | set -A fs \ | ||||||
|     "$TESTDIR" "$TESTPOOL/$TESTFS" \ |  | ||||||
|     "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" \ |     "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" \ | ||||||
|     "$TESTDIR2" "$TESTPOOL/$TESTFS-clone" |     "$TESTDIR2" "$TESTPOOL/$TESTFS-clone" \ | ||||||
|  |     "$TESTDIR" "$TESTPOOL/$TESTFS" | ||||||
| 
 | 
 | ||||||
| function cleanup | function cleanup | ||||||
| { | { | ||||||
|  | |||||||
| @ -50,12 +50,17 @@ function cleanup | |||||||
| 		log_must unshare_fs $TESTPOOL/$TESTFS | 		log_must unshare_fs $TESTPOOL/$TESTFS | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | if is_linux; then | ||||||
|  | 	set -A shareopts \ | ||||||
|  | 	    "ro" "rw" "rw,insecure" "rw,async" "ro,crossmnt" | ||||||
|  | else | ||||||
| 	set -A shareopts \ | 	set -A shareopts \ | ||||||
| 	    "ro" "ro=machine1" "ro=machine1:machine2" \ | 	    "ro" "ro=machine1" "ro=machine1:machine2" \ | ||||||
| 	    "rw" "rw=machine1" "rw=machine1:machine2" \ | 	    "rw" "rw=machine1" "rw=machine1:machine2" \ | ||||||
| 	    "ro=machine1:machine2,rw" "anon=0" "anon=0,sec=sys,rw" \ | 	    "ro=machine1:machine2,rw" "anon=0" "anon=0,sec=sys,rw" \ | ||||||
| 	    "nosuid" "root=machine1:machine2" "rw=.mydomain.mycompany.com" \ | 	    "nosuid" "root=machine1:machine2" "rw=.mydomain.mycompany.com" \ | ||||||
| 	    "rw=-terra:engineering" "log" "public" | 	    "rw=-terra:engineering" "log" "public" | ||||||
|  | fi | ||||||
| 
 | 
 | ||||||
| log_assert "Verify that NFS share options are propagated correctly." | log_assert "Verify that NFS share options are propagated correctly." | ||||||
| log_onexit cleanup | log_onexit cleanup | ||||||
| @ -72,6 +77,11 @@ do | |||||||
| 		log_fail "get sharenfs failed. ($option != ${shareopts[i]})" | 		log_fail "get sharenfs failed. ($option != ${shareopts[i]})" | ||||||
| 	fi | 	fi | ||||||
| 
 | 
 | ||||||
|  | 	# Verify the single option after the leading 'ro' or 'rw'. | ||||||
|  | 	if is_linux; then | ||||||
|  | 		option=`echo "$option" | cut -f2 -d','` | ||||||
|  | 	fi | ||||||
|  | 
 | ||||||
| 	showshares_nfs | grep $option > /dev/null 2>&1 | 	showshares_nfs | grep $option > /dev/null 2>&1 | ||||||
| 	if (( $? != 0 )); then | 	if (( $? != 0 )); then | ||||||
| 		log_fail "The '$option' option was not found in share output." | 		log_fail "The '$option' option was not found in share output." | ||||||
|  | |||||||
| @ -164,10 +164,11 @@ done | |||||||
| VDEV_FILE=$(mktemp /tmp/tmp.XXXXXX) | VDEV_FILE=$(mktemp /tmp/tmp.XXXXXX) | ||||||
| 
 | 
 | ||||||
| log_must mkfile -n 128M $VDEV_FILE | log_must mkfile -n 128M $VDEV_FILE | ||||||
| log_must zpool create testpool $VDEV_FILE | log_must zpool create overflow $VDEV_FILE | ||||||
| log_must zfs create testpool/testfs | log_must zfs create overflow/testfs | ||||||
| ID=$(zpool get -Ho value guid testpool) | ID=$(zpool get -Ho value guid overflow) | ||||||
| log_must zpool export testpool | log_must zpool export overflow | ||||||
| log_mustnot zpool import $(echo id) $(printf "%*s\n" 250 "" | tr ' ' 'c') | log_mustnot zpool import -d /tmp $(echo id) \ | ||||||
|  |     $(printf "%*s\n" 250 "" | tr ' ' 'c') | ||||||
| 
 | 
 | ||||||
| log_pass "Successfully imported and renamed a ZPOOL" | log_pass "Successfully imported and renamed a ZPOOL" | ||||||
|  | |||||||
| @ -36,9 +36,11 @@ verify_runnable "both" | |||||||
| if is_global_zone ; then | if is_global_zone ; then | ||||||
| 	destroy_pool $POOL | 	destroy_pool $POOL | ||||||
| 	destroy_pool $POOL2 | 	destroy_pool $POOL2 | ||||||
|  | 	poolexists $POOL3 && destroy_pool $POOL3 | ||||||
| else | else | ||||||
| 	cleanup_pool $POOL | 	cleanup_pool $POOL | ||||||
| 	cleanup_pool $POOL2 | 	cleanup_pool $POOL2 | ||||||
|  | 	poolexists $POOL3 && cleanup_pool $POOL3 | ||||||
| fi | fi | ||||||
| log_must rm -rf $BACKDIR $TESTDIR | log_must rm -rf $BACKDIR $TESTDIR | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -31,7 +31,9 @@ export BACKDIR=${TEST_BASE_DIR%%/}/backdir-rsend | |||||||
| 
 | 
 | ||||||
| export DISK1=${DISKS%% *} | export DISK1=${DISKS%% *} | ||||||
| export DISK2=$(echo $DISKS | awk '{print $2}') | export DISK2=$(echo $DISKS | awk '{print $2}') | ||||||
|  | export DISK3=$(echo $DISKS | awk '{print $3}') | ||||||
| 
 | 
 | ||||||
| export POOL=$TESTPOOL | export POOL=$TESTPOOL | ||||||
| export POOL2=$TESTPOOL1 | export POOL2=$TESTPOOL1 | ||||||
|  | export POOL3=$TESTPOOL2 | ||||||
| export FS=$TESTFS | export FS=$TESTFS | ||||||
|  | |||||||
| @ -120,7 +120,7 @@ function cleanup_pool | |||||||
| 	if is_global_zone ; then | 	if is_global_zone ; then | ||||||
| 		log_must zfs destroy -Rf $pool | 		log_must zfs destroy -Rf $pool | ||||||
| 	else | 	else | ||||||
| 		typeset list=$(zfs list -H -r -t filesystem,snapshot,volume -o name $pool) | 		typeset list=$(zfs list -H -r -t all -o name $pool) | ||||||
| 		for ds in $list ; do | 		for ds in $list ; do | ||||||
| 			if [[ $ds != $pool ]] ; then | 			if [[ $ds != $pool ]] ; then | ||||||
| 				if datasetexists $ds ; then | 				if datasetexists $ds ; then | ||||||
| @ -140,12 +140,18 @@ function cleanup_pool | |||||||
| 		log_must zfs mount $pool | 		log_must zfs mount $pool | ||||||
| 	fi | 	fi | ||||||
| 	if [[ -d $mntpnt ]]; then | 	if [[ -d $mntpnt ]]; then | ||||||
| 		log_must rm -rf $mntpnt/* | 		rm -rf $mntpnt/* | ||||||
| 	fi | 	fi | ||||||
| 
 | 
 | ||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function cleanup_pools | ||||||
|  | { | ||||||
|  | 	cleanup_pool $POOL2 | ||||||
|  | 	destroy_pool $POOL3 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| # | # | ||||||
| # Detect if the given two filesystems have same sub-datasets | # Detect if the given two filesystems have same sub-datasets | ||||||
| # | # | ||||||
| @ -157,8 +163,8 @@ function cmp_ds_subs | |||||||
| 	typeset src_fs=$1 | 	typeset src_fs=$1 | ||||||
| 	typeset dst_fs=$2 | 	typeset dst_fs=$2 | ||||||
| 
 | 
 | ||||||
| 	zfs list -r -H -t filesystem,snapshot,volume -o name $src_fs > $BACKDIR/src1 | 	zfs list -r -H -t all -o name $src_fs > $BACKDIR/src1 | ||||||
| 	zfs list -r -H -t filesystem,snapshot,volume -o name $dst_fs > $BACKDIR/dst1 | 	zfs list -r -H -t all -o name $dst_fs > $BACKDIR/dst1 | ||||||
| 
 | 
 | ||||||
| 	eval sed -e 's:^$src_fs:PREFIX:g' < $BACKDIR/src1 > $BACKDIR/src | 	eval sed -e 's:^$src_fs:PREFIX:g' < $BACKDIR/src1 > $BACKDIR/src | ||||||
| 	eval sed -e 's:^$dst_fs:PREFIX:g' < $BACKDIR/dst1 > $BACKDIR/dst | 	eval sed -e 's:^$dst_fs:PREFIX:g' < $BACKDIR/dst1 > $BACKDIR/dst | ||||||
| @ -324,8 +330,7 @@ function getds_with_suffix | |||||||
| 	typeset ds=$1 | 	typeset ds=$1 | ||||||
| 	typeset suffix=$2 | 	typeset suffix=$2 | ||||||
| 
 | 
 | ||||||
| 	typeset list=$(zfs list -r -H -t filesystem,snapshot,volume -o name $ds \ | 	typeset list=$(zfs list -r -H -t all -o name $ds | grep "$suffix$") | ||||||
| 	    | grep "$suffix$") |  | ||||||
| 
 | 
 | ||||||
| 	echo $list | 	echo $list | ||||||
| } | } | ||||||
| @ -487,7 +492,7 @@ function resume_test | |||||||
| 
 | 
 | ||||||
| 	for ((i=0; i<2; i=i+1)); do | 	for ((i=0; i<2; i=i+1)); do | ||||||
| 		mess_file /$streamfs/$stream_num | 		mess_file /$streamfs/$stream_num | ||||||
| 		log_mustnot zfs recv -sv $recvfs </$streamfs/$stream_num | 		log_mustnot zfs recv -suv $recvfs </$streamfs/$stream_num | ||||||
| 		stream_num=$((stream_num+1)) | 		stream_num=$((stream_num+1)) | ||||||
| 
 | 
 | ||||||
| 		token=$(zfs get -Hp -o value receive_resume_token $recvfs) | 		token=$(zfs get -Hp -o value receive_resume_token $recvfs) | ||||||
| @ -495,31 +500,26 @@ function resume_test | |||||||
| 		[[ -f /$streamfs/$stream_num ]] || \ | 		[[ -f /$streamfs/$stream_num ]] || \ | ||||||
| 		    log_fail "NO FILE /$streamfs/$stream_num" | 		    log_fail "NO FILE /$streamfs/$stream_num" | ||||||
| 	done | 	done | ||||||
| 	log_must zfs recv -sv $recvfs </$streamfs/$stream_num | 	log_must zfs recv -suv $recvfs </$streamfs/$stream_num | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
| # Setup filesystems for the resumable send/receive tests | # Setup filesystems for the resumable send/receive tests | ||||||
| # | # | ||||||
| # $1 The pool to set up with the "send" filesystems | # $1 The "send" filesystem | ||||||
| # $2 The pool for receive | # $2 The "recv" filesystem | ||||||
| # | # | ||||||
| function test_fs_setup | function test_fs_setup | ||||||
| { | { | ||||||
| 	sendpool=$1 | 	typeset sendfs=$1 | ||||||
| 	recvpool=$2 | 	typeset recvfs=$2 | ||||||
|  | 	typeset sendpool=${sendfs%%/*} | ||||||
|  | 	typeset recvpool=${recvfs%%/*} | ||||||
| 
 | 
 | ||||||
| 	sendfs=$sendpool/sendfs | 	datasetexists $sendfs && log_must zfs destroy -r $sendpool | ||||||
| 	recvfs=$recvpool/recvfs | 	datasetexists $recvfs && log_must zfs destroy -r $recvpool | ||||||
| 	streamfs=$sendpool/stream |  | ||||||
| 
 | 
 | ||||||
| 	if datasetexists $recvfs; then | 	if $(datasetexists $sendfs || zfs create -o compress=lz4 $sendfs); then | ||||||
| 		log_must zfs destroy -r $recvfs |  | ||||||
| 	fi |  | ||||||
| 	if datasetexists $sendfs; then |  | ||||||
| 		log_must zfs destroy -r $sendfs |  | ||||||
| 	fi |  | ||||||
| 	if $(zfs create -o compress=lz4 $sendfs); then |  | ||||||
| 		mk_files 1000 256 0 $sendfs & | 		mk_files 1000 256 0 $sendfs & | ||||||
| 		mk_files 1000 131072 0 $sendfs & | 		mk_files 1000 131072 0 $sendfs & | ||||||
| 		mk_files 100 1048576 0 $sendfs & | 		mk_files 100 1048576 0 $sendfs & | ||||||
|  | |||||||
| @ -30,22 +30,24 @@ | |||||||
| # 4. ZFS send to the stream state file again using the receive_resume_token | # 4. ZFS send to the stream state file again using the receive_resume_token | ||||||
| # 5. ZFS receive and verify the receive completes successfully | # 5. ZFS receive and verify the receive completes successfully | ||||||
| # 6. Repeat steps on an incremental ZFS send | # 6. Repeat steps on an incremental ZFS send | ||||||
|  | # 7. Repeat the entire procedure for a dataset at the pool root | ||||||
| # | # | ||||||
| 
 | 
 | ||||||
| verify_runnable "both" | verify_runnable "both" | ||||||
| 
 | 
 | ||||||
| log_assert "Verify resumability of a full and incremental ZFS send/receive " \ | log_assert "Verify resumability of a full and incremental ZFS send/receive " \ | ||||||
|     "in the presence of a corrupted stream" |     "in the presence of a corrupted stream" | ||||||
| log_onexit cleanup_pool $POOL2 | log_onexit cleanup_pools $POOL2 $POOL3 | ||||||
| 
 | 
 | ||||||
| sendfs=$POOL/sendfs | recvfs=$POOL3/recvfs | ||||||
| recvfs=$POOL2/recvfs | streamfs=$POOL2/stream | ||||||
| streamfs=$POOL/stream |  | ||||||
| 
 | 
 | ||||||
| test_fs_setup $POOL $POOL2 | for sendfs in $POOL2/sendfs $POOL2; do | ||||||
|  | 	test_fs_setup $sendfs $recvfs | ||||||
| 	resume_test "zfs send -v $sendfs@a" $streamfs $recvfs | 	resume_test "zfs send -v $sendfs@a" $streamfs $recvfs | ||||||
| 	resume_test "zfs send -v -i @a $sendfs@b" $streamfs $recvfs | 	resume_test "zfs send -v -i @a $sendfs@b" $streamfs $recvfs | ||||||
| 	file_check $sendfs $recvfs | 	file_check $sendfs $recvfs | ||||||
|  | done | ||||||
| 
 | 
 | ||||||
| log_pass "Verify resumability of a full and incremental ZFS send/receive " \ | log_pass "Verify resumability of a full and incremental ZFS send/receive " \ | ||||||
|     "in the presence of a corrupted stream" |     "in the presence of a corrupted stream" | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ sendfs=$POOL/sendfs | |||||||
| recvfs=$POOL2/recvfs | recvfs=$POOL2/recvfs | ||||||
| streamfs=$POOL/stream | streamfs=$POOL/stream | ||||||
| 
 | 
 | ||||||
| test_fs_setup $POOL $POOL2 | test_fs_setup $sendfs $recvfs | ||||||
| resume_test "zfs send -D -v $sendfs@a" $streamfs $recvfs | resume_test "zfs send -D -v $sendfs@a" $streamfs $recvfs | ||||||
| file_check $sendfs $recvfs | file_check $sendfs $recvfs | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -43,7 +43,7 @@ sendfs=$POOL/sendfs | |||||||
| recvfs=$POOL2/recvfs | recvfs=$POOL2/recvfs | ||||||
| streamfs=$POOL/stream | streamfs=$POOL/stream | ||||||
| 
 | 
 | ||||||
| test_fs_setup $POOL $POOL2 | test_fs_setup $sendfs $recvfs | ||||||
| resume_test "zfs send -v -e $sendfs@a" $streamfs $recvfs | resume_test "zfs send -v -e $sendfs@a" $streamfs $recvfs | ||||||
| resume_test "zfs send -v -e -i @a $sendfs@b" $streamfs $recvfs | resume_test "zfs send -v -e -i @a $sendfs@b" $streamfs $recvfs | ||||||
| file_check $sendfs $recvfs | file_check $sendfs $recvfs | ||||||
|  | |||||||
| @ -51,7 +51,7 @@ sendfs=$POOL/sendfs | |||||||
| recvfs=$POOL2/recvfs | recvfs=$POOL2/recvfs | ||||||
| streamfs=$POOL/stream | streamfs=$POOL/stream | ||||||
| 
 | 
 | ||||||
| test_fs_setup $POOL $POOL2 | test_fs_setup $sendfs $recvfs | ||||||
| log_must zfs bookmark $sendfs@a $sendfs#bm_a | log_must zfs bookmark $sendfs@a $sendfs#bm_a | ||||||
| log_must zfs destroy $sendfs@a | log_must zfs destroy $sendfs@a | ||||||
| log_must zfs receive -v $recvfs </$POOL/initial.zsend | log_must zfs receive -v $recvfs </$POOL/initial.zsend | ||||||
|  | |||||||
| @ -48,7 +48,7 @@ sendfs=$POOL/sendfs | |||||||
| recvfs=$POOL2/recvfs | recvfs=$POOL2/recvfs | ||||||
| streamfs=$POOL/stream | streamfs=$POOL/stream | ||||||
| 
 | 
 | ||||||
| test_fs_setup $POOL $POOL2 | test_fs_setup $sendfs $recvfs | ||||||
| log_must zfs unmount $sendfs | log_must zfs unmount $sendfs | ||||||
| resume_test "zfs send $sendfs" $streamfs $recvfs | resume_test "zfs send $sendfs" $streamfs $recvfs | ||||||
| file_check $sendfs $recvfs | file_check $sendfs $recvfs | ||||||
|  | |||||||
| @ -37,6 +37,7 @@ verify_disk_count "$DISKS" 2 | |||||||
| if is_global_zone ; then | if is_global_zone ; then | ||||||
| 	log_must zpool create $POOL $DISK1 | 	log_must zpool create $POOL $DISK1 | ||||||
| 	log_must zpool create $POOL2 $DISK2 | 	log_must zpool create $POOL2 $DISK2 | ||||||
|  | 	log_must zpool create $POOL3 $DISK3 | ||||||
| fi | fi | ||||||
| log_must mkdir $BACKDIR $TESTDIR | log_must mkdir $BACKDIR $TESTDIR | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Brian Behlendorf
						Brian Behlendorf