The "throttling" code in the in-kernel iSCSI initiator is very questionable;

it sleeps on a ccb that appears highly unlikely to wake up, since it seems
to be waiting to _submit_ that very ccb!  This is doubtless why someone tried
to disable it in the default case via several #defines.

Unfortunately one of those #defines is later tested backwards.  Fix that.
The in-kernel initiator now seems to survive a system build without hanging.
This commit is contained in:
tls 2014-09-25 00:30:45 +00:00
parent d2ea5f1a49
commit 28ee42f695

View File

@ -1,4 +1,4 @@
/* $NetBSD: iscsi_send.c,v 1.9 2014/09/05 09:27:34 matt Exp $ */
/* $NetBSD: iscsi_send.c,v 1.10 2014/09/25 00:30:45 tls Exp $ */
/*-
* Copyright (c) 2004,2005,2006,2011 The NetBSD Foundation, Inc.
@ -1378,7 +1378,7 @@ send_command(ccb_t *ccb, ccb_disp_t disp, bool waitok, bool immed)
s = splbio();
while (/*CONSTCOND*/ISCSI_THROTTLING_ENABLED &&
/*CONSTCOND*/ISCSI_SERVER_TRUSTED &&
/*CONSTCOND*/!ISCSI_SERVER_TRUSTED &&
!sn_a_le_b(sess->CmdSN, sess->MaxCmdSN)) {
ccb->disp = disp;