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 10rpc_py=$rootdir/scripts/rpc.py 11cache_line_sizes=(4 8 16 32 64) 12cache_modes=(wt wb pt wa wi wo) 13 14$SPDK_BIN_DIR/iscsi_tgt & 15spdk_pid=$! 16 17waitforlisten $spdk_pid 18 19# Create OCF cache with different cache line sizes 20for cache_line_size in "${cache_line_sizes[@]}"; do 21 $rpc_py bdev_malloc_create 101 512 -b Malloc0 22 $rpc_py bdev_malloc_create 101 512 -b Malloc1 23 $rpc_py bdev_ocf_create Cache0 wt Malloc0 Malloc1 --cache-line-size $cache_line_size 24 25 $rpc_py bdev_ocf_get_bdevs | jq -e \ 26 '.[0] | .started and .cache.attached and .core.attached' 27 28 # Check if cache line size values are reported correctly 29 $rpc_py bdev_get_bdevs -b Cache0 | jq -e \ 30 ".[0] | .driver_specific.cache_line_size == $cache_line_size" 31 $rpc_py save_subsystem_config -n bdev | jq -e \ 32 ".config | .[] | select(.method == \"bdev_ocf_create\") | .params.cache_line_size == $cache_line_size" 33 34 $rpc_py bdev_ocf_delete Cache0 35 $rpc_py bdev_malloc_delete Malloc0 36 $rpc_py bdev_malloc_delete Malloc1 37done 38 39# Prepare OCF cache for dynamic configuration switching 40$rpc_py bdev_malloc_create 101 512 -b Malloc0 41$rpc_py bdev_malloc_create 101 512 -b Malloc1 42$rpc_py bdev_ocf_create Cache0 wt Malloc0 Malloc1 43 44$rpc_py bdev_ocf_get_bdevs | jq -e \ 45 '.[0] | .started and .cache.attached and .core.attached' 46 47# Change cache mode 48for cache_mode in "${cache_modes[@]}"; do 49 $rpc_py bdev_ocf_set_cache_mode Cache0 $cache_mode 50 51 # Check if cache mode values are reported correctly 52 $rpc_py bdev_get_bdevs -b Cache0 | jq -e \ 53 ".[0] | .driver_specific.mode == \"$cache_mode\"" 54 $rpc_py save_subsystem_config -n bdev | jq -e \ 55 ".config | .[] | select(.method == \"bdev_ocf_create\") | .params.mode == \"$cache_mode\"" 56done 57 58# Change sequential cutoff 59$rpc_py bdev_ocf_set_seqcutoff Cache0 -p always -t 64 60$rpc_py bdev_ocf_set_seqcutoff Cache0 -p never -t 16 61 62trap - SIGINT SIGTERM EXIT 63killprocess $spdk_pid 64