gen_malloc_ocf_json () { local size=300 # MB local block_size=512 local config 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 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 }