003 File Manager
Current Path:
/usr/src/sys/contrib/openzfs/tests/zfs-tests/tests/functional/rsend
usr
/
src
/
sys
/
contrib
/
openzfs
/
tests
/
zfs-tests
/
tests
/
functional
/
rsend
/
📁
..
📄
Makefile.am
(1.51 KB)
📄
cleanup.ksh
(1.27 KB)
📄
dedup.zsend.bz2
(18.13 KB)
📄
dedup_encrypted_zvol.bz2
(1.41 MB)
📄
dedup_encrypted_zvol.zsend.bz2
(817.08 KB)
📄
fs.tar.gz
(12.89 KB)
📄
recv_dedup.ksh
(1.4 KB)
📄
recv_dedup_encrypted_zvol.ksh
(1.62 KB)
📄
rsend.cfg
(1.18 KB)
📄
rsend.kshlib
(20.31 KB)
📄
rsend_001_pos.ksh
(2.13 KB)
📄
rsend_002_pos.ksh
(2.78 KB)
📄
rsend_003_pos.ksh
(2.7 KB)
📄
rsend_004_pos.ksh
(3.61 KB)
📄
rsend_005_pos.ksh
(3.13 KB)
📄
rsend_006_pos.ksh
(2.07 KB)
📄
rsend_007_pos.ksh
(2.65 KB)
📄
rsend_008_pos.ksh
(3.29 KB)
📄
rsend_009_pos.ksh
(2.47 KB)
📄
rsend_010_pos.ksh
(2.15 KB)
📄
rsend_011_pos.ksh
(3.08 KB)
📄
rsend_012_pos.ksh
(5.11 KB)
📄
rsend_013_pos.ksh
(2.33 KB)
📄
rsend_014_pos.ksh
(1.66 KB)
📄
rsend_016_neg.ksh
(886 B)
📄
rsend_019_pos.ksh
(1.7 KB)
📄
rsend_020_pos.ksh
(1.47 KB)
📄
rsend_021_pos.ksh
(1.64 KB)
📄
rsend_022_pos.ksh
(1.91 KB)
📄
rsend_024_pos.ksh
(1.55 KB)
📄
send-L_toggle.ksh
(2.12 KB)
📄
send-c_embedded_blocks.ksh
(3.74 KB)
📄
send-c_incremental.ksh
(3 KB)
📄
send-c_lz4_disabled.ksh
(2.05 KB)
📄
send-c_mixed_compression.ksh
(1.52 KB)
📄
send-c_props.ksh
(1.81 KB)
📄
send-c_recv_dedup.ksh
(1.62 KB)
📄
send-c_recv_lz4_disabled.ksh
(2.04 KB)
📄
send-c_resume.ksh
(1.52 KB)
📄
send-c_stream_size_estimate.ksh
(3 KB)
📄
send-c_verify_contents.ksh
(1.66 KB)
📄
send-c_verify_ratio.ksh
(1.95 KB)
📄
send-c_volume.ksh
(2.21 KB)
📄
send-c_zstreamdump.ksh
(2.43 KB)
📄
send-cpL_varied_recsize.ksh
(6.77 KB)
📄
send-wR_encrypted_zvol.ksh
(3.06 KB)
📄
send_encrypted_files.ksh
(3.91 KB)
📄
send_encrypted_hierarchy.ksh
(3.06 KB)
📄
send_encrypted_props.ksh
(8.95 KB)
📄
send_encrypted_truncated_files.ksh
(4.02 KB)
📄
send_freeobjects.ksh
(2.12 KB)
📄
send_holds.ksh
(5.9 KB)
📄
send_hole_birth.ksh
(3.63 KB)
📄
send_invalid.ksh
(1.3 KB)
📄
send_mixed_raw.ksh
(4.13 KB)
📄
send_partial_dataset.ksh
(3.57 KB)
📄
send_realloc_dnode_size.ksh
(3.64 KB)
📄
send_realloc_encrypted_files.ksh
(4.01 KB)
📄
send_realloc_files.ksh
(3.6 KB)
📄
send_spill_block.ksh
(4.83 KB)
📄
setup.ksh
(1.27 KB)
Editing: send-cpL_varied_recsize.ksh
#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify compressed send works correctly with datasets of varying recsize. # # Strategy: # 1. Check the recv behavior (into pools with features enabled and disabled) # of all combinations of -c -p and -L. Verify the stream is compressed, # and that the recsize property and that of a received file is correct # according to this matrix: # # +---------+--------+------------+------------+-----------+-----------+ # | send | send | received | received | received | received | # | stream | stream | file bs | prop | file bs | props | # | recsize | flags | (disabled) | (disabled) | (enabled) | (enabled) | # +---------+--------+------------+------------+-----------+-----------+ # | 128k | | 128k | 128k | 128k | 128k | # | 128k | -c | Fails | Fails | 128k | 128k | # | 128k | -p | 128k | 128k | 128k | 128k | # | 128k | -L | 128k | 128k | 128k | 128k | # | 128k | -cp | Fails | Fails | 128k | 128k | # | 128k | -cL | Fails | Fails | 128k | 128k | # | 128k | -pL | 128k | 128k | 128k | 128k | # | 128k | -cpL | Fails | Fails | 128k | 128k | # | 1m | | Fails | Fails | 128k | 128k | # | 1m | -c | Fails | Fails | 128k | 128k | # | 1m | -p | 128k | 128k | 128k | 1m | # | 1m | -L | Fails | Fails | 1m | 128k | # | 1m | -cp | Fails | Fails | 128k | 1m | # | 1m | -cL | Fails | Fails | 1m | 128k | # | 1m | -pL | Fails | Fails | 1m | 1m | # | 1m | -cpL | Fails | Fails | 1m | 1m | # +---------+--------+------------+------------+-----------+-----------+ # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/128k && log_must_busy zfs destroy $TESTPOOL/128k datasetexists $TESTPOOL/1m && log_must_busy zfs destroy $TESTPOOL/1m cleanup_pool $POOL2 destroy_pool $POOL3 } # For a received stream, verify the recsize (prop and file) match expectations. function check_recsize { typeset recv_ds=$1 typeset expected_file_bs=$2 typeset expected_recsize=$3 typeset file="$(get_prop mountpoint $recv_ds)/testfile" [[ -f $file ]] || log_fail "file '$file' doesn't exist" typeset read_recsize=$(get_prop recsize $recv_ds) if is_freebsd; then typeset read_file_bs=$(stat -f "%k" $file) else typeset read_file_bs=$(stat $file | sed -n \ 's/.*IO Block: \([0-9]*\).*/\1/p') fi [[ $read_recsize = $expected_recsize ]] || log_fail \ "read_recsize: $read_recsize expected_recsize: $expected_recsize" [[ $read_file_bs = $expected_file_bs ]] || log_fail \ "read_file_bs: $read_file_bs expected_file_bs: $expected_file_bs" } # # This function does a zfs send and receive according to the parameters # below, and verifies the data shown in the strategy section. # # -[cpL] flags to pass through to 'zfs send' # -d Receive into a pool with all features disabled # # $1 The recordsize of the send dataset # $2 Whether or not the recv should work. # $3 The blocksize expected in a received file (default 128k) # $4 The recordsize property expected in a received dataset (default 128k) # function check { typeset recv_pool=$POOL2 typeset flags='-' while getopts "cdpL" opt; do case $opt in c) flags+='c' ;; d) recv_pool=$POOL3 ;; p) flags+='p' ;; L) flags+='L' ;; esac done shift $(($OPTIND - 1)) [[ ${#flags} -eq 1 ]] && flags='' typeset recsize=$1 typeset verify=$2 typeset expected_file_bs=${3-131072} typeset expected_recsize=${4-131072} typeset send_ds=$TESTPOOL/$recsize typeset send_snap=$send_ds@snap typeset recv_ds=$recv_pool/$recsize typeset stream=$BACKDIR/stream.out datasetexists $send_ds || log_fail "send ds: $send_ds doesn't exist" [[ -f $stream ]] && log_must rm $stream log_must eval "zfs send $flags $send_snap >$stream" $verify eval "zfs recv $recv_ds <$stream" typeset stream_size=$(cat $stream | zstreamdump | sed -n \ 's/ Total write size = \(.*\) (0x.*)/\1/p') # # Special case: For a send dataset with large blocks, don't try to # verify the stream size is correct if the compress flag is present # but the large blocks flag isn't. In these cases, the user data # isn't compressed in the stream (though metadata is) so the # verification would fail. # typeset do_size_test=true [[ $recsize = $large && $flags =~ 'c' && ! $flags =~ 'L' ]] && \ do_size_test=false $do_size_test && verify_stream_size $stream $send_ds if [[ $verify = "log_mustnot" ]]; then datasetnonexists $recv_ds || log_fail "$recv_ds shouldn't exist" return fi check_recsize $recv_ds $expected_file_bs $expected_recsize $do_size_test && verify_stream_size $stream $recv_ds log_must_busy zfs destroy -r $recv_ds } log_assert "Verify compressed send works with datasets of varying recsize." log_onexit cleanup typeset recsize opts dir typeset small=$((128 * 1024)) typeset large=$((1024 * 1024)) # Create POOL3 with features disabled and datasets to create test send streams datasetexists $POOL3 && log_must zpool destroy $POOL3 log_must zpool create -d $POOL3 $DISK3 write_compressible $BACKDIR 32m for recsize in $small $large; do log_must zfs create -o compress=gzip -o recsize=$recsize \ $TESTPOOL/$recsize dir=$(get_prop mountpoint $TESTPOOL/$recsize) log_must cp $BACKDIR/file.0 $dir/testfile log_must zfs snapshot $TESTPOOL/$recsize@snap done # Run tests for send streams without large blocks for opts in '' -d -c -p -dp -L -dL -cp -cL -pL -dpL -cpL; do check $opts $small log_must done for opts in -dc -dcp -dcL -dcpL; do check $opts $small log_mustnot done # Run tests for send streams with large blocks for opts in '' -d -dp -c; do check $opts $large log_must done for opts in -dc -dL -dcp -dcL -dpL -dcpL; do check $opts $large log_mustnot done check -p $large log_must $small $large check -L $large log_must $large $small check -cp $large log_must $small $large check -cL $large log_must $large $small check -pL $large log_must $large $large check -cpL $large log_must $large $large log_pass "Compressed send works with datasets of varying recsize."
Upload File
Create Folder