3 # This file and its contents are supplied under the terms of the
4 # Common Development and Distribution License ("CDDL"), version 1.0.
5 # You may only use this file in accordance with the terms of version
8 # A full copy of the text of the CDDL should have accompanied this
9 # source. A copy of the CDDL is also available via the Internet at
10 # http://www.illumos.org/license/CDDL.
14 # Copyright (c) 2017 by Delphix. All rights reserved.
17 .
$STF_SUITE/tests
/functional
/slog
/slog.kshlib
21 # Concurrent sync writes with log offline/online works.
24 # 1. Configure "zfs_commit_timeout_pct"
25 # 2. Create pool with a log device.
26 # 3. Concurrently do the following:
27 # 3.1. Perform 8K sync writes
28 # 3.2. Perform log offline/online commands
29 # 4. Loop to test with growing "zfs_commit_timeout_pct" values.
32 verify_runnable
"global"
37 # Wait for any of the writes and/or zpool commands that were
38 # kicked off in the background to complete. On failure, we may
39 # enter this function without previously waiting for them.
43 set_tunable64
$COMMIT_TIMEOUT_PCT $ORIG_TIMEOUT
45 poolexists
$TESTPOOL && zpool destroy
-f $TESTPOOL
49 typeset COMMIT_TIMEOUT_PCT
=commit_timeout_pct
51 typeset COMMIT_TIMEOUT_PCT
=zfs_commit_timeout_pct
53 typeset ORIG_TIMEOUT
=$
(get_tunable
$COMMIT_TIMEOUT_PCT)
57 for PCT
in 0 1 2 4 8 16 32 64 128 256 512 1024; do
58 log_must set_tunable64
$COMMIT_TIMEOUT_PCT $PCT
60 log_must zpool create
$TESTPOOL $VDEV log
$SDEV
63 log_must fio
--rw write --sync 1 --directory "/$TESTPOOL" \
64 --bs 8K
--size 8K
--name slog-test
68 log_must zpool offline
$TESTPOOL $SDEV
69 log_must verify_slog_device
$TESTPOOL $SDEV 'OFFLINE'
70 log_must zpool online
$TESTPOOL $SDEV
71 log_must verify_slog_device
$TESTPOOL $SDEV 'ONLINE'
76 log_must zpool destroy
-f $TESTPOOL
79 log_pass
"Concurrent writes with slog offline/online works."