diff options
Diffstat (limited to 'src/spdk/test/ftl/common.sh')
-rw-r--r-- | src/spdk/test/ftl/common.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/spdk/test/ftl/common.sh b/src/spdk/test/ftl/common.sh new file mode 100644 index 000000000..f4620ac3d --- /dev/null +++ b/src/spdk/test/ftl/common.sh @@ -0,0 +1,68 @@ +# Common utility functions to be sourced by the libftl test scripts + +function get_chunk_size() { + $SPDK_EXAMPLE_DIR/identify -r "trtype:PCIe traddr:$1" \ + | grep 'Logical blks per chunk' | sed 's/[^0-9]//g' +} + +function get_num_group() { + $SPDK_EXAMPLE_DIR/identify -r "trtype:PCIe traddr:$1" \ + | grep 'Groups' | sed 's/[^0-9]//g' +} + +function get_num_pu() { + $SPDK_EXAMPLE_DIR/identify -r "trtype:PCIe traddr:$1" \ + | grep 'PUs' | sed 's/[^0-9]//g' +} + +function has_separate_md() { + local md_type + md_type=$($SPDK_EXAMPLE_DIR/identify -r "trtype:PCIe traddr:$1" \ + | grep 'Metadata Transferred' | cut -d: -f2) + if [[ "$md_type" =~ Separate ]]; then + return 0 + else + return 1 + fi +} + +function create_nv_cache_bdev() { + local name=$1 + local ocssd_bdf=$2 + local cache_bdf=$3 + local num_punits=$4 + + local bytes_to_mb=$((1024 * 1024)) + local chunk_size + chunk_size=$(get_chunk_size $ocssd_bdf) + + # We need at least 2 bands worth of data + 1 block + local size=$((2 * 4096 * chunk_size * num_punits + 1)) + # Round the size up to the nearest megabyte + local size=$(((size + bytes_to_mb) / bytes_to_mb)) + + # Create NVMe bdev on specified device and split it so that it has the desired size + local nvc_bdev + nvc_bdev=$($rootdir/scripts/rpc.py bdev_nvme_attach_controller -b $name -t PCIe -a $cache_bdf) + $rootdir/scripts/rpc.py bdev_split_create $nvc_bdev -s $size 1 +} + +function gen_ftl_nvme_conf() { + jq . <<- JSON + { + "subsystems": [ + { + "subsystem": "bdev", + "config": [ + { + "params": { + "nvme_adminq_poll_period_us": 100 + }, + "method": "bdev_nvme_set_options" + } + ] + } + ] + } + JSON +} |