MFC r277247: Don't count status as sent until CTIO completes successfully.
If we aggregated status sending with data move and got error, allow status to be updated and resent again separately. Without this command may stuck without status sent at all.
This commit is contained in:
parent
aba44db36e
commit
0a6db6b09e
@ -891,7 +891,6 @@ ctlfestart(struct cam_periph *periph, union ccb *start_ccb)
|
||||
(cmd_info->flags & CTLFE_CMD_PIECEWISE) == 0 &&
|
||||
((io->io_hdr.flags & CTL_FLAG_DMA_QUEUED) == 0 ||
|
||||
io->io_hdr.status == CTL_SUCCESS)) {
|
||||
io->io_hdr.flags |= CTL_FLAG_STATUS_SENT;
|
||||
flags |= CAM_SEND_STATUS;
|
||||
scsi_status = io->scsiio.scsi_status;
|
||||
csio->sense_len = io->scsiio.sense_len;
|
||||
@ -1265,6 +1264,10 @@ ctlfedone(struct cam_periph *periph, union ccb *done_ccb)
|
||||
break;
|
||||
}
|
||||
|
||||
if ((done_ccb->ccb_h.flags & CAM_SEND_STATUS) &&
|
||||
(done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)
|
||||
io->io_hdr.flags |= CTL_FLAG_STATUS_SENT;
|
||||
|
||||
/*
|
||||
* If we were sending status back to the initiator, free up
|
||||
* resources. If we were doing a datamove, call the
|
||||
|
Loading…
Reference in New Issue
Block a user