1#!/usr/bin/ksh -p
2
3#
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
7# 1.0 of the CDDL.
8#
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.
12#
13
14#
15# Copyright (c) 2017 by Delphix. All rights reserved.
16#
17
18. $STF_SUITE/tests/functional/pool_checkpoint/pool_checkpoint.kshlib
19
20#
21# DESCRIPTION:
22#	Take a checkpoint and discard checkpointed data twice. The
23#	idea is to ensure that the background discard zfs thread is
24#	always running and works as expected.
25#
26# STRATEGY:
27#	1. Create pool
28#	2. Populate it and then take a checkpoint
29#	3. Do some changes afterwards, and then discard checkpoint
30#	4. Repeat steps 2 and 3
31#
32
33verify_runnable "global"
34
35setup_test_pool
36log_onexit cleanup_test_pool
37
38populate_test_pool
39log_must zpool checkpoint $TESTPOOL
40test_change_state_after_checkpoint
41log_must zpool checkpoint -d $TESTPOOL
42test_wait_discard_finish
43
44log_must mkfile -n 100M $FS2FILE
45log_must randwritecomp $FS2FILE 100
46log_must zpool checkpoint $TESTPOOL
47
48log_must randwritecomp $FS2FILE 100
49log_must zpool checkpoint -d $TESTPOOL
50test_wait_discard_finish
51
52log_pass "Background discarding works as expected."
53