mirror of
https://github.com/opnsense/src.git
synced 2026-06-27 01:20:18 -04:00
cam: Enforce real priorities in xpt_action for queued ccbs.
All queued CCBs should be created with a real priority (one that's not CAM_PRIORITY_NONE). Recently, I introduced a bug that revealed a latent MMC bug where it would stop enumerating due to a bad priority. Add an assert to catch that (the other bug in mmc_da that it found has been fixed). Sponsored by: Netflix
This commit is contained in:
parent
7cbf41ef60
commit
b4b166b8c4
1 changed files with 9 additions and 0 deletions
|
|
@ -2515,6 +2515,15 @@ xpt_action(union ccb *start_ccb)
|
|||
("xpt_action: func %#x %s\n", start_ccb->ccb_h.func_code,
|
||||
xpt_action_name(start_ccb->ccb_h.func_code)));
|
||||
|
||||
/*
|
||||
* Either it isn't queued, or it has a real priority. There still too
|
||||
* many places that reuse CCBs with a real priority to do immediate
|
||||
* queries to do the other side of this assert.
|
||||
*/
|
||||
KASSERT((start_ccb->ccb_h.func_code & XPT_FC_QUEUED) == 0 ||
|
||||
start_ccb->ccb_h.pinfo.priority != CAM_PRIORITY_NONE,
|
||||
("%s: queued ccb and CAM_PRIORITY_NONE illegal.", __func__));
|
||||
|
||||
start_ccb->ccb_h.status = CAM_REQ_INPROG;
|
||||
(*(start_ccb->ccb_h.path->bus->xport->ops->action))(start_ccb);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue