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