diff options
| author | Alexander Motin <mav@FreeBSD.org> | 2017-02-25 14:24:29 +0000 |
|---|---|---|
| committer | Alexander Motin <mav@FreeBSD.org> | 2017-02-25 14:24:29 +0000 |
| commit | ebaf2c29d762a723658b9e5f873bd6a7d0e1f2a8 (patch) | |
| tree | 1a07102bc7b5868d04ebb01660b1f649b6ac10f8 /sys/dev/usb/storage | |
| parent | 65638556348632cdd81d8544f03307f438b01f3b (diff) | |
Notes
Diffstat (limited to 'sys/dev/usb/storage')
| -rw-r--r-- | sys/dev/usb/storage/cfumass.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/dev/usb/storage/cfumass.c b/sys/dev/usb/storage/cfumass.c index 8c8287349389..71fd6e549b03 100644 --- a/sys/dev/usb/storage/cfumass.c +++ b/sys/dev/usb/storage/cfumass.c @@ -987,19 +987,21 @@ cfumass_done(union ctl_io *io) return; } - switch (io->scsiio.scsi_status) { - case SCSI_STATUS_OK: + if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS) sc->sc_current_status = 0; - break; - default: + else sc->sc_current_status = 1; - break; - } + + /* XXX: How should we report BUSY, RESERVATION CONFLICT, etc? */ + if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SCSI_ERROR && + io->scsiio.scsi_status == SCSI_STATUS_CHECK_COND) + ctl_queue_sense(io); + else + ctl_free_io(io); CFUMASS_LOCK(sc); cfumass_transfer_start(sc, CFUMASS_T_STATUS); CFUMASS_UNLOCK(sc); - ctl_free_io(io); refcount_release(&sc->sc_queued); } |
