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/include
/properties.shlib
20 .
$STF_SUITE/tests
/functional
/nopwrite
/nopwrite.shlib
24 # Verify that if the checksum on the origin and clone is sha256, any compression
25 # algorithm enables nopwrite.
28 # 1. Create an origin dataset with compression and sha256 checksum.
29 # 2. Write a 64M file into the origin dataset.
30 # 3. For each of 4 randomly chosen compression types:
31 # 3a. Create a snap and clone (inheriting the checksum property) of the origin.
32 # 3b. Apply the compression property to the clone.
33 # 3c. Write the same 64M of data into the file that exists in the clone.
34 # 3d. Verify that no new space was consumed.
37 verify_runnable
"global"
38 origin
="$TESTPOOL/$TESTFS"
43 datasetexists
$origin && log_must zfs destroy
-R $origin
44 log_must zfs create
-o mountpoint
=$TESTDIR $origin
47 log_assert
"nopwrite works with sha256 and any compression algorithm"
49 log_must zfs
set compress=on
$origin
50 log_must zfs
set checksum
=sha256
$origin
51 dd if=/dev
/urandom of
=$TESTDIR/file bs
=1024k count
=$MEGS conv
=notrunc \
52 >/dev
/null
2>&1 || log_fail
"initial dd failed."
54 # Verify nop_write for 4 random compression algorithms
55 for i
in $
(get_rand_compress
4); do
56 zfs snapshot
$origin@a || log_fail
"zfs snap failed"
57 log_must zfs clone
-o compress=$i $origin@a
$origin/clone
58 dd if=/$TESTDIR/file of
=/$TESTDIR/clone
/file bs
=1024k count
=$MEGS \
59 conv
=notrunc
>/dev
/null
2>&1 || log_fail
"dd failed."
60 log_must verify_nopwrite
$origin $origin@a
$origin/clone
61 zfs destroy
-R $origin@a || log_fail
"zfs destroy failed"
64 log_pass
"nopwrite works with sha256 and any compression algorithm"