File tree Expand file tree Collapse file tree 3 files changed +6
-0
lines changed Expand file tree Collapse file tree 3 files changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -3922,6 +3922,7 @@ int iscsi_target_tx_thread(void *arg)
39223922	 * connection recovery / failure event can be triggered externally. 
39233923	 */ 
39243924	allow_signal (SIGINT );
3925+ 	complete (& conn -> kthr_start_comp );
39253926
39263927	while  (!kthread_should_stop ()) {
39273928		/* 
@@ -4170,6 +4171,7 @@ int iscsi_target_rx_thread(void *arg)
41704171	 * connection recovery / failure event can be triggered externally. 
41714172	 */ 
41724173	allow_signal (SIGINT );
4174+ 	complete (& conn -> kthr_start_comp );
41734175	/* 
41744176	 * Wait for iscsi_post_login_handler() to complete before allowing 
41754177	 * incoming iscsi/tcp socket I/O, and/or failing the connection. 
Original file line number Diff line number Diff line change @@ -660,6 +660,7 @@ int iscsit_start_kthreads(struct iscsit_conn *conn)
660660		ret  =  PTR_ERR (conn -> tx_thread );
661661		goto out_bitmap ;
662662	}
663+ 	wait_for_completion (& conn -> kthr_start_comp );
663664	conn -> tx_thread_active  =  true;
664665
665666	conn -> rx_thread  =  kthread_run (iscsi_target_rx_thread , conn ,
@@ -669,6 +670,7 @@ int iscsit_start_kthreads(struct iscsit_conn *conn)
669670		ret  =  PTR_ERR (conn -> rx_thread );
670671		goto out_tx ;
671672	}
673+ 	wait_for_completion (& conn -> kthr_start_comp );
672674	conn -> rx_thread_active  =  true;
673675
674676	return  0 ;
@@ -1064,6 +1066,7 @@ static struct iscsit_conn *iscsit_alloc_conn(struct iscsi_np *np)
10641066	init_completion (& conn -> rx_half_close_comp );
10651067	init_completion (& conn -> tx_half_close_comp );
10661068	init_completion (& conn -> rx_login_comp );
1069+ 	init_completion (& conn -> kthr_start_comp );
10671070	spin_lock_init (& conn -> cmd_lock );
10681071	spin_lock_init (& conn -> conn_usage_lock );
10691072	spin_lock_init (& conn -> immed_queue_lock );
Original file line number Diff line number Diff line change @@ -550,6 +550,7 @@ struct iscsit_conn {
550550	struct  completion 	conn_logout_comp ;
551551	struct  completion 	tx_half_close_comp ;
552552	struct  completion 	rx_half_close_comp ;
553+ 	struct  completion 	kthr_start_comp ;
553554	/* socket used by this connection */ 
554555	struct  socket 		* sock ;
555556	void 			(* orig_data_ready )(struct  sock  * );
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments