This is the last patch of the pthread patchset. The patchset doesn't break anything (if I don't miss anything, hopefully). I'll merge the patchset soon (unless someone finds a problem). = From: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> Subject: [PATCH] iscsi: disable pthread per target if iser is initialized We can't use both the pthread-per-target or the pthread-for-all model for one target. Until we convert iser to the pthread-per-target model, we need to disable the pthread-per-target for tcp when iser is initialized. Signed-off-by: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx> --- usr/iscsi/iscsi_rdma.c | 2 ++ usr/iscsi/iscsi_tcp.c | 2 +- usr/iscsi/iscsid.c | 7 +++++++ usr/iscsi/iscsid.h | 2 ++ usr/iscsi/target.c | 2 +- usr/iscsi/transport.h | 2 ++ 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/usr/iscsi/iscsi_rdma.c b/usr/iscsi/iscsi_rdma.c index 8d03b90..115d774 100644 --- a/usr/iscsi/iscsi_rdma.c +++ b/usr/iscsi/iscsi_rdma.c @@ -1194,6 +1194,8 @@ static int iscsi_rdma_init(void) INIT_LIST_HEAD(&iser_conn_list); INIT_LIST_HEAD(&temp_conn); + iscsi_rdma_enabled = 1; + return ret; } diff --git a/usr/iscsi/iscsi_tcp.c b/usr/iscsi/iscsi_tcp.c index 9563802..471eea0 100644 --- a/usr/iscsi/iscsi_tcp.c +++ b/usr/iscsi/iscsi_tcp.c @@ -280,7 +280,7 @@ static void iscsi_tcp_conn_nexus_init(struct iscsi_connection *conn) struct iscsi_tcp_connection *tcp_conn = TCP_CONN(conn); struct iscsi_target *target = conn->session->target; - if (sig_fd >= 0) { + if (iscsi_pthread_per_target()) { /* remove the conn from the main thread. */ conn->tp->ep_event_modify(conn, 0); do_tgt_event_add(target->efd, &target->events_list, diff --git a/usr/iscsi/iscsid.c b/usr/iscsi/iscsid.c index 63ac89c..b4e0969 100644 --- a/usr/iscsi/iscsid.c +++ b/usr/iscsi/iscsid.c @@ -73,6 +73,13 @@ enum { IOSTATE_TX_END, }; +int iscsi_rdma_enabled; + +int iscsi_pthread_per_target(void) +{ + return sig_fd >= 0 && !iscsi_rdma_enabled; +} + void conn_read_pdu(struct iscsi_connection *conn) { conn->rx_iostate = IOSTATE_RX_BHS; diff --git a/usr/iscsi/iscsid.h b/usr/iscsi/iscsid.h index 91e40d6..40f3ff4 100644 --- a/usr/iscsi/iscsid.h +++ b/usr/iscsi/iscsid.h @@ -316,6 +316,8 @@ extern int iscsi_target_show(int mode, int tid, uint64_t sid, uint32_t cid, int iscsi_target_update(int mode, int op, int tid, uint64_t sid, uint64_t lun, uint32_t cid, char *name); +int iscsi_pthread_per_target(void); + /* param.c */ int param_index_by_name(char *name, struct iscsi_key *keys); diff --git a/usr/iscsi/target.c b/usr/iscsi/target.c index 3b3eecc..cd45fb0 100644 --- a/usr/iscsi/target.c +++ b/usr/iscsi/target.c @@ -358,7 +358,7 @@ int iscsi_target_create(struct target *t) isns_target_register(tgt_targetname(tid)); - if (sig_fd >= 0) { + if (iscsi_pthread_per_target()) { pthread_create(&target->bsfin.thread, NULL, iscsi_thread_fn, target); pthread_mutex_init(&target->bsfin.finished_lock, NULL); diff --git a/usr/iscsi/transport.h b/usr/iscsi/transport.h index e5c380d..c94b86b 100644 --- a/usr/iscsi/transport.h +++ b/usr/iscsi/transport.h @@ -4,6 +4,8 @@ #include <sys/socket.h> #include "list.h" +extern int iscsi_rdma_enabled; + struct iscsi_connection; struct iscsi_task; -- 1.6.5 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html