linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 --]

      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).