1#!/usr/bin/env bash 2 3set -e 4 5rootdir=$(readlink -f $(dirname $0))/.. 6 7function usage { 8 echo "Usage: [-j] $0 -a TRANSPORT_ADDR -n BDEV_NAME -l PUNITS [-u UUID] [-c CACHE]" 9 echo "UUID is required when restoring device state" 10 echo 11 echo "-j json format" 12 echo "TRANSPORT_ADDR - SSD's PCIe address" 13 echo "BDEV_NAME - name of the bdev" 14 echo "PUNITS - bdev's parallel unit range (e.g. 0-3)" 15 echo "UUID - bdev's uuid (used when in restore mode)" 16 echo "CACHE - name of the bdev to be used as write buffer cache" 17} 18 19function create_classic_config { 20 echo "[Ftl]" 21 echo " TransportID \"trtype:PCIe traddr:$1\" $2 $3 $4 $5" 22} 23 24function create_json_config() 25{ 26 echo "{" 27 echo '"subsystem": "bdev",' 28 echo '"config": [' 29 echo '{' 30 echo '"method": "construct_ftl_bdev",' 31 echo '"params": {' 32 echo "\"name\": \"$2\"," 33 echo '"trtype": "PCIe",' 34 echo "\"traddr\": \"$1\"," 35 echo "\"punits\": \"$3\"," 36 if [ -n "$5" ]; then 37 echo "\"uuid\": \"$4\"," 38 echo "\"cache\": \"$5\"" 39 else 40 echo "\"uuid\": \"$4\"" 41 fi 42 echo '}' 43 echo '}' 44 echo ']' 45 echo '}' 46} 47 48uuid=00000000-0000-0000-0000-000000000000 49 50while getopts "ja:n:l:m:u:c:" arg; do 51 case "$arg" in 52 j) json=1 ;; 53 a) addr=$OPTARG ;; 54 n) name=$OPTARG ;; 55 l) punits=$OPTARG ;; 56 u) uuid=$OPTARG ;; 57 c) cache=$OPTARG ;; 58 h) usage 59 exit 0 ;; 60 *) usage 61 exit 1 ;; 62 esac 63done 64 65if [[ -z "$addr" || -z "$name" || -z "$punits" ]]; then 66 usage 67 exit 1 68fi 69 70if [ -n "$json" ]; then 71 create_json_config $addr $name $punits $uuid $cache 72else 73 create_classic_config $addr $name $punits $uuid $cache 74fi 75