1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2021 Intel Corporation. 4# All rights reserved. 5 6curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}")) 7rootdir=$(readlink -f $curdir/../../..) 8source $rootdir/test/common/autotest_common.sh 9 10bdevperf=$rootdir/build/examples/bdevperf 11rpc_py="$rootdir/scripts/rpc.py -s /var/tmp/spdk.sock" 12 13check_flush_in_progress() { 14 $rpc_py bdev_ocf_flush_status MalCache0 \ 15 | jq -e '.in_progress' > /dev/null 16} 17 18bdevperf_config() { 19 local config 20 21 config="$( 22 cat <<- JSON 23 { 24 "method": "bdev_malloc_create", 25 "params": { 26 "name": "Malloc0", 27 "num_blocks": 102400, 28 "block_size": 512 29 } 30 }, 31 { 32 "method": "bdev_malloc_create", 33 "params": { 34 "name": "Malloc1", 35 "num_blocks": 1024000, 36 "block_size": 512 37 } 38 }, 39 { 40 "method": "bdev_ocf_create", 41 "params": { 42 "name": "MalCache0", 43 "mode": "wb", 44 "cache_line_size": 4, 45 "cache_bdev_name": "Malloc0", 46 "core_bdev_name": "Malloc1" 47 } 48 } 49 JSON 50 )" 51 52 jq . <<- JSON 53 { 54 "subsystems": [ 55 { 56 "subsystem": "bdev", 57 "config": [ 58 $( 59 IFS="," 60 printf '%s\n' "$config" 61 ), 62 { 63 "method": "bdev_wait_for_examine" 64 } 65 ] 66 } 67 ] 68 } 69 JSON 70} 71 72$bdevperf --json <(bdevperf_config) -q 128 -o 4096 -w write -t 120 -r /var/tmp/spdk.sock & 73bdevperf_pid=$! 74trap 'killprocess $bdevperf_pid' SIGINT SIGTERM EXIT 75waitforlisten $bdevperf_pid 76sleep 5 77 78$rpc_py bdev_ocf_flush_start MalCache0 79sleep 1 80 81while check_flush_in_progress; do 82 sleep 1 83done 84$rpc_py bdev_ocf_flush_status MalCache0 | jq -e '.status == 0' 85