git: 6cd4542786f9 - stable/12 - Move ic_check_send_space clear to the actual check.

Alexander Motin mav at FreeBSD.org
Mon Mar 15 03:01:38 UTC 2021


The branch stable/12 has been updated by mav:

URL: https://cgit.FreeBSD.org/src/commit/?id=6cd4542786f929ea57604662d7d5537f13261382

commit 6cd4542786f929ea57604662d7d5537f13261382
Author:     Alexander Motin <mav at FreeBSD.org>
AuthorDate: 2021-03-03 20:21:26 +0000
Commit:     Alexander Motin <mav at FreeBSD.org>
CommitDate: 2021-03-15 02:54:56 +0000

    Move ic_check_send_space clear to the actual check.
    
    It closes tiny race when the flag could be set between being cleared
    and the space is checked, that would create us some more work.  The
    flag setting is protected by both locks, so we can clear it in either
    place, but in between both locks are dropped.
    
    MFC after:      1 week
    
    (cherry picked from commit afc3e54eeee635a525c88e4678cc38e3219302c3)
---
 sys/dev/iscsi/icl_soft.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/dev/iscsi/icl_soft.c b/sys/dev/iscsi/icl_soft.c
index d995bedbcb72..454afe15c398 100644
--- a/sys/dev/iscsi/icl_soft.c
+++ b/sys/dev/iscsi/icl_soft.c
@@ -802,6 +802,7 @@ icl_conn_send_pdus(struct icl_conn *ic, struct icl_pdu_stailq *queue)
 	 * of error.
 	 */
 	available = sbspace(&so->so_snd);
+	ic->ic_check_send_space = false;
 
 	/*
 	 * Notify the socket upcall that we don't need wakeups
@@ -915,7 +916,6 @@ icl_send_thread(void *arg)
 			if (STAILQ_EMPTY(&queue) || ic->ic_check_send_space)
 				STAILQ_CONCAT(&queue, &ic->ic_to_send);
 
-			ic->ic_check_send_space = false;
 			ICL_CONN_UNLOCK(ic);
 			icl_conn_send_pdus(ic, &queue);
 			ICL_CONN_LOCK(ic);


More information about the dev-commits-src-all mailing list