xref: /spdk/test/ocf/management/configuration-change.sh (revision c680e3a05b1a903c18bf3f75b732765607126f45)
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