scsipi_get_xs(): if we have XS_CTL_URGENT, return an xfer even if

active >= openings. An XS_CTL_URGENT command could otherwise fail, especially
if openings == 1.
This commit is contained in:
bouyer 2000-05-23 10:16:43 +00:00
parent 7c396cad70
commit 373582e298
1 changed files with 3 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: scsipi_base.c,v 1.34 2000/04/03 03:37:34 enami Exp $ */ /* $NetBSD: scsipi_base.c,v 1.35 2000/05/23 10:16:43 bouyer Exp $ */
/*- /*-
* Copyright (c) 1998 The NetBSD Foundation, Inc. * Copyright (c) 1998 The NetBSD Foundation, Inc.
@ -104,7 +104,8 @@ scsipi_get_xs(sc_link, flags)
flags |= XS_CTL_NOSLEEP | XS_CTL_POLL; flags |= XS_CTL_NOSLEEP | XS_CTL_POLL;
s = splbio(); s = splbio();
while (sc_link->active >= sc_link->openings) { while ((sc_link->active >= sc_link->openings) &&
((flags & XS_CTL_URGENT) == 0)) {
SC_DEBUG(sc_link, SDEV_DB3, ("sleeping\n")); SC_DEBUG(sc_link, SDEV_DB3, ("sleeping\n"));
if ((flags & XS_CTL_NOSLEEP) != 0) { if ((flags & XS_CTL_NOSLEEP) != 0) {
splx(s); splx(s);