void iscsi_activate_thread_set(struct iscsi_conn *conn, struct iscsi_thread_set *ts) { iscsi_add_ts_to_active_list(ts); spin_lock_bh(&ts->ts_state_lock); conn->thread_set = ts; ts->conn = conn; spin_unlock_bh(&ts->ts_state_lock); /* * Start up the RX thread and wait on rx_post_start_comp. The RX * Thread will then do the same for the TX Thread in * iscsi_rx_thread_pre_handler(). */ complete(&ts->rx_start_comp); wait_for_completion(&ts->rx_post_start_comp); }
void iscsi_activate_thread_set(struct iscsi_conn *conn, struct iscsi_thread_set *ts) { iscsi_add_ts_to_active_list(ts); spin_lock_bh(&ts->ts_state_lock); conn->thread_set = ts; ts->conn = conn; spin_unlock_bh(&ts->ts_state_lock); /* */ complete(&ts->rx_start_comp); wait_for_completion(&ts->rx_post_start_comp); }
void iscsi_activate_thread_set(struct iscsi_conn *conn, struct iscsi_thread_set *ts) { pr_info("%s/%d: iSCSI activate thread set %d\n", current->comm, task_pid_nr(current), ts->thread_id); iscsi_add_ts_to_active_list(ts); spin_lock_bh(&ts->ts_state_lock); conn->thread_set = ts; ts->conn = conn; spin_unlock_bh(&ts->ts_state_lock); /* * Start up the RX thread and wait on rx_post_start_comp. The RX * Thread will then do the same for the TX Thread in * iscsi_rx_thread_pre_handler(). */ complete(&ts->rx_start_comp); complete(&ts->deferred_start_comp); wait_for_completion(&ts->rx_post_start_comp); pr_info("%s/%d: iSCSI activate thread set %d got past rx_post_start_comp\n", current->comm, task_pid_nr(current), ts->thread_id); }