#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or https://opensource.org/licenses/CDDL-1.0. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2023 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmap/mmap.cfg # # DESCRIPTION: # Verify mixed buffered and mmap IO. # # STRATEGY: # 1. Create an empty file. # 2. Start a background buffered read/write fio to the file. # 3. Start a background mmap read/write fio to the file. # verify_runnable "global" function cleanup { log_must rm -f "$tmp_file" } log_assert "Verify mixed buffered and mmap IO" log_onexit cleanup mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) tmp_file=$mntpnt/file bs=$((128 * 1024)) blocks=64 size=$((bs * blocks)) runtime=60 log_must dd if=/dev/zero of=$tmp_file bs=$bs count=$blocks # Buffered IO writes log_must eval "fio --filename=$tmp_file --name=buffer-write \ --rw=randwrite --size=$size --bs=$bs --direct=0 --numjobs=1 \ --ioengine=sync --fallocate=none --group_reporting --minimal \ --runtime=$runtime --time_based --norandommap &" # Buffered IO reads log_must eval "fio --filename=$tmp_file --name=buffer-read \ --rw=randread --size=$size --bs=$bs --direct=0 --numjobs=1 \ --ioengine=sync --fallocate=none --group_reporting --minimal \ --runtime=$runtime --time_based --norandommap &" # mmap IO writes log_must eval "fio --filename=$tmp_file --name=mmap-write \ --rw=randwrite --size=$size --bs=$bs --numjobs=1 \ --ioengine=mmap --fallocate=none --group_reporting --minimal \ --runtime=$runtime --time_based --norandommap &" # mmap IO reads log_must eval "fio --filename=$tmp_file --name=mmap-read \ --rw=randread --size=$size --bs=$bs --numjobs=1 \ --ioengine=mmap --fallocate=none --group_reporting --minimal \ --runtime=$runtime --time_based --norandommap &" log_must wait log_pass "Verfied mixed buffered and mmap IO"