iscsi-target: move iscsit_thread_check_cpumask()
Move iscsit_thread_check_cpumask() to header file so that ISCSI_HW_OFFLOAD and other transport drivers can call this function to ensure both tx and rx thread runs on same cpu. Signed-off-by: Varun Prakash <varun@chelsio.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
committed by
Nicholas Bellinger
parent
8567270d8d
commit
c0b7373be8
@@ -3580,32 +3580,6 @@ void iscsit_thread_get_cpumask(struct iscsi_conn *conn)
|
|||||||
cpumask_setall(conn->conn_cpumask);
|
cpumask_setall(conn->conn_cpumask);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void iscsit_thread_check_cpumask(
|
|
||||||
struct iscsi_conn *conn,
|
|
||||||
struct task_struct *p,
|
|
||||||
int mode)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* mode == 1 signals iscsi_target_tx_thread() usage.
|
|
||||||
* mode == 0 signals iscsi_target_rx_thread() usage.
|
|
||||||
*/
|
|
||||||
if (mode == 1) {
|
|
||||||
if (!conn->conn_tx_reset_cpumask)
|
|
||||||
return;
|
|
||||||
conn->conn_tx_reset_cpumask = 0;
|
|
||||||
} else {
|
|
||||||
if (!conn->conn_rx_reset_cpumask)
|
|
||||||
return;
|
|
||||||
conn->conn_rx_reset_cpumask = 0;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Update the CPU mask for this single kthread so that
|
|
||||||
* both TX and RX kthreads are scheduled to run on the
|
|
||||||
* same CPU.
|
|
||||||
*/
|
|
||||||
set_cpus_allowed_ptr(p, conn->conn_cpumask);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
iscsit_immediate_queue(struct iscsi_conn *conn, struct iscsi_cmd *cmd, int state)
|
iscsit_immediate_queue(struct iscsi_conn *conn, struct iscsi_cmd *cmd, int state)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -890,4 +890,30 @@ static inline u32 session_get_next_ttt(struct iscsi_session *session)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t);
|
extern struct iscsi_cmd *iscsit_find_cmd_from_itt(struct iscsi_conn *, itt_t);
|
||||||
|
|
||||||
|
static inline void iscsit_thread_check_cpumask(
|
||||||
|
struct iscsi_conn *conn,
|
||||||
|
struct task_struct *p,
|
||||||
|
int mode)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* mode == 1 signals iscsi_target_tx_thread() usage.
|
||||||
|
* mode == 0 signals iscsi_target_rx_thread() usage.
|
||||||
|
*/
|
||||||
|
if (mode == 1) {
|
||||||
|
if (!conn->conn_tx_reset_cpumask)
|
||||||
|
return;
|
||||||
|
conn->conn_tx_reset_cpumask = 0;
|
||||||
|
} else {
|
||||||
|
if (!conn->conn_rx_reset_cpumask)
|
||||||
|
return;
|
||||||
|
conn->conn_rx_reset_cpumask = 0;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Update the CPU mask for this single kthread so that
|
||||||
|
* both TX and RX kthreads are scheduled to run on the
|
||||||
|
* same CPU.
|
||||||
|
*/
|
||||||
|
set_cpus_allowed_ptr(p, conn->conn_cpumask);
|
||||||
|
}
|
||||||
#endif /* ISCSI_TARGET_CORE_H */
|
#endif /* ISCSI_TARGET_CORE_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user