summaryrefslogtreecommitdiffstats
path: root/src/spdk/test/ocf/management/persistent-metadata.sh
blob: cbfcab3418321f17b76d275e9e6f6940fc6db847 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/env bash

curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}"))
rootdir=$(readlink -f $curdir/../../..)
source $rootdir/test/ocf/common.sh

source $rootdir/scripts/common.sh
source $rootdir/test/common/autotest_common.sh

rpc_py=$rootdir/scripts/rpc.py

$rootdir/scripts/setup.sh

mapfile -t config < <("$rootdir/scripts/gen_nvme.sh" --json)
# Drop anything from last closing ] so we can inject our own config pieces ...
config=("${config[@]::${#config[@]}-2}")
# ... and now convert entire array to a single string item
config=("${config[*]}")

config+=(
	"$(
		cat <<- JSON
			{
			  "method": "bdev_split_create",
			  "params": {
			    "base_bdev": "Nvme0n1",
			    "split_count": 7,
			    "split_size_mb": 128
			  }
			}
		JSON
	)"
)

# First ']}' closes our config and bdev subsystem blocks
jq . <<- CONFIG > "$curdir/config"
	{"subsystems":[
	$(
	IFS=","
	printf '%s\n' "${config[*]}"
	)
	]}]}
CONFIG

# Clear nvme device which we will use in test
clear_nvme

"$SPDK_BIN_DIR/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!

waitforlisten $spdk_pid

# Create ocf on persistent storage

$rpc_py bdev_ocf_create ocfWT wt Nvme0n1p0 Nvme0n1p1
$rpc_py bdev_ocf_create ocfPT pt Nvme0n1p2 Nvme0n1p3
$rpc_py bdev_ocf_create ocfWB0 wb Nvme0n1p4 Nvme0n1p5
$rpc_py bdev_ocf_create ocfWB1 wb Nvme0n1p4 Nvme0n1p6

# Sorting bdevs because we dont guarantee that they are going to be
# in the same order after shutdown
($rpc_py bdev_ocf_get_bdevs | jq '(.. | arrays) |= sort') > ./ocf_bdevs

trap - SIGINT SIGTERM EXIT

killprocess $spdk_pid

# Check for ocf persistency after restart
"$SPDK_BIN_DIR/iscsi_tgt" --json "$curdir/config" &
spdk_pid=$!

trap 'killprocess $spdk_pid; rm -f $curdir/config ocf_bdevs ocf_bdevs_verify; exit 1' SIGINT SIGTERM EXIT

waitforlisten $spdk_pid
sleep 5

# OCF should be loaded now as well

($rpc_py bdev_ocf_get_bdevs | jq '(.. | arrays) |= sort') > ./ocf_bdevs_verify

diff ocf_bdevs ocf_bdevs_verify

trap - SIGINT SIGTERM EXIT

killprocess $spdk_pid
rm -f $curdir/config ocf_bdevs ocf_bdevs_verify

clear_nvme $bdf