1da5137abSMartin Matuska#!/bin/ksh -p
2da5137abSMartin Matuska#
3da5137abSMartin Matuska# CDDL HEADER START
4da5137abSMartin Matuska#
5da5137abSMartin Matuska# The contents of this file are subject to the terms of the
6da5137abSMartin Matuska# Common Development and Distribution License (the "License").
7da5137abSMartin Matuska# You may not use this file except in compliance with the License.
8da5137abSMartin Matuska#
9da5137abSMartin Matuska# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*271171e0SMartin Matuska# or https://opensource.org/licenses/CDDL-1.0.
11da5137abSMartin Matuska# See the License for the specific language governing permissions
12da5137abSMartin Matuska# and limitations under the License.
13da5137abSMartin Matuska#
14da5137abSMartin Matuska# When distributing Covered Code, include this CDDL HEADER in each
15da5137abSMartin Matuska# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16da5137abSMartin Matuska# If applicable, add the following below this CDDL HEADER, with the
17da5137abSMartin Matuska# fields enclosed by brackets "[]" replaced with your own identifying
18da5137abSMartin Matuska# information: Portions Copyright [yyyy] [name of copyright owner]
19da5137abSMartin Matuska#
20da5137abSMartin Matuska# CDDL HEADER END
21da5137abSMartin Matuska#
22da5137abSMartin Matuska
23da5137abSMartin Matuska#
24da5137abSMartin Matuska# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
25da5137abSMartin Matuska# Use is subject to license terms.
26da5137abSMartin Matuska#
27da5137abSMartin Matuska
28da5137abSMartin Matuska#
29da5137abSMartin Matuska# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
30da5137abSMartin Matuska#
31da5137abSMartin Matuska
32da5137abSMartin Matuska. $STF_SUITE/tests/functional/rsend/rsend.kshlib
33da5137abSMartin Matuska
34da5137abSMartin Matuska# DESCRIPTION:
35da5137abSMartin Matuska#	zfs send with multiple -X/--exclude options will
36da5137abSMartin Matuska#	exclude all of them.
37da5137abSMartin Matuska#
38da5137abSMartin Matuska# STRATEGY:
39da5137abSMartin Matuska#	1. Setup test model
40da5137abSMartin Matuska#	2. Create several datasets on pool.
41da5137abSMartin Matuska#	3. Send -R -X pool/dataset
42da5137abSMartin Matuska#	4. Verify receive does not have the excluded dataset(s).
43da5137abSMartin Matuska
44da5137abSMartin Matuskaverify_runnable "both"
45da5137abSMartin Matuska
46da5137abSMartin Matuskafunction cleanup
47da5137abSMartin Matuska{
48da5137abSMartin Matuska    cleanup_pool $POOL2
49da5137abSMartin Matuska    cleanup_pool $POOL
50da5137abSMartin Matuska    log_must setup_test_model $POOL
51da5137abSMartin Matuska}
52da5137abSMartin Matuska
53da5137abSMartin Matuskalog_assert "zfs send with multiple -X options will skip excluded dataset"
54da5137abSMartin Matuskalog_onexit cleanup
55da5137abSMartin Matuska
56da5137abSMartin Matuskacleanup
57da5137abSMartin Matuska
58da5137abSMartin Matuska#
59da5137abSMartin Matuska# Create some datasets
60da5137abSMartin Matuskalog_must zfs create -p $POOL/ds1/second/third
61da5137abSMartin Matuskalog_must zfs create -p $POOL/ds2/second
62da5137abSMartin Matuskalog_must zfs create -p $POOL/ds3/first/second/third
63da5137abSMartin Matuska
64da5137abSMartin Matuskalog_must zfs snapshot -r $POOL@presend
65da5137abSMartin Matuska
66da5137abSMartin Matuskalog_must eval "zfs send -R $POOL@presend > $BACKDIR/presend"
67da5137abSMartin Matuskalog_must eval "zfs receive -d -F $POOL2 < $BACKDIR/presend"
68da5137abSMartin Matuska
69da5137abSMartin Matuskafor ds in ds1 ds1/second ds1/second/third \
70da5137abSMartin Matuska	      ds2 ds2/second \
71da5137abSMartin Matuska	      ds3 ds3/first ds3/first/second ds3/first/second/third
72da5137abSMartin Matuskado
73da5137abSMartin Matuska    log_must datasetexists $POOL2/$ds
74da5137abSMartin Matuskadone
75da5137abSMartin Matuska
76da5137abSMartin Matuskalog_must_busy zfs destroy -r $POOL2
77da5137abSMartin Matuska
78da5137abSMartin Matuskalog_must eval "zfs send -R -X $POOL/ds1/second --exclude $POOL/ds3/first/second $POOL@presend > $BACKDIR/presend"
79da5137abSMartin Matuskalog_must eval "zfs receive -d -F $POOL2 < $BACKDIR/presend"
80da5137abSMartin Matuska
81da5137abSMartin Matuskafor ds in ds1 ds2 ds2/second ds3 ds3/first
82da5137abSMartin Matuskado
83da5137abSMartin Matuska    log_must datasetexists $POOL2/$ds
84da5137abSMartin Matuskadone
85da5137abSMartin Matuska
86da5137abSMartin Matuskafor ds in ds1/second ds1/second/third ds3/first/second ds3/first/second/third
87da5137abSMartin Matuskado
88da5137abSMartin Matuska    log_must datasetnonexists $POOL2/$ds
89da5137abSMartin Matuskadone
90da5137abSMartin Matuska
91da5137abSMartin Matuskalog_pass "zfs send with multiple -X options  excluded datasets"
92da5137abSMartin Matuska
93