xref: /spdk/scripts/gen_ftl.sh (revision 407e88fd2ab020d753e33014cf759353a9901b51)
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