xref: /spdk/test/ocf/integrity/flush.sh (revision dfb2950fd5b13ba0a2a2b533e3e534202a89de74)
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