194ddd090SPrakash Surya#!/bin/ksh -p 294ddd090SPrakash Surya# 394ddd090SPrakash Surya# This file and its contents are supplied under the terms of the 494ddd090SPrakash Surya# Common Development and Distribution License ("CDDL"), version 1.0. 594ddd090SPrakash Surya# You may only use this file in accordance with the terms of version 694ddd090SPrakash Surya# 1.0 of the CDDL. 794ddd090SPrakash Surya# 894ddd090SPrakash Surya# A full copy of the text of the CDDL should have accompanied this 994ddd090SPrakash Surya# source. A copy of the CDDL is also available via the Internet at 1094ddd090SPrakash Surya# http://www.illumos.org/license/CDDL. 1194ddd090SPrakash Surya# 1294ddd090SPrakash Surya 1394ddd090SPrakash Surya# 1494ddd090SPrakash Surya# Copyright (c) 2017 by Delphix. All rights reserved. 1594ddd090SPrakash Surya# 1694ddd090SPrakash Surya 1794ddd090SPrakash Surya. $STF_SUITE/tests/functional/slog/slog.kshlib 1894ddd090SPrakash Surya 1994ddd090SPrakash Surya# 2094ddd090SPrakash Surya# DESCRIPTION: 2194ddd090SPrakash Surya# Concurrent sync writes with log offline/online works. 2294ddd090SPrakash Surya# 2394ddd090SPrakash Surya# STRATEGY: 2494ddd090SPrakash Surya# 1. Configure "zfs_commit_timeout_pct" 2594ddd090SPrakash Surya# 2. Create pool with a log device. 2694ddd090SPrakash Surya# 3. Concurrently do the following: 2794ddd090SPrakash Surya# 3.1. Perform 8K sync writes 2894ddd090SPrakash Surya# 3.2. Perform log offline/online commands 2994ddd090SPrakash Surya# 4. Loop to test with growing "zfs_commit_timout_pct" values. 3094ddd090SPrakash Surya# 3194ddd090SPrakash Surya 3294ddd090SPrakash Suryaverify_runnable "global" 3394ddd090SPrakash Surya 3494ddd090SPrakash Suryafunction cleanup 3594ddd090SPrakash Surya{ 3694ddd090SPrakash Surya # 3794ddd090SPrakash Surya # Wait for any of the writes and/or zpool commands that were 3894ddd090SPrakash Surya # kicked off in the background to complete. On failure, we may 3994ddd090SPrakash Surya # enter this function without previously waiting for them. 4094ddd090SPrakash Surya # 4194ddd090SPrakash Surya wait 4294ddd090SPrakash Surya 4394ddd090SPrakash Surya mdb -kwe "zfs_commit_timeout_pct/Z $ORIG_TIMEOUT" 4494ddd090SPrakash Surya 4594ddd090SPrakash Surya poolexists $TESTPOOL && zpool destroy -f $TESTPOOL 4694ddd090SPrakash Surya} 4794ddd090SPrakash Surya 4894ddd090SPrakash SuryaORIG_TIMEOUT=$(mdb -ke "zfs_commit_timeout_pct/J" | tail -1 | awk '{print $NF}') 4994ddd090SPrakash Suryalog_onexit cleanup 50*d8849d7dSChunwei Chenlog_must setup 5194ddd090SPrakash Surya 5294ddd090SPrakash Suryafor PCT in 0 1 2 4 8 16 32 64 128 256 512 1024; do 5394ddd090SPrakash Surya log_must mdb -kwe "zfs_commit_timeout_pct/Z $PCT" 5494ddd090SPrakash Surya 5594ddd090SPrakash Surya log_must zpool create $TESTPOOL $VDEV log $SDEV 5694ddd090SPrakash Surya 5794ddd090SPrakash Surya for i in {1..10}; do 5894ddd090SPrakash Surya log_must fio --rw write --sync 1 --directory "/$TESTPOOL" \ 5994ddd090SPrakash Surya --bs 8K --size 8K --name slog-test 6094ddd090SPrakash Surya done & 6194ddd090SPrakash Surya 6294ddd090SPrakash Surya for i in {1..10}; do 6394ddd090SPrakash Surya log_must zpool offline $TESTPOOL $SDEV 6494ddd090SPrakash Surya log_must verify_slog_device $TESTPOOL $SDEV 'OFFLINE' 6594ddd090SPrakash Surya log_must zpool online $TESTPOOL $SDEV 6694ddd090SPrakash Surya log_must verify_slog_device $TESTPOOL $SDEV 'ONLINE' 6794ddd090SPrakash Surya done & 6894ddd090SPrakash Surya 6994ddd090SPrakash Surya wait 7094ddd090SPrakash Surya 7194ddd090SPrakash Surya log_must zpool destroy -f $TESTPOOL 7294ddd090SPrakash Suryadone 7394ddd090SPrakash Surya 7494ddd090SPrakash Suryalog_pass "Concurrent writes with slog offline/online works." 75