4 # This file and its contents are supplied under the terms of the
5 # Common Development and Distribution License ("CDDL"), version 1.0.
6 # You may only use this file in accordance with the terms of version
9 # A full copy of the text of the CDDL should have accompanied this
10 # source. A copy of the CDDL is also available via the Internet at
11 # http://www.illumos.org/license/CDDL.
15 # Copyright (c) 2012, 2016 by Delphix. All rights reserved.
18 .
$STF_SUITE/include
/libtest.shlib
19 .
$STF_SUITE/tests
/functional
/nopwrite
/nopwrite.shlib
23 # Verify that nopwrite is not enabled if the copies property changes
26 # 1. Create a clone with copies set higher than the origin fs
27 # 2. Verify that nopwrite is in use.
28 # 3. Repeat with the number of copies decreased.
31 verify_runnable
"global"
32 origin
="$TESTPOOL/$TESTFS"
37 datasetexists
$origin && log_must zfs destroy
-R $origin
38 log_must zfs create
-o mountpoint
=$TESTDIR $origin
41 log_assert
"nopwrite requires copies property to remain constant"
43 # Verify nopwrite is disabled with increased redundancy
44 log_must zfs
set compress=on
$origin
45 log_must zfs
set checksum
=sha256
$origin
46 dd if=/dev
/urandom of
=$TESTDIR/file bs
=1024k count
=$MEGS conv
=notrunc \
47 >/dev
/null
2>&1 || log_fail
"dd into $TESTDIR/file failed."
48 zfs snapshot
$origin@a || log_fail
"zfs snap failed"
49 log_must zfs clone
$origin@a
$origin/clone
50 zfs
set copies
=3 $origin/clone
51 dd if=/$TESTDIR/file of
=/$TESTDIR/clone
/file bs
=1024k count
=$MEGS \
52 conv
=notrunc
>/dev
/null
2>&1 || log_fail
"dd failed."
53 log_mustnot verify_nopwrite
$origin $origin@a
$origin/clone
55 # Verify nopwrite is disabled with decreased redundancy
56 zfs destroy
-R $origin || log_fail
"Couldn't destroy $origin"
57 zfs create
-o mountpoint
=$TESTDIR $origin || \
58 log_fail
"Couldn't recreate $origin"
59 log_must zfs
set compress=on
$origin
60 log_must zfs
set copies
=3 $origin
61 log_must zfs
set checksum
=sha256
$origin
62 dd if=/dev
/urandom of
=$TESTDIR/file bs
=1024k count
=$MEGS conv
=notrunc \
63 >/dev
/null
2>&1 || log_fail
"dd into $TESTDIR/file failed."
64 zfs snapshot
$origin@a || log_fail
"zfs snap failed"
65 log_must zfs clone
$origin@a
$origin/clone
66 zfs
set copies
=1 $origin/clone
67 dd if=/$TESTDIR/file of
=/$TESTDIR/clone
/file bs
=1024k count
=$MEGS \
68 conv
=notrunc
>/dev
/null
2>&1 || log_fail
"dd failed."
69 log_mustnot verify_nopwrite
$origin $origin@a
$origin/clone
71 log_pass
"nopwrite requires copies property to remain constant"