15bdaec63SRafal Stefanowski#!/usr/bin/env bash 2*eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3*eb53c232Spaul luse# Copyright (C) 2021 Intel Corporation 4*eb53c232Spaul luse# All rights reserved. 5*eb53c232Spaul luse# 65bdaec63SRafal Stefanowskicurdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}")) 75bdaec63SRafal Stefanowskirootdir=$(readlink -f $curdir/../../..) 85bdaec63SRafal Stefanowskisource $rootdir/test/common/autotest_common.sh 95bdaec63SRafal Stefanowski 105bdaec63SRafal Stefanowskirpc_py=$rootdir/scripts/rpc.py 118fcb8b96SRafal Stefanowskicache_line_sizes=(4 8 16 32 64) 125bdaec63SRafal Stefanowskicache_modes=(wt wb pt wa wi wo) 135bdaec63SRafal Stefanowski 145bdaec63SRafal Stefanowski$SPDK_BIN_DIR/iscsi_tgt & 155bdaec63SRafal Stefanowskispdk_pid=$! 165bdaec63SRafal Stefanowski 175bdaec63SRafal Stefanowskiwaitforlisten $spdk_pid 185bdaec63SRafal Stefanowski 198fcb8b96SRafal Stefanowski# Create OCF cache with different cache line sizes 208fcb8b96SRafal Stefanowskifor cache_line_size in "${cache_line_sizes[@]}"; do 215bdaec63SRafal Stefanowski $rpc_py bdev_malloc_create 101 512 -b Malloc0 225bdaec63SRafal Stefanowski $rpc_py bdev_malloc_create 101 512 -b Malloc1 238fcb8b96SRafal Stefanowski $rpc_py bdev_ocf_create Cache0 wt Malloc0 Malloc1 --cache-line-size $cache_line_size 248fcb8b96SRafal Stefanowski 258fcb8b96SRafal Stefanowski $rpc_py bdev_ocf_get_bdevs | jq -e \ 268fcb8b96SRafal Stefanowski '.[0] | .started and .cache.attached and .core.attached' 278fcb8b96SRafal Stefanowski 288fcb8b96SRafal Stefanowski # Check if cache line size values are reported correctly 298fcb8b96SRafal Stefanowski $rpc_py bdev_get_bdevs -b Cache0 | jq -e \ 308fcb8b96SRafal Stefanowski ".[0] | .driver_specific.cache_line_size == $cache_line_size" 318fcb8b96SRafal Stefanowski $rpc_py save_subsystem_config -n bdev | jq -e \ 328fcb8b96SRafal Stefanowski ".config | .[] | select(.method == \"bdev_ocf_create\") | .params.cache_line_size == $cache_line_size" 338fcb8b96SRafal Stefanowski 348fcb8b96SRafal Stefanowski $rpc_py bdev_ocf_delete Cache0 358fcb8b96SRafal Stefanowski $rpc_py bdev_malloc_delete Malloc0 368fcb8b96SRafal Stefanowski $rpc_py bdev_malloc_delete Malloc1 378fcb8b96SRafal Stefanowskidone 388fcb8b96SRafal Stefanowski 398fcb8b96SRafal Stefanowski# Prepare OCF cache for dynamic configuration switching 408fcb8b96SRafal Stefanowski$rpc_py bdev_malloc_create 101 512 -b Malloc0 418fcb8b96SRafal Stefanowski$rpc_py bdev_malloc_create 101 512 -b Malloc1 428fcb8b96SRafal Stefanowski$rpc_py bdev_ocf_create Cache0 wt Malloc0 Malloc1 435bdaec63SRafal Stefanowski 445bdaec63SRafal Stefanowski$rpc_py bdev_ocf_get_bdevs | jq -e \ 455bdaec63SRafal Stefanowski '.[0] | .started and .cache.attached and .core.attached' 465bdaec63SRafal Stefanowski 475bdaec63SRafal Stefanowski# Change cache mode 485bdaec63SRafal Stefanowskifor cache_mode in "${cache_modes[@]}"; do 498fcb8b96SRafal Stefanowski $rpc_py bdev_ocf_set_cache_mode Cache0 $cache_mode 508fcb8b96SRafal Stefanowski 518fcb8b96SRafal Stefanowski # Check if cache mode values are reported correctly 528fcb8b96SRafal Stefanowski $rpc_py bdev_get_bdevs -b Cache0 | jq -e \ 538fcb8b96SRafal Stefanowski ".[0] | .driver_specific.mode == \"$cache_mode\"" 548fcb8b96SRafal Stefanowski $rpc_py save_subsystem_config -n bdev | jq -e \ 558fcb8b96SRafal Stefanowski ".config | .[] | select(.method == \"bdev_ocf_create\") | .params.mode == \"$cache_mode\"" 565bdaec63SRafal Stefanowskidone 575bdaec63SRafal Stefanowski 58494b1ba8SRafal Stefanowski# Change sequential cutoff 59494b1ba8SRafal Stefanowski$rpc_py bdev_ocf_set_seqcutoff Cache0 -p always -t 64 60494b1ba8SRafal Stefanowski$rpc_py bdev_ocf_set_seqcutoff Cache0 -p never -t 16 61494b1ba8SRafal Stefanowski 625bdaec63SRafal Stefanowskitrap - SIGINT SIGTERM EXIT 635bdaec63SRafal Stefanowskikillprocess $spdk_pid 64