Just trying to cleanup some of the repeated endpoint lookups.
---
drivers/infiniband/ulp/iser/iscsi_iser.c | 11 +----------
drivers/scsi/be2iscsi/be_iscsi.c | 8 +-------
drivers/scsi/be2iscsi/be_iscsi.h | 1 +
drivers/scsi/bnx2i/bnx2i_iscsi.c | 7 +------
drivers/scsi/cxgbi/libcxgbi.c | 8 +-------
drivers/scsi/cxgbi/libcxgbi.h | 4 ++--
drivers/scsi/iscsi_tcp.c | 5 +++--
drivers/scsi/qedi/qedi_iscsi.c | 6 +-----
drivers/scsi/qla4xxx/ql4_os.c | 8 ++------
drivers/scsi/scsi_transport_iscsi.c | 5 +++--
include/scsi/scsi_transport_iscsi.h | 3 +--
11 files changed, 17 insertions(+), 49 deletions(-)
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c
b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 41cad4bd8366..e07352cf8571 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -459,29 +459,20 @@ iscsi_iser_conn_create(struct iscsi_cls_session
*cls_session,
static int
iscsi_iser_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_eph,
int is_leading)
{
struct iscsi_conn *conn = cls_conn->dd_data;
struct iser_conn *iser_conn;
- struct iscsi_endpoint *ep;
- struct net *net;
int error;
error = iscsi_conn_bind(cls_session, cls_conn, is_leading);
if (error)
return error;
-
/* the transport ep handle comes from user space so it must be
* verified against the global ib connections list */
- net = iscsi_sess_net(cls_session);
- ep = iscsi_lookup_endpoint(net, transport_eph);
- if (!ep) {
- iser_err("can't bind eph %llx\n",
- (unsigned long long)transport_eph);
- return -EINVAL;
- }
iser_conn = ep->dd_data;
mutex_lock(&iser_conn->state_mutex);
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index 8f76d0f95ec4..4668b64f1ed1 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -170,6 +170,7 @@ beiscsi_conn_create(struct iscsi_cls_session *cls_session,
u32 cid)
*/
int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
u64 transport_fd, int is_leading)
{
struct iscsi_conn *conn = cls_conn->dd_data;
@@ -179,14 +180,7 @@ int beiscsi_conn_bind(struct iscsi_cls_session
*cls_session,
struct hwi_controller *phwi_ctrlr = phba->phwi_ctrlr;
struct hwi_wrb_context *pwrb_context;
struct beiscsi_endpoint *beiscsi_ep;
- struct iscsi_endpoint *ep;
uint16_t cri_index;
- struct net *net;
-
- net = iscsi_sess_net(cls_session);
- ep = iscsi_lookup_endpoint(net, transport_fd);
- if (!ep)
- return -EINVAL;
beiscsi_ep = ep->dd_data;
diff --git a/drivers/scsi/be2iscsi/be_iscsi.h b/drivers/scsi/be2iscsi/be_iscsi.h
index b9d459a21f25..c263e8e41d35 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.h
+++ b/drivers/scsi/be2iscsi/be_iscsi.h
@@ -52,6 +52,7 @@ struct iscsi_cls_conn *beiscsi_conn_create(struct
iscsi_cls_session
int beiscsi_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_fd, int is_leading);
int beiscsi_ep_get_param(struct iscsi_endpoint *ep, enum iscsi_param param,
diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c
index 06bd0223c009..406921a3ddbb 100644
--- a/drivers/scsi/bnx2i/bnx2i_iscsi.c
+++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c
@@ -1406,6 +1406,7 @@ bnx2i_conn_create(struct iscsi_cls_session *cls_session,
uint32_t cid)
*/
static int bnx2i_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_fd, int is_leading)
{
struct iscsi_conn *conn = cls_conn->dd_data;
@@ -1413,14 +1414,8 @@ static int bnx2i_conn_bind(struct iscsi_cls_session
*cls_session,
struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
struct bnx2i_hba *hba = iscsi_host_priv(shost);
struct bnx2i_endpoint *bnx2i_ep;
- struct iscsi_endpoint *ep;
- struct net *net;
int ret_code;
- net = iscsi_sess_net(cls_session);
- ep = iscsi_lookup_endpoint(net, transport_fd);
- if (!ep)
- return -EINVAL;
/*
* Forcefully terminate all in progress connection recovery at the
* earliest, either in bind(), send_pdu(LOGIN), or conn_start()
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index 74cb2c7cce32..3d495315859d 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -2347,23 +2347,17 @@ EXPORT_SYMBOL_GPL(cxgbi_create_conn);
int cxgbi_bind_conn(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
u64 transport_eph, int is_leading)
{
struct iscsi_conn *conn = cls_conn->dd_data;
struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
struct cxgbi_conn *cconn = tcp_conn->dd_data;
struct cxgbi_ppm *ppm;
- struct iscsi_endpoint *ep;
struct cxgbi_endpoint *cep;
struct cxgbi_sock *csk;
- struct net *net;
int err;
- net = iscsi_sess_net(cls_session);
- ep = iscsi_lookup_endpoint(net, transport_eph);
- if (!ep)
- return -EINVAL;
-
/* setup ddp pagesize */
cep = ep->dd_data;
csk = cep->csk;
diff --git a/drivers/scsi/cxgbi/libcxgbi.h b/drivers/scsi/cxgbi/libcxgbi.h
index 31a5816c2e8d..6ece7152b0d3 100644
--- a/drivers/scsi/cxgbi/libcxgbi.h
+++ b/drivers/scsi/cxgbi/libcxgbi.h
@@ -589,8 +589,8 @@ int cxgbi_set_conn_param(struct iscsi_cls_conn *,
enum iscsi_param, char *, int);
int cxgbi_get_ep_param(struct iscsi_endpoint *ep, enum iscsi_param, char *);
struct iscsi_cls_conn *cxgbi_create_conn(struct iscsi_cls_session *, u32);
-int cxgbi_bind_conn(struct iscsi_cls_session *,
- struct iscsi_cls_conn *, u64, int);
+int cxgbi_bind_conn(struct iscsi_cls_session *, struct iscsi_cls_conn *,
+ struct iscsi_endpoint *, u64, int);
void cxgbi_destroy_session(struct iscsi_cls_session *);
struct iscsi_cls_session *cxgbi_create_session(struct iscsi_endpoint *,
u16, u16, u32);
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 19c1036a0ad2..00c441824d57 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -651,8 +651,9 @@ static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn
*cls_conn, int flag)
static int
iscsi_sw_tcp_conn_bind(struct iscsi_cls_session *cls_session,
- struct iscsi_cls_conn *cls_conn, uint64_t transport_eph,
- int is_leading)
+ struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
+ uint64_t transport_eph, int is_leading)
{
struct iscsi_session *session = cls_session->dd_data;
struct iscsi_conn *conn = cls_conn->dd_data;
diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c
index 37da9a8b43b1..2a49b02147fe 100644
--- a/drivers/scsi/qedi/qedi_iscsi.c
+++ b/drivers/scsi/qedi/qedi_iscsi.c
@@ -373,6 +373,7 @@ struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx
*qedi, u32 iscsi_cid)
static int qedi_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
u64 transport_fd, int is_leading)
{
struct iscsi_conn *conn = cls_conn->dd_data;
@@ -380,11 +381,6 @@ static int qedi_conn_bind(struct iscsi_cls_session
*cls_session,
struct Scsi_Host *shost = iscsi_session_to_shost(cls_session);
struct qedi_ctx *qedi = iscsi_host_priv(shost);
struct qedi_endpoint *qedi_ep;
- struct iscsi_endpoint *ep;
-
- ep = iscsi_lookup_endpoint(transport_fd);
- if (!ep)
- return -EINVAL;
qedi_ep = ep->dd_data;
if ((qedi_ep->state == EP_STATE_TCP_FIN_RCVD) ||
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index b881634a24a2..79021797a508 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -130,6 +130,7 @@ static struct iscsi_cls_conn *
qla4xxx_conn_create(struct iscsi_cls_session *cls_sess, uint32_t conn_idx);
static int qla4xxx_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_fd, int is_leading);
static void qla4xxx_conn_destroy(struct iscsi_cls_conn *conn);
static struct iscsi_cls_session *
@@ -3170,15 +3171,14 @@ qla4xxx_conn_create(struct iscsi_cls_session *cls_sess,
uint32_t conn_idx)
static int qla4xxx_conn_bind(struct iscsi_cls_session *cls_session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_fd, int is_leading)
{
struct iscsi_conn *conn;
struct qla_conn *qla_conn;
- struct iscsi_endpoint *ep;
struct ddb_entry *ddb_entry;
struct scsi_qla_host *ha;
struct iscsi_session *sess;
- struct net *net;
sess = cls_session->dd_data;
ddb_entry = sess->dd_data;
@@ -3187,10 +3187,6 @@ static int qla4xxx_conn_bind(struct iscsi_cls_session
*cls_session,
DEBUG2(ql4_printk(KERN_INFO, ha, "%s: sid = %d, cid = %d\n", __func__,
cls_session->sid, cls_conn->cid));
- net = iscsi_sess_net(cls_session);
- ep = iscsi_lookup_endpoint(net, transport_fd);
- if (!ep)
- return -EINVAL;
if (iscsi_conn_bind(cls_session, cls_conn, is_leading))
return -EINVAL;
conn = cls_conn->dd_data;
diff --git a/drivers/scsi/scsi_transport_iscsi.c
b/drivers/scsi/scsi_transport_iscsi.c
index b931e21314ec..426b65bb1017 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -1670,7 +1670,6 @@ struct net *iscsi_sess_net(struct iscsi_cls_session
*cls_session)
return iscsi_host_net(ihost);
}
-EXPORT_SYMBOL_GPL(iscsi_sess_net);
static const void *iscsi_sess_namespace(struct device *dev)
{
@@ -3721,6 +3720,8 @@ iscsi_if_recv_msg(struct net *net, struct sk_buff *skb,
case ISCSI_UEVENT_BIND_CONN:
session = iscsi_session_lookup(net, ev->u.b_conn.sid);
conn = iscsi_conn_lookup(net, ev->u.b_conn.sid,
ev->u.b_conn.cid);
+ ep = iscsi_lookup_endpoint(net, ev->u.b_conn.transport_eph);
+ /* FIXME, verify this is not NULL ... but no ep for iscsi_tcp
... */
if (conn && conn->ep)
iscsi_if_ep_disconnect(net, transport, conn->ep->id);
@@ -3730,7 +3731,7 @@ iscsi_if_recv_msg(struct net *net, struct sk_buff *skb,
break;
}
- ev->r.retcode = transport->bind_conn(session, conn,
+ ev->r.retcode = transport->bind_conn(session, conn, ep,
ev->u.b_conn.transport_eph,
ev->u.b_conn.is_leading);
if (ev->r.retcode || !transport->ep_connect)
diff --git a/include/scsi/scsi_transport_iscsi.h
b/include/scsi/scsi_transport_iscsi.h
index 30ea22fc651c..16d3eb288221 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -97,6 +97,7 @@ struct iscsi_transport {
uint32_t cid);
int (*bind_conn) (struct iscsi_cls_session *session,
struct iscsi_cls_conn *cls_conn,
+ struct iscsi_endpoint *ep,
uint64_t transport_eph, int is_leading);
int (*start_conn) (struct iscsi_cls_conn *conn);
void (*stop_conn) (struct iscsi_cls_conn *conn, int flag);
@@ -268,8 +269,6 @@ struct iscsi_cls_session {
#define iscsi_session_to_shost(_session) \
dev_to_shost(_session->dev.parent)
-extern struct net *iscsi_sess_net(struct iscsi_cls_session *);
-
#define starget_to_session(_stgt) \
iscsi_dev_to_session(_stgt->dev.parent)
--
2.9.4
--
You received this message because you are subscribed to the Google Groups
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.