1#!/usr/local/bin/ksh93 -p 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26 27. $STF_SUITE/tests/rsend/rsend.kshlib 28 29################################################################################# 30# 31# __stc_assertion_start 32# 33# ID: rsend_004_pos 34# 35# DESCRIPTION: 36# zfs send -R -i send incremental from fs@init to fs@final. 37# 38# STRATEGY: 39# 1. Create a set of snapshots and fill with data. 40# 2. Create sub filesystems. 41# 3. Create final snapshot 42# 4. Verify zfs send -R -i will backup all the datasets which has 43# snapshot suffix @final 44# 45# TESTABILITY: explicit 46# 47# TEST_AUTOMATION_LEVEL: automated 48# 49# CODING_STATUS: COMPLETED (2007-08-27) 50# 51# __stc_assertion_end 52# 53################################################################################ 54 55verify_runnable "both" 56 57log_assert "zfs send -R -i send incremental from fs@init to fs@final." 58log_onexit cleanup_pool $POOL2 59 60# 61# Duplicate POOL2 for testing 62# 63log_must eval "$ZFS send -R $POOL@final > $BACKDIR/pool-final-R" 64log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-final-R" 65 66if is_global_zone ; then 67 # 68 # Testing send -R -i backup from pool 69 # 70 srclist=$(getds_with_suffix $POOL2 @final) 71 interlist="$srclist $(getds_with_suffix $POOL2 @snapC)" 72 interlist="$interlist $(getds_with_suffix $POOL2 @snapB)" 73 interlist="$interlist $(getds_with_suffix $POOL2 @snapA)" 74 75 log_must eval "$ZFS send -R -i @init $POOL2@final > " \ 76 "$BACKDIR/pool-init-final-iR" 77 log_must destroy_tree $interlist 78 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-init-final-iR" 79 80 # Get current datasets with suffix @final 81 dstlist=$(getds_with_suffix $POOL2 @final) 82 if [[ $srclist != $dstlist ]]; then 83 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 84 fi 85 log_must cmp_ds_cont $POOL $POOL2 86fi 87 88dstds=$(get_dst_ds $POOL $POOL2) 89# 90# Testing send -R -i backup from filesystem 91# 92log_must eval "$ZFS send -R -i @init $dstds/$FS@final > " \ 93 "$BACKDIR/fs-init-final-iR" 94 95srclist=$(getds_with_suffix $dstds/$FS @final) 96interlist="$srclist $(getds_with_suffix $dstds/$FS @snapC)" 97interlist="$interlist $(getds_with_suffix $dstds/$FS @snapB)" 98interlist="$interlist $(getds_with_suffix $dstds/$FS @snapA)" 99log_must destroy_tree $interlist 100if is_global_zone ; then 101 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/fs-init-final-iR" 102else 103 $ZFS receive -F -d $dstds/$FS < $BACKDIR/fs-init-final-iR 104fi 105 106dstlist=$(getds_with_suffix $dstds/$FS @final) 107if [[ $srclist != $dstlist ]]; then 108 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 109fi 110log_must cmp_ds_cont $POOL $POOL2 111 112if is_global_zone ; then 113 # 114 # Testing send -R -i backup from volume 115 # 116 srclist=$(getds_with_suffix $POOL2/$FS/vol @final) 117 log_must eval "$ZFS send -R -i @init $POOL2/$FS/vol@final > " \ 118 "$BACKDIR/vol-init-final-iR" 119 log_must destroy_tree $srclist 120 log_must eval "$ZFS receive -d $POOL2 < $BACKDIR/vol-init-final-iR" 121 122 dstlist=$(getds_with_suffix $POOL2/$FS/vol @final) 123 if [[ $srclist != $dstlist ]]; then 124 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 125 fi 126 log_must cmp_ds_cont $POOL $POOL2 127fi 128 129log_pass "zfs send -R -i send incremental from fs@init to fs@final." 130