svn commit: r206373 - stable/8/sys/cam
Matt Jacob
mjacob at FreeBSD.org
Wed Apr 7 17:58:30 UTC 2010
Author: mjacob
Date: Wed Apr 7 17:58:29 2010
New Revision: 206373
URL: http://svn.freebsd.org/changeset/base/206373
Log:
This is an MFC of 205993
For unhandled actions in xpt_action_default, remember to call
xpt_done for queued requests. This solves the problem of
indefinite hangs for unspecified transports when XPT_SCAN_BUS
is called.
A few minor cosmetics elsewhere.
Modified:
stable/8/sys/cam/cam_xpt.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/cam/cam_xpt.c
==============================================================================
--- stable/8/sys/cam/cam_xpt.c Wed Apr 7 17:52:32 2010 (r206372)
+++ stable/8/sys/cam/cam_xpt.c Wed Apr 7 17:58:29 2010 (r206373)
@@ -2375,6 +2375,7 @@ xpt_action_default(union ccb *start_ccb)
if (start_ccb->ccb_h.func_code == XPT_ATA_IO) {
start_ccb->ataio.resid = 0;
}
+ /* FALLTHROUGH */
case XPT_RESET_DEV:
case XPT_ENG_EXEC:
{
@@ -2883,6 +2884,9 @@ xpt_action_default(union ccb *start_ccb)
case XPT_ENG_INQ:
/* XXX Implement */
start_ccb->ccb_h.status = CAM_PROVIDE_FAIL;
+ if (start_ccb->ccb_h.func_code & XPT_FC_DEV_QUEUED) {
+ xpt_done(start_ccb);
+ }
break;
}
}
@@ -3925,7 +3929,7 @@ xpt_dev_async_default(u_int32_t async_co
struct cam_et *target, struct cam_ed *device,
void *async_arg)
{
- printf("xpt_dev_async called\n");
+ printf("%s called\n", __func__);
}
u_int32_t
@@ -4827,4 +4831,3 @@ camisr_runqueue(void *V_queue)
(*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h);
}
}
-
More information about the svn-src-stable-8
mailing list