2018-10-29 14:40:34 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
rootdir=$(readlink -f $(dirname $0))/..
|
|
|
|
|
|
|
|
function usage {
|
2019-02-19 10:06:12 +00:00
|
|
|
echo "Usage: [-j] $0 -a TRANSPORT_ADDR -n BDEV_NAME -l PUNITS [-u UUID] [-c CACHE]"
|
2018-10-29 14:40:34 +00:00
|
|
|
echo "UUID is required when restoring device state"
|
2019-01-29 09:54:46 +00:00
|
|
|
echo
|
2019-02-19 10:06:12 +00:00
|
|
|
echo "-j json format"
|
2019-01-29 09:54:46 +00:00
|
|
|
echo "TRANSPORT_ADDR - SSD's PCIe address"
|
|
|
|
echo "BDEV_NAME - name of the bdev"
|
|
|
|
echo "PUNITS - bdev's parallel unit range (e.g. 0-3)"
|
|
|
|
echo "UUID - bdev's uuid (used when in restore mode)"
|
2019-03-20 08:36:02 +00:00
|
|
|
echo "CACHE - name of the bdev to be used as write buffer cache"
|
2018-10-29 14:40:34 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:06:12 +00:00
|
|
|
function create_classic_config {
|
2019-01-29 09:54:46 +00:00
|
|
|
echo "[Ftl]"
|
2019-03-20 08:36:02 +00:00
|
|
|
echo " TransportID \"trtype:PCIe traddr:$1\" $2 $3 $4 $5"
|
2018-10-29 14:40:34 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 10:06:12 +00:00
|
|
|
function create_json_config()
|
|
|
|
{
|
|
|
|
echo "{"
|
|
|
|
echo '"subsystem": "bdev",'
|
|
|
|
echo '"config": ['
|
|
|
|
echo '{'
|
2019-08-21 09:03:04 +00:00
|
|
|
echo '"method": "bdev_ftl_create",'
|
2019-02-19 10:06:12 +00:00
|
|
|
echo '"params": {'
|
|
|
|
echo "\"name\": \"$2\","
|
|
|
|
echo '"trtype": "PCIe",'
|
|
|
|
echo "\"traddr\": \"$1\","
|
|
|
|
echo "\"punits\": \"$3\","
|
|
|
|
if [ -n "$5" ]; then
|
|
|
|
echo "\"uuid\": \"$4\","
|
|
|
|
echo "\"cache\": \"$5\""
|
|
|
|
else
|
|
|
|
echo "\"uuid\": \"$4\""
|
|
|
|
fi
|
|
|
|
echo '}'
|
|
|
|
echo '}'
|
|
|
|
echo ']'
|
|
|
|
echo '}'
|
|
|
|
}
|
|
|
|
|
2019-03-22 08:21:30 +00:00
|
|
|
uuid=00000000-0000-0000-0000-000000000000
|
|
|
|
|
2019-02-19 10:06:12 +00:00
|
|
|
while getopts "ja:n:l:m:u:c:" arg; do
|
2018-10-29 14:40:34 +00:00
|
|
|
case "$arg" in
|
2019-02-19 10:06:12 +00:00
|
|
|
j) json=1 ;;
|
2018-10-29 14:40:34 +00:00
|
|
|
a) addr=$OPTARG ;;
|
|
|
|
n) name=$OPTARG ;;
|
|
|
|
l) punits=$OPTARG ;;
|
|
|
|
u) uuid=$OPTARG ;;
|
2019-03-20 08:36:02 +00:00
|
|
|
c) cache=$OPTARG ;;
|
2018-10-29 14:40:34 +00:00
|
|
|
h) usage
|
|
|
|
exit 0 ;;
|
|
|
|
*) usage
|
|
|
|
exit 1 ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if [[ -z "$addr" || -z "$name" || -z "$punits" ]]; then
|
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2019-02-19 10:06:12 +00:00
|
|
|
if [ -n "$json" ]; then
|
|
|
|
create_json_config $addr $name $punits $uuid $cache
|
|
|
|
else
|
|
|
|
create_classic_config $addr $name $punits $uuid $cache
|
|
|
|
fi
|