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
48 typeset ORIG_TIMEOUT=$(get_tunable COMMIT_TIMEOUT_PCT)
52 for PCT in 0 1 2 4 8 16 32 64 128 256 512 1024; do
53 log_must set_tunable64 COMMIT_TIMEOUT_PCT $PCT
55 log_must zpool create $TESTPOOL $VDEV log $SDEV
58 log_must fio --rw write --sync 1 --directory "/$TESTPOOL" \
59 --bs 8K --size 8K --name slog-test
63 log_must zpool offline $TESTPOOL $SDEV
64 log_must verify_slog_device $TESTPOOL $SDEV 'OFFLINE'
65 log_must zpool online $TESTPOOL $SDEV
66 log_must verify_slog_device $TESTPOOL $SDEV 'ONLINE'
71 log_must zpool destroy -f $TESTPOOL
74 log_pass "Concurrent writes with slog offline/online works."