mirror of
https://github.com/opnsense/src.git
synced 2026-04-22 23:02:02 -04:00
On command timeout handle frozen command first, to not run it inside
XXX_end_transaction(). Submitted by: avg
This commit is contained in:
parent
3889907fb2
commit
660d482a4e
2 changed files with 8 additions and 6 deletions
|
|
@ -1259,15 +1259,16 @@ ahci_timeout(struct ahci_slot *slot)
|
|||
|
||||
if (!ch->readlog)
|
||||
xpt_freeze_simq(ch->sim, ch->numrslots);
|
||||
/* Handle command with timeout. */
|
||||
ahci_end_transaction(&ch->slot[slot->slot], AHCI_ERR_TIMEOUT);
|
||||
/* Handle the rest of commands. */
|
||||
/* Handle frozen command. */
|
||||
if (ch->frozen) {
|
||||
union ccb *fccb = ch->frozen;
|
||||
ch->frozen = NULL;
|
||||
fccb->ccb_h.status = CAM_REQUEUE_REQ | CAM_RELEASE_SIMQ;
|
||||
xpt_done(fccb);
|
||||
}
|
||||
/* Handle command with timeout. */
|
||||
ahci_end_transaction(&ch->slot[slot->slot], AHCI_ERR_TIMEOUT);
|
||||
/* Handle the rest of commands. */
|
||||
for (i = 0; i < ch->numslots; i++) {
|
||||
/* Do we have a running request on slot? */
|
||||
if (ch->slot[i].state < AHCI_SLOT_RUNNING)
|
||||
|
|
|
|||
|
|
@ -982,15 +982,16 @@ device_printf(dev, "%s is %08x ss %08x rs %08x es %08x sts %08x serr %08x\n",
|
|||
|
||||
if (!ch->readlog)
|
||||
xpt_freeze_simq(ch->sim, ch->numrslots);
|
||||
/* Handle command with timeout. */
|
||||
siis_end_transaction(&ch->slot[slot->slot], SIIS_ERR_TIMEOUT);
|
||||
/* Handle the rest of commands. */
|
||||
/* Handle frozen command. */
|
||||
if (ch->frozen) {
|
||||
union ccb *fccb = ch->frozen;
|
||||
ch->frozen = NULL;
|
||||
fccb->ccb_h.status = CAM_REQUEUE_REQ | CAM_RELEASE_SIMQ;
|
||||
xpt_done(fccb);
|
||||
}
|
||||
/* Handle command with timeout. */
|
||||
siis_end_transaction(&ch->slot[slot->slot], SIIS_ERR_TIMEOUT);
|
||||
/* Handle the rest of commands. */
|
||||
for (i = 0; i < SIIS_MAX_SLOTS; i++) {
|
||||
/* Do we have a running request on slot? */
|
||||
if (ch->slot[i].state < SIIS_SLOT_RUNNING)
|
||||
|
|
|
|||
Loading…
Reference in a new issue