495 stream_num=$((stream_num+1))
496
497 token=$(zfs get -Hp -o value receive_resume_token $recvfs)
498 log_must eval "zfs send -v -t $token >/$streamfs/$stream_num"
499 [[ -f /$streamfs/$stream_num ]] || \
500 log_fail "NO FILE /$streamfs/$stream_num"
501 done
502 log_must zfs recv -suv $recvfs </$streamfs/$stream_num
503 }
504
505 #
506 # Setup filesystems for the resumable send/receive tests
507 #
508 # $1 The "send" filesystem
509 # $2 The "recv" filesystem
510 #
511 function test_fs_setup
512 {
513 typeset sendfs=$1
514 typeset recvfs=$2
515 typeset streamfs=$3
516 typeset sendpool=${sendfs%%/*}
517 typeset recvpool=${recvfs%%/*}
518
519 datasetexists $sendfs && log_must zfs destroy -r $sendpool
520 datasetexists $recvfs && log_must zfs destroy -r $recvpool
521 datasetexists $streamfs && log_must zfs destroy -r $streamfs
522
523 if $(datasetexists $sendfs || zfs create -o compress=lz4 $sendfs); then
524 mk_files 1000 256 0 $sendfs &
525 mk_files 1000 131072 0 $sendfs &
526 mk_files 100 1048576 0 $sendfs &
527 mk_files 10 10485760 0 $sendfs &
528 mk_files 1 104857600 0 $sendfs &
529 log_must wait
530 log_must zfs snapshot $sendfs@a
531
532 rm_files 200 256 0 $sendfs &
533 rm_files 200 131072 0 $sendfs &
534 rm_files 20 1048576 0 $sendfs &
535 rm_files 2 10485760 0 $sendfs &
536 log_must wait
537
538 mk_files 400 256 0 $sendfs &
539 mk_files 400 131072 0 $sendfs &
540 mk_files 40 1048576 0 $sendfs &
541 mk_files 4 10485760 0 $sendfs &
542 log_must wait
543
544 log_must zfs snapshot $sendfs@b
545 log_must eval "zfs send -v $sendfs@a >/$sendpool/initial.zsend"
546 log_must eval "zfs send -v -i @a $sendfs@b " \
547 ">/$sendpool/incremental.zsend"
548 fi
549
550 log_must zfs create -o compress=lz4 $streamfs
551 }
552
553 #
554 # Check to see if the specified features are set in a send stream.
555 # The values for these features are found in uts/common/fs/zfs/sys/zfs_ioctl.h
556 #
557 # $1 The stream file
558 # $2-$n The flags expected in the stream
559 #
560 function stream_has_features
561 {
562 typeset file=$1
563 shift
564
565 [[ -f $file ]] || log_fail "Couldn't find file: $file"
566 typeset flags=$(cat $file | zstreamdump | awk '/features =/ {print $3}')
567 typeset -A feature
568 feature[dedup]="1"
569 feature[dedupprops]="2"
570 feature[sa_spill]="4"
643 inc_size=$(get_prop refer $inc_src)
644 fi
645 fi
646
647 if stream_has_features $stream compressed; then
648 ds_size=$(get_prop refer $ds)
649 else
650 ds_size=$(get_prop lrefer $ds)
651 fi
652 ds_size=$((ds_size - inc_size))
653
654 within_percent $stream_size $ds_size $percent || log_fail \
655 "$stream_size $ds_size differed by too much"
656 }
657
658 # Cleanup function for tests involving resumable send
659 function resume_cleanup
660 {
661 typeset sendfs=$1
662 typeset streamfs=$2
663 typeset sendpool=${sendfs%%/*}
664
665 datasetexists $sendfs && log_must zfs destroy -r $sendfs
666 datasetexists $streamfs && log_must zfs destroy -r $streamfs
667 cleanup_pool $POOL2
668 rm -f /$sendpool/initial.zsend /$sendpool/incremental.zsend
669 }
|
495 stream_num=$((stream_num+1))
496
497 token=$(zfs get -Hp -o value receive_resume_token $recvfs)
498 log_must eval "zfs send -v -t $token >/$streamfs/$stream_num"
499 [[ -f /$streamfs/$stream_num ]] || \
500 log_fail "NO FILE /$streamfs/$stream_num"
501 done
502 log_must zfs recv -suv $recvfs </$streamfs/$stream_num
503 }
504
505 #
506 # Setup filesystems for the resumable send/receive tests
507 #
508 # $1 The "send" filesystem
509 # $2 The "recv" filesystem
510 #
511 function test_fs_setup
512 {
513 typeset sendfs=$1
514 typeset recvfs=$2
515 typeset sendpool=${sendfs%%/*}
516 typeset recvpool=${recvfs%%/*}
517
518 datasetexists $sendfs && log_must zfs destroy -r $sendpool
519 datasetexists $recvfs && log_must zfs destroy -r $recvpool
520
521 if $(datasetexists $sendfs || zfs create -o compress=lz4 $sendfs); then
522 mk_files 1000 256 0 $sendfs &
523 mk_files 1000 131072 0 $sendfs &
524 mk_files 100 1048576 0 $sendfs &
525 mk_files 10 10485760 0 $sendfs &
526 mk_files 1 104857600 0 $sendfs &
527 log_must wait
528 log_must zfs snapshot $sendfs@a
529
530 rm_files 200 256 0 $sendfs &
531 rm_files 200 131072 0 $sendfs &
532 rm_files 20 1048576 0 $sendfs &
533 rm_files 2 10485760 0 $sendfs &
534 log_must wait
535
536 mk_files 400 256 0 $sendfs &
537 mk_files 400 131072 0 $sendfs &
538 mk_files 40 1048576 0 $sendfs &
539 mk_files 4 10485760 0 $sendfs &
540 log_must wait
541
542 log_must zfs snapshot $sendfs@b
543 log_must eval "zfs send -v $sendfs@a >/$sendpool/initial.zsend"
544 log_must eval "zfs send -v -i @a $sendfs@b " \
545 ">/$sendpool/incremental.zsend"
546 fi
547
548 if datasetexists $streamfs; then
549 log_must zfs destroy -r $streamfs
550 fi
551 log_must zfs create -o compress=lz4 $sendpool/stream
552 }
553
554 #
555 # Check to see if the specified features are set in a send stream.
556 # The values for these features are found in uts/common/fs/zfs/sys/zfs_ioctl.h
557 #
558 # $1 The stream file
559 # $2-$n The flags expected in the stream
560 #
561 function stream_has_features
562 {
563 typeset file=$1
564 shift
565
566 [[ -f $file ]] || log_fail "Couldn't find file: $file"
567 typeset flags=$(cat $file | zstreamdump | awk '/features =/ {print $3}')
568 typeset -A feature
569 feature[dedup]="1"
570 feature[dedupprops]="2"
571 feature[sa_spill]="4"
644 inc_size=$(get_prop refer $inc_src)
645 fi
646 fi
647
648 if stream_has_features $stream compressed; then
649 ds_size=$(get_prop refer $ds)
650 else
651 ds_size=$(get_prop lrefer $ds)
652 fi
653 ds_size=$((ds_size - inc_size))
654
655 within_percent $stream_size $ds_size $percent || log_fail \
656 "$stream_size $ds_size differed by too much"
657 }
658
659 # Cleanup function for tests involving resumable send
660 function resume_cleanup
661 {
662 typeset sendfs=$1
663 typeset streamfs=$2
664
665 datasetexists $sendfs && log_must zfs destroy -r $sendfs
666 datasetexists $streamfs && log_must zfs destroy -r $streamfs
667 cleanup_pool $POOL2
668 rm -f /$POOL/initial.zsend /$POOL/incremental.zsend
669 }
|