From: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: james harvey
<jamespharvey20-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: Obtaining initiator hex address for srpt acls, not /sys/class/infiniband/mlx4_0/ports/1/gids/0
Date: Tue, 19 Jan 2016 14:46:46 -0500 [thread overview]
Message-ID: <569E92A6.7070704@redhat.com> (raw)
In-Reply-To: <CA+X5Wn7zEdXy4-3rhTqU+NJzD1LRHA+w651yx4tsEvToiHu+Sw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 6287 bytes --]
On 01/06/2016 04:05 AM, james harvey wrote:
> After more digging, I found out this out of no where hex string is
> referred to as "initiator_ext", and is being sent since srp_daemon.sh
> give srp_daemon the "-n" flag. Since there's no user-set
> initiator_ext, srp_daemon grabs it from somewhere.
>
> If I want to continue using the "-n" flag, how can I find out what my
> initiator is going to send as initiator_ext, so the target can be set
> up to work with it?
>
> Or, can I set my own initiator_ext, it looks by appending it to
> /etc/srp_daemon.conf ?
>
> Why doesn't ibsrpdm give the initiator_ext value?
As I recall, the value you will get here varies based upon the
hardware/driver in use. On some cards, you get the local GID reversed,
on other cards you get something else. What I ended up doing when
setting up the ACLs for srp was to do this:
# ssh to srp target to add an ACL for this client
# targetcli uses srp names of the format:
# "ib.<32 hex chars>"
# for both target wwn and client wwn.
__setup_srp_client_path() {
local server="$1"
local fabric="$2"
local path_num="$3"
local dgid=${SRP_DGID[$server-$fabric]}
local var_file=/etc/rdma/srp_client_variables
local tmp_conf=/etc/rdma/srp_client_tmp_conf
local conf_file=/etc/srp_daemon.conf
echo -e "a pkey=ffff,dgid=$dgid\nd\n" > $tmp_conf
pushd /dev/infiniband
for umad in umad*; do
srp_daemon -n -c -o -f $tmp_conf -d ./$umad | sed -e
'y/,/\n/' > $var_file
[ -s $var_file ] && break
done
local ibdev=`cat /sys/class/infiniband_mad/$umad/ibdev`
local ibport=`cat /sys/class/infiniband_mad/$umad/port`
rm $tmp_conf
popd
[ ! -s $var_file ] && return
port_guid=`ibstat $ibdev $ibport | grep "Port GUID" | cut -f 2
-d 'x'`
init_ext=`grep initiator_ext $var_file | cut -f 2 -d '='`
sgid="${init_ext}${port_guid}"
# assuming targetcli global pref auto_add_mapped_luns=true (the
default)
# just creating the acl should map existing target luns to this
client.
# We have auto mapped luns turned off, so we also map our
specific lun
# to our ACL
ssh $server "targetcli /srpt/ib.$dgid/acls create ib.$sgid;
targetcli /srpt/ib.$dgid/acls/ib.$sgid create 0
/backstores/block/srp-$host_part; targetcli saveconfig"
sed -e "/.*dgid=$dgid.*/ d" -i $conf_file
echo "a pkey=ffff,dgid=$dgid,queue_size=128,max_cmd_per_lun=128"
>> $conf_file
rm $var_file
if [ $path_num -eq 0 ]; then
mkdir -p /srv/$server/SRP
fi
}
# Call this to set up possible SRP device definitions.
# @1 - Server name to create logins too
# @2+ - List of fabrics to access devices via, or empty for all possible
#
# If there is more than one path to the device, we automatically use
# lvm multipath to access the device.
#
# Once paths/logins are established, create a mount point on the system,
# add the device to the fstab, create an fs on the device, but don't
# mount the device
Setup_Srp_Client_Mounts() {
if [ -z "$1" ]; then
echo "Usage: "
echo -e "\tSetup_Srp_Client_Mounts <server> [fabrics ...]"
echo -e "\t\tserver - Required, we will ssh to this
server to"
echo -e "\t\t add ourselves to the ACLs and map our LUN"
echo -e "\t\tfabric - One or more fabrics you wish to
enable"
echo -e "\t\t access to the LUN via. The fabrics will be"
echo -e "\t\t checked to make sure that both the server
and"
echo -e "\t\t this host have connections to the
fabrics. If"
echo -e "\t\t empty, then the union of all fabrics for the"
echo -e "\t\t server and this host will be used. If there"
echo -e "\t\t is more than one fabric configured,
multipath"
echo -e "\t\t will be enabled by default."
return
fi
local server="$1"
local paths=""
local num_paths=0
shift 1
__if_x_in_y "$server" "$SRP_SERVERS" || return
# Turn off the disallow all option in the config file while we do
# our work, we restore this at the end
Enable_Service srpd
sed -e '/^d$/ d' -i /etc/srp_daemon.conf
[ -n "$1" ] && paths="$*" || paths="${SRP_FABRICS[$server]}"
for fabric in $paths; do
__if_x_in_y "$fabric" "$HOST_FABRICS" || continue
__if_x_in_y "$fabric" "${SRP_FABRICS[$server]}" || continue
__setup_srp_client_path "$server" "$fabric" $num_paths
let num_paths++
done
if [ $num_paths -gt 1 ]; then
if [ ! -f /etc/multipath.conf ]; then
cp
/usr/share/doc/device-mapper-multipath-*/multipath.conf /etc
fi
Enable_Service multipathd
Start_Service multipathd
fi
echo "d" >> /etc/srp_daemon.conf
Start_Service srpd
echo "Your SRP client mounts from $server have been added to the"
echo "system. If you enabled more than one path to the device,"
echo "please find your new multipath device, otherwise find the
newly"
echo "added SCSI device, then perform the following actions:"
echo " 1) Make sure no partitions got automounted due to existing"
echo " data once you added the device"
echo " 2) Create or select a partition to use"
echo " 3) Create a filesystem on the partition (if needed)"
echo " 4) Run blkid on the partition to get the fs UUID"
echo " 5) Add the line UUID=\"uuid\" /srv/<server>/SRP ... to the"
echo " fstab so the device is automounted on reboots"
echo " eg:"
echo " UUID=\"c37e3e64-25bb-44e5-96d2-937800e0e3e3\"
/srv/rdma-storage-01/SRP xfs defaults,_netdev 1 2"
}
--
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
GPG KeyID: 0E572FDD
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]
prev parent reply other threads:[~2016-01-19 19:46 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-06 8:02 Obtaining initiator hex address for srpt acls, not /sys/class/infiniband/mlx4_0/ports/1/gids/0 james harvey
[not found] ` <CA+X5Wn5xE7Xig42HtJ+dCyxFWVhqfbEisaD-Md6FCmYJG5+wuQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-06 8:07 ` james harvey
[not found] ` <CA+X5Wn70Sq-CipTLJJVPmrhMTS-t65v0Q4ejS3ppWZW4nkEwQw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-06 9:05 ` james harvey
[not found] ` <CA+X5Wn7zEdXy4-3rhTqU+NJzD1LRHA+w651yx4tsEvToiHu+Sw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-19 19:46 ` Doug Ledford [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=569E92A6.7070704@redhat.com \
--to=dledford-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=jamespharvey20-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).