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 @@ -3813,6 +3813,7 @@ int iscsi_target_tx_thread(void *arg)
38133813	 * connection recovery / failure event can be triggered externally. 
38143814	 */ 
38153815	allow_signal (SIGINT );
3816+ 	complete (& conn -> kthr_start_comp );
38163817
38173818	while  (!kthread_should_stop ()) {
38183819		/* 
@@ -4041,6 +4042,7 @@ int iscsi_target_rx_thread(void *arg)
40414042	 * connection recovery / failure event can be triggered externally. 
40424043	 */ 
40434044	allow_signal (SIGINT );
4045+ 	complete (& conn -> kthr_start_comp );
40444046	/* 
40454047	 * Wait for iscsi_post_login_handler() to complete before allowing 
40464048	 * incoming iscsi/tcp socket I/O, and/or failing the connection. 
Original file line number Diff line number Diff line change @@ -646,6 +646,7 @@ int iscsit_start_kthreads(struct iscsi_conn *conn)
646646		ret  =  PTR_ERR (conn -> tx_thread );
647647		goto out_bitmap ;
648648	}
649+ 	wait_for_completion (& conn -> kthr_start_comp );
649650	conn -> tx_thread_active  =  true;
650651
651652	conn -> rx_thread  =  kthread_run (iscsi_target_rx_thread , conn ,
@@ -655,6 +656,7 @@ int iscsit_start_kthreads(struct iscsi_conn *conn)
655656		ret  =  PTR_ERR (conn -> rx_thread );
656657		goto out_tx ;
657658	}
659+ 	wait_for_completion (& conn -> kthr_start_comp );
658660	conn -> rx_thread_active  =  true;
659661
660662	return  0 ;
@@ -1127,6 +1129,7 @@ static struct iscsi_conn *iscsit_alloc_conn(struct iscsi_np *np)
11271129	init_completion (& conn -> rx_half_close_comp );
11281130	init_completion (& conn -> tx_half_close_comp );
11291131	init_completion (& conn -> rx_login_comp );
1132+ 	init_completion (& conn -> kthr_start_comp );
11301133	spin_lock_init (& conn -> cmd_lock );
11311134	spin_lock_init (& conn -> conn_usage_lock );
11321135	spin_lock_init (& conn -> immed_queue_lock );
Original file line number Diff line number Diff line change @@ -562,6 +562,7 @@ struct iscsi_conn {
562562	struct  completion 	conn_logout_comp ;
563563	struct  completion 	tx_half_close_comp ;
564564	struct  completion 	rx_half_close_comp ;
565+ 	struct  completion 	kthr_start_comp ;
565566	/* socket used by this connection */ 
566567	struct  socket 		* sock ;
567568	void 			(* orig_data_ready )(struct  sock  * );
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments