Module Name:    src
Committed By:   mlelstv
Date:           Sun Jun  5 09:21:14 UTC 2016

Modified Files:
        src/sys/dev/iscsi: iscsi_utils.c

Log Message:
acquire session lock when changing throttling queue


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/dev/iscsi/iscsi_utils.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/iscsi/iscsi_utils.c
diff -u src/sys/dev/iscsi/iscsi_utils.c:1.17 src/sys/dev/iscsi/iscsi_utils.c:1.18
--- src/sys/dev/iscsi/iscsi_utils.c:1.17	Sun Jun  5 09:03:10 2016
+++ src/sys/dev/iscsi/iscsi_utils.c	Sun Jun  5 09:21:14 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: iscsi_utils.c,v 1.17 2016/06/05 09:03:10 mlelstv Exp $	*/
+/*	$NetBSD: iscsi_utils.c,v 1.18 2016/06/05 09:21:14 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2004,2005,2006,2008 The NetBSD Foundation, Inc.
@@ -398,8 +398,10 @@ wake_ccb(ccb_t *ccb, uint32_t status)
 {
 	ccb_disp_t disp;
 	connection_t *conn;
+	session_t *sess;
 
 	conn = ccb->connection;
+	sess = ccb->session;
 
 #ifdef ISCSI_DEBUG
 	DEBC(conn, 9, ("CCB done, ccb = %p, disp = %d\n",
@@ -417,13 +419,16 @@ wake_ccb(ccb_t *ccb, uint32_t status)
 	}
 
 	suspend_ccb(ccb, FALSE);
-	throttle_ccb(ccb, FALSE);
 
 	/* change the disposition so nobody tries this again */
 	ccb->disp = CCBDISP_BUSY;
 	ccb->status = status;
 	mutex_exit(&conn->lock);
 
+	mutex_enter(&sess->lock);
+	throttle_ccb(ccb, FALSE);
+	mutex_exit(&sess->lock);
+
 	switch (disp) {
 	case CCBDISP_FREE:
 		free_ccb(ccb);

Reply via email to