IB/srpt: Report login failures only once
authorBart Van Assche <bart.vanassche@sandisk.com>
Sat, 12 Nov 2016 00:36:06 +0000 (16:36 -0800)
committerDoug Ledford <dledford@redhat.com>
Wed, 14 Dec 2016 17:58:30 +0000 (12:58 -0500)
Report the following message only once if no ACL has been configured
yet for an initiator port:

"Rejected login because no ACL has been configured yet for initiator %s.\n"

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Cc: Nicholas Bellinger <nab@linux-iscsi.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Sagi Grimberg <sagig@grimberg.me>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/srpt/ib_srpt.c

index 0b1f69e..d21ba9d 100644 (file)
@@ -1840,7 +1840,6 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id,
        struct srpt_rdma_ch *ch, *tmp_ch;
        u32 it_iu_len;
        int i, ret = 0;
-       unsigned char *p;
 
        WARN_ON_ONCE(irqs_disabled());
 
@@ -1994,21 +1993,18 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id,
                        be64_to_cpu(*(__be64 *)(ch->i_port_id + 8)));
 
        pr_debug("registering session %s\n", ch->sess_name);
-       p = &ch->sess_name[0];
 
-try_again:
        ch->sess = target_alloc_session(&sport->port_tpg_1, 0, 0,
-                                       TARGET_PROT_NORMAL, p, ch, NULL);
+                                       TARGET_PROT_NORMAL, ch->sess_name, ch,
+                                       NULL);
+       /* Retry without leading "0x" */
+       if (IS_ERR(ch->sess))
+               ch->sess = target_alloc_session(&sport->port_tpg_1, 0, 0,
+                                               TARGET_PROT_NORMAL,
+                                               ch->sess_name + 2, ch, NULL);
        if (IS_ERR(ch->sess)) {
-               pr_info("Rejected login because no ACL has been"
-                       " configured yet for initiator %s.\n", p);
-               /*
-                * XXX: Hack to retry of ch->i_port_id without leading '0x'
-                */
-               if (p == &ch->sess_name[0]) {
-                       p += 2;
-                       goto try_again;
-               }
+               pr_info("Rejected login because no ACL has been configured yet for initiator %s.\n",
+                       ch->sess_name);
                rej->reason = cpu_to_be32((PTR_ERR(ch->sess) == -ENOMEM) ?
                                SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES :
                                SRP_LOGIN_REJ_CHANNEL_LIMIT_REACHED);