iscsi-target: Convert iscsi_thread_set usage to kthread.h
This patch converts iscsi-target code to use modern kthread.h API callers for creating RX/TX threads for each new iscsi_conn descriptor, and releasing associated RX/TX threads during connection shutdown. This is done using iscsit_start_kthreads() -> kthread_run() to start new kthreads from within iscsi_post_login_handler(), and invoking kthread_stop() from existing iscsit_close_connection() code. Also, convert iscsit_logout_post_handler_closesession() code to use cmpxchg when determing when iscsit_cause_connection_reinstatement() needs to sleep waiting for completion. Reported-by: Sagi Grimberg <sagig@mellanox.com> Tested-by: Sagi Grimberg <sagig@mellanox.com> Cc: Slava Shwartsman <valyushash@gmail.com> Cc: <stable@vger.kernel.org> # v3.10+ Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
@@ -602,6 +602,11 @@ struct iscsi_conn {
|
||||
struct iscsi_session *sess;
|
||||
/* Pointer to thread_set in use for this conn's threads */
|
||||
struct iscsi_thread_set *thread_set;
|
||||
int bitmap_id;
|
||||
int rx_thread_active;
|
||||
struct task_struct *rx_thread;
|
||||
int tx_thread_active;
|
||||
struct task_struct *tx_thread;
|
||||
/* list_head for session connection list */
|
||||
struct list_head conn_list;
|
||||
} ____cacheline_aligned;
|
||||
@@ -871,10 +876,12 @@ struct iscsit_global {
|
||||
/* Unique identifier used for the authentication daemon */
|
||||
u32 auth_id;
|
||||
u32 inactive_ts;
|
||||
#define ISCSIT_BITMAP_BITS 262144
|
||||
/* Thread Set bitmap count */
|
||||
int ts_bitmap_count;
|
||||
/* Thread Set bitmap pointer */
|
||||
unsigned long *ts_bitmap;
|
||||
spinlock_t ts_bitmap_lock;
|
||||
/* Used for iSCSI discovery session authentication */
|
||||
struct iscsi_node_acl discovery_acl;
|
||||
struct iscsi_portal_group *discovery_tpg;
|
||||
|
Reference in New Issue
Block a user