1eda14cbcSMatt Macy#!/bin/ksh -p 2eda14cbcSMatt Macy# 3eda14cbcSMatt Macy# CDDL HEADER START 4eda14cbcSMatt Macy# 5eda14cbcSMatt Macy# The contents of this file are subject to the terms of the 6eda14cbcSMatt Macy# Common Development and Distribution License (the "License"). 7eda14cbcSMatt Macy# You may not use this file except in compliance with the License. 8eda14cbcSMatt Macy# 9eda14cbcSMatt Macy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*271171e0SMartin Matuska# or https://opensource.org/licenses/CDDL-1.0. 11eda14cbcSMatt Macy# See the License for the specific language governing permissions 12eda14cbcSMatt Macy# and limitations under the License. 13eda14cbcSMatt Macy# 14eda14cbcSMatt Macy# When distributing Covered Code, include this CDDL HEADER in each 15eda14cbcSMatt Macy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16eda14cbcSMatt Macy# If applicable, add the following below this CDDL HEADER, with the 17eda14cbcSMatt Macy# fields enclosed by brackets "[]" replaced with your own identifying 18eda14cbcSMatt Macy# information: Portions Copyright [yyyy] [name of copyright owner] 19eda14cbcSMatt Macy# 20eda14cbcSMatt Macy# CDDL HEADER END 21eda14cbcSMatt Macy# 22eda14cbcSMatt Macy 23eda14cbcSMatt Macy# 24eda14cbcSMatt Macy# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25eda14cbcSMatt Macy# Use is subject to license terms. 26eda14cbcSMatt Macy# 27eda14cbcSMatt Macy 28eda14cbcSMatt Macy# 29eda14cbcSMatt Macy# Copyright (c) 2013, 2016 by Delphix. All rights reserved. 30eda14cbcSMatt Macy# 31eda14cbcSMatt Macy 32eda14cbcSMatt Macy. $STF_SUITE/tests/functional/rsend/rsend.kshlib 33eda14cbcSMatt Macy 34eda14cbcSMatt Macy# 35eda14cbcSMatt Macy# DESCRIPTION: 36eda14cbcSMatt Macy# ZFS can handle stream with multiple identical (same GUID) snapshots 37eda14cbcSMatt Macy# 38eda14cbcSMatt Macy# STRATEGY: 39eda14cbcSMatt Macy# 1. Recursively backup snapshot 40eda14cbcSMatt Macy# 2. Restore it to the given filesystem 41eda14cbcSMatt Macy# 3. Resend the snapshot again 42eda14cbcSMatt Macy# 4. Verify this stream can be restore to this filesystem again 43eda14cbcSMatt Macy# 44eda14cbcSMatt Macy 45eda14cbcSMatt Macyverify_runnable "both" 46eda14cbcSMatt Macy 47eda14cbcSMatt Macylog_assert "ZFS can handle stream with multiple identical (same GUID) snapshots" 48eda14cbcSMatt Macylog_onexit cleanup_pool $POOL2 49eda14cbcSMatt Macy 50eda14cbcSMatt Macylog_must zfs create $POOL2/$FS 51eda14cbcSMatt Macylog_must zfs snapshot $POOL2/$FS@snap 52eda14cbcSMatt Macy 53eda14cbcSMatt Macy# 54eda14cbcSMatt Macy# First round restore the stream 55eda14cbcSMatt Macy# 56eda14cbcSMatt Macylog_must eval "zfs send -R $POOL2/$FS@snap > $BACKDIR/fs-R" 57eda14cbcSMatt Macylog_must eval "zfs receive -d -F $POOL2/$FS < $BACKDIR/fs-R" 58eda14cbcSMatt Macy 59eda14cbcSMatt Macy# 60eda14cbcSMatt Macy# In order to avoid 'zfs send -R' failed, create snapshot for 61eda14cbcSMatt Macy# all the sub-systems 62eda14cbcSMatt Macy# 63eda14cbcSMatt Macylist=$(zfs list -r -H -o name -t filesystem $POOL2/$FS) 64eda14cbcSMatt Macyfor item in $list ; do 65eda14cbcSMatt Macy if datasetnonexists $item@snap ; then 66eda14cbcSMatt Macy log_must zfs snapshot $item@snap 67eda14cbcSMatt Macy fi 68eda14cbcSMatt Macydone 69eda14cbcSMatt Macy 70eda14cbcSMatt Macy# 71eda14cbcSMatt Macy# Second round restore the stream 72eda14cbcSMatt Macy# 73eda14cbcSMatt Macylog_must eval "zfs send -R $POOL2/$FS@snap > $BACKDIR/fs-R" 74eda14cbcSMatt Macydstds=$(get_dst_ds $POOL2/$FS $POOL2/$FS) 75eda14cbcSMatt Macylog_must eval "zfs receive -d -F $dstds < $BACKDIR/fs-R" 76eda14cbcSMatt Macy 77eda14cbcSMatt Macylog_pass "ZFS can handle stream with multiple identical (same GUID) snapshots" 78