svn commit: r277247 - head/sys/cam/ctl
Alexander Motin
mav at FreeBSD.org
Fri Jan 16 12:35:56 UTC 2015
Author: mav
Date: Fri Jan 16 12:35:55 2015
New Revision: 277247
URL: https://svnweb.freebsd.org/changeset/base/277247
Log:
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.
MFC after: 2 weeks
Modified:
head/sys/cam/ctl/scsi_ctl.c
Modified: head/sys/cam/ctl/scsi_ctl.c
==============================================================================
--- head/sys/cam/ctl/scsi_ctl.c Fri Jan 16 12:16:21 2015 (r277246)
+++ head/sys/cam/ctl/scsi_ctl.c Fri Jan 16 12:35:55 2015 (r277247)
@@ -891,7 +891,6 @@ ctlfestart(struct cam_periph *periph, un
(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, uni
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
More information about the svn-src-all
mailing list