start_srp()
{
	local ib_dev=
	local ib_port=1
	local id_ext=
	local ioc_guid=
	local dgid=
	local pkey=
	local service_id=
	local max_sect=
	local max_cmd_per_lun=
	local io_class=
	local initiator_ext=

	for p in $(substchar "$params" "," " "); do
		arg=${p#*=}
		case "$p" in
			ib_dev=*) ib_dev=$arg ;;
			ib_port=*) ib_port=$arg ;;
			id_ext=*) id_ext=$arg ;;
			ioc_guid=*) ioc_guid=$arg ;;
			dgid=*) dgid=$arg ;;
			pkey=*) pkey=$arg ;;
			service_id=*) service_id=$arg ;;
			max_sect=*) max_sect=$arg ;;
			max_cmd_per_lun=*) max_cmd_per_lun=$arg ;;
			io_class=*) io_class=$arg ;;
			initiator_ext=*) initiator_ext=$arg ;;
			*) echo "Unknown NBD parameter '$p' for type 'srp'" ;;
		esac
	done

	#Get ib_dev from system
	if [ -z "$ib_dev" -a -d /sys/class/infiniband ]; then
		for d in /sys/class/infiniband/*; do
			ib_dev=${d#/sys/class/infiniband/}
			break
		done
	fi

	if [ -n "$ib_dev" ]; then
		local cnt
		local dev=$(NextSD)

		modprobe -q ib_srp && udevadm settle

		for cnt in 1 2 3; do
			echo id_ext=$id_ext,ioc_guid=$ioc_guid,dgid=$dgid,pkey=$pkey,service_id=$service_id\
${max_sect:+,max_sect=$max_sect}${max_cmd_per_lun:+,max_cmd_per_lun=$max_cmd_per_lun}\
${io_class:+,io_class=$io_class}${initiator_ext:+,initiator_ext=$initiator_ext} > \
				/sys/class/infiniband_srp/srp-$ib_dev-$ib_port/add_target
			[ $? -eq 0 ] && break
			sleep 1
		done

		local r=${ROOT#/dev/}
		case "$r" in
			sd_*)	ROOT=$dev${r#sd_} ;;
			"")	ROOT=$dev ;;
		esac
	else
		panic "nbd_srp: Infiniband device is not found!"
	fi
}

sleep 5
start_srp
