xref: /illumos-gate/usr/src/test/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_011_pos.ksh (revision 09fbbb7d1b5a956a9b81304070dcff318a4a158e)
15878fad7SDan McDonald#!/bin/ksh -p
25878fad7SDan McDonald#
35878fad7SDan McDonald# CDDL HEADER START
45878fad7SDan McDonald#
55878fad7SDan McDonald# This file and its contents are supplied under the terms of the
65878fad7SDan McDonald# Common Development and Distribution License ("CDDL"), version 1.0.
75878fad7SDan McDonald# You may only use this file in accordance with the terms of version
85878fad7SDan McDonald# 1.0 of the CDDL.
95878fad7SDan McDonald#
105878fad7SDan McDonald# A full copy of the text of the CDDL should have accompanied this
115878fad7SDan McDonald# source.  A copy of the CDDL is also available via the Internet at
125878fad7SDan McDonald# http://www.illumos.org/license/CDDL.
135878fad7SDan McDonald#
145878fad7SDan McDonald# CDDL HEADER END
155878fad7SDan McDonald#
165878fad7SDan McDonald
175878fad7SDan McDonald#
185878fad7SDan McDonald# Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
195878fad7SDan McDonald#
205878fad7SDan McDonald
211d32ba66SJohn Wren Kennedy#
221d32ba66SJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved.
231d32ba66SJohn Wren Kennedy#
241d32ba66SJohn Wren Kennedy
255878fad7SDan McDonald. $STF_SUITE/include/libtest.shlib
265878fad7SDan McDonald
275878fad7SDan McDonald#
285878fad7SDan McDonald# DESCRIPTION:
295878fad7SDan McDonald#	refquota should be sent-and-received, but it should not interfere with
305878fad7SDan McDonald#	the receipt of intermediate snapshots that may have preceded the
315878fad7SDan McDonald#	final snapshot, where the refquota should hold.
325878fad7SDan McDonald#
335878fad7SDan McDonald# STRATEGY:
345878fad7SDan McDonald#	1. Create a filesystem.
355878fad7SDan McDonald#	2. Create two equal-sized large files.
365878fad7SDan McDonald#	3. Snapshot the filesystem.
375878fad7SDan McDonald#	4. Remove one of the two large files.
385878fad7SDan McDonald#	5. Create a refquota larger than one file, but smaller than both.
395878fad7SDan McDonald#	6. Snapshot the filesystem again.
405878fad7SDan McDonald#	7. Send a replication stream of the second snapshot to a new filesystem.
415878fad7SDan McDonald#
425878fad7SDan McDonald#
435878fad7SDan McDonald
445878fad7SDan McDonaldverify_runnable "both"
455878fad7SDan McDonald
465878fad7SDan McDonaldtypeset streamfile=/var/tmp/streamfile.$$
475878fad7SDan McDonald
485878fad7SDan McDonaldfunction cleanup
495878fad7SDan McDonald{
501d32ba66SJohn Wren Kennedy	log_must rm $streamfile
511d32ba66SJohn Wren Kennedy	log_must zfs destroy -rf $TESTPOOL/$TESTFS1
521d32ba66SJohn Wren Kennedy	log_must zfs destroy -rf $TESTPOOL/$TESTFS2
535878fad7SDan McDonald}
545878fad7SDan McDonald
555878fad7SDan McDonaldlog_assert "refquota is properly sent-and-received, regardless of any " \
565878fad7SDan McDonald	"intermediate snapshots sent by a replication stream."
575878fad7SDan McDonaldlog_onexit cleanup
585878fad7SDan McDonald
595878fad7SDan McDonaldorig=$TESTPOOL/$TESTFS1
605878fad7SDan McDonalddest=$TESTPOOL/$TESTFS2
615878fad7SDan McDonald#	1. Create a filesystem.
621d32ba66SJohn Wren Kennedylog_must zfs create $orig
635878fad7SDan McDonaldorigdir=$(get_prop mountpoint $orig)
645878fad7SDan McDonald
655878fad7SDan McDonald#	2. Create two equal-sized large files.
661d32ba66SJohn Wren Kennedylog_must mkfile 5M $origdir/file1
671d32ba66SJohn Wren Kennedylog_must mkfile 5M $origdir/file2
68*09fbbb7dSAllan Judesync_all_pools
695878fad7SDan McDonald
705878fad7SDan McDonald#	3. Snapshot the filesystem.
711d32ba66SJohn Wren Kennedylog_must zfs snapshot $orig@1
725878fad7SDan McDonald
735878fad7SDan McDonald#	4. Remove one of the two large files.
741d32ba66SJohn Wren Kennedylog_must rm $origdir/file2
75*09fbbb7dSAllan Judesync_all_pools
765878fad7SDan McDonald
775878fad7SDan McDonald#	5. Create a refquota larger than one file, but smaller than both.
781d32ba66SJohn Wren Kennedylog_must zfs set refquota=8M $orig
795878fad7SDan McDonald
805878fad7SDan McDonald#	6. Snapshot the filesystem again.
811d32ba66SJohn Wren Kennedylog_must zfs snapshot $orig@2
825878fad7SDan McDonald
835878fad7SDan McDonald#	7. Send a replication stream of the second snapshot to a new filesystem.
841d32ba66SJohn Wren Kennedylog_must eval "zfs send -R $orig@2 > $streamfile"
851d32ba66SJohn Wren Kennedylog_must eval "zfs recv $dest < $streamfile"
865878fad7SDan McDonald
875878fad7SDan McDonaldlog_pass "refquota is properly sent-and-received, regardless of any " \
885878fad7SDan McDonald	"intermediate snapshots sent by a replication stream."
89