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# $FreeBSD$ 24 25# 26# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 27# Use is subject to license terms. 28# 29# ident "@(#)rsend_004_pos.ksh 1.1 08/02/27 SMI" 30# 31 32. $STF_SUITE/tests/rsend/rsend.kshlib 33 34################################################################################# 35# 36# __stc_assertion_start 37# 38# ID: rsend_004_pos 39# 40# DESCRIPTION: 41# zfs send -R -i send incremental from fs@init to fs@final. 42# 43# STRATEGY: 44# 1. Create a set of snapshots and fill with data. 45# 2. Create sub filesystems. 46# 3. Create final snapshot 47# 4. Verify zfs send -R -i will backup all the datasets which has 48# snapshot suffix @final 49# 50# TESTABILITY: explicit 51# 52# TEST_AUTOMATION_LEVEL: automated 53# 54# CODING_STATUS: COMPLETED (2007-08-27) 55# 56# __stc_assertion_end 57# 58################################################################################ 59 60verify_runnable "both" 61 62log_assert "zfs send -R -i send incremental from fs@init to fs@final." 63log_onexit cleanup_pool $POOL2 64 65# 66# Duplicate POOL2 for testing 67# 68log_must eval "$ZFS send -R $POOL@final > $BACKDIR/pool-final-R" 69log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-final-R" 70 71if is_global_zone ; then 72 # 73 # Testing send -R -i backup from pool 74 # 75 srclist=$(getds_with_suffix $POOL2 @final) 76 interlist="$srclist $(getds_with_suffix $POOL2 @snapC)" 77 interlist="$interlist $(getds_with_suffix $POOL2 @snapB)" 78 interlist="$interlist $(getds_with_suffix $POOL2 @snapA)" 79 80 log_must eval "$ZFS send -R -i @init $POOL2@final > " \ 81 "$BACKDIR/pool-init-final-iR" 82 log_must destroy_tree $interlist 83 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/pool-init-final-iR" 84 85 # Get current datasets with suffix @final 86 dstlist=$(getds_with_suffix $POOL2 @final) 87 if [[ $srclist != $dstlist ]]; then 88 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 89 fi 90 log_must cmp_ds_cont $POOL $POOL2 91fi 92 93dstds=$(get_dst_ds $POOL $POOL2) 94# 95# Testing send -R -i backup from filesystem 96# 97log_must eval "$ZFS send -R -i @init $dstds/$FS@final > " \ 98 "$BACKDIR/fs-init-final-iR" 99 100srclist=$(getds_with_suffix $dstds/$FS @final) 101interlist="$srclist $(getds_with_suffix $dstds/$FS @snapC)" 102interlist="$interlist $(getds_with_suffix $dstds/$FS @snapB)" 103interlist="$interlist $(getds_with_suffix $dstds/$FS @snapA)" 104log_must destroy_tree $interlist 105if is_global_zone ; then 106 log_must eval "$ZFS receive -d -F $POOL2 < $BACKDIR/fs-init-final-iR" 107else 108 $ZFS receive -F -d $dstds/$FS < $BACKDIR/fs-init-final-iR 109fi 110 111dstlist=$(getds_with_suffix $dstds/$FS @final) 112if [[ $srclist != $dstlist ]]; then 113 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 114fi 115log_must cmp_ds_cont $POOL $POOL2 116 117if is_global_zone ; then 118 # 119 # Testing send -R -i backup from volume 120 # 121 srclist=$(getds_with_suffix $POOL2/$FS/vol @final) 122 log_must eval "$ZFS send -R -i @init $POOL2/$FS/vol@final > " \ 123 "$BACKDIR/vol-init-final-iR" 124 log_must destroy_tree $srclist 125 log_must eval "$ZFS receive -d $POOL2 < $BACKDIR/vol-init-final-iR" 126 127 dstlist=$(getds_with_suffix $POOL2/$FS/vol @final) 128 if [[ $srclist != $dstlist ]]; then 129 log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" 130 fi 131 log_must cmp_ds_cont $POOL $POOL2 132fi 133 134log_pass "zfs send -R -i send incremental from fs@init to fs@final." 135