+gen_malloc_ocf_json () {
+ local size=300 # MB
+ local block_size=512
+ local config
-[Malloc]
- NumberOfLuns 3
- LunSizeInMB 300
- BlockSize 512
+ local malloc malloc_devs=3
+ for (( malloc = 0; malloc < malloc_devs; malloc++ )); do
+ config+=(
+ "$(
+ cat <<-JSON
+ {
+ "method": "bdev_malloc_create",
+ "params": {
+ "name": "Malloc$malloc",
+ "num_blocks": $(( (size << 20) / block_size )),
+ "block_size": 512
+ }
+ }
+ JSON
+ )"
+ )
+ done
-[OCF]
- OCF MalCache1 wt Malloc0 Malloc1
- OCF MalCache2 pt Malloc0 Malloc2
+ local ocfs ocf ocf_mode ocf_cache ocf_core
+ ocfs=(1 2)
+ ocf_mode[1]=wt ocf_cache[1]=Malloc0 ocf_core[1]=Malloc1
+ ocf_mode[2]=pt ocf_cache[2]=Malloc0 ocf_core[2]=Malloc2
+
+ for ocf in "${ocfs[@]}"; do
+ config+=(
+ "$(
+ cat <<-JSON
+ {
+ "method": "bdev_ocf_create",
+ "params": {
+ "name": "MalCache$ocf",
+ "mode": "${ocf_mode[ocf]}",
+ "cache_bdev_name": "${ocf_cache[ocf]}",
+ "core_bdev_name": "${ocf_core[ocf]}"
+ }
+ }
+ JSON
+ )"
+ )
+ done
+
+ jq . <<-JSON
+ {
+ "subsystems": [
+ {
+ "subsystem": "bdev",
+ "config": [
+ $(IFS=","; printf '%s\n' "${config[*]}")
+ ]
+ }
+ ]
+ }
+ JSON
+}