diff options
author | sjg <sjg@FreeBSD.org> | 2013-09-11 18:16:18 +0000 |
---|---|---|
committer | sjg <sjg@FreeBSD.org> | 2013-09-11 18:16:18 +0000 |
commit | ff87b5d1477fd150ff715e5c3c2a205deb66804f (patch) | |
tree | a3620d99f472deaa7f019c4324bb8f4e38ac4272 /sys/cam/scsi/scsi_da.c | |
parent | 62bb1062226d3ce6a2350808256a25508978352d (diff) | |
parent | 4d92de31b23f33109e1fa7f0b1499ed6c3501ee1 (diff) | |
download | FreeBSD-src-ff87b5d1477fd150ff715e5c3c2a205deb66804f.zip FreeBSD-src-ff87b5d1477fd150ff715e5c3c2a205deb66804f.tar.gz |
Merge head
Diffstat (limited to 'sys/cam/scsi/scsi_da.c')
-rw-r--r-- | sys/cam/scsi/scsi_da.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c index 8ee47f9..913951e 100644 --- a/sys/cam/scsi/scsi_da.c +++ b/sys/cam/scsi/scsi_da.c @@ -3851,4 +3851,31 @@ scsi_format_unit(struct ccb_scsiio *csio, u_int32_t retries, timeout); } +void +scsi_sanitize(struct ccb_scsiio *csio, u_int32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + u_int8_t tag_action, u_int8_t byte2, u_int16_t control, + u_int8_t *data_ptr, u_int32_t dxfer_len, u_int8_t sense_len, + u_int32_t timeout) +{ + struct scsi_sanitize *scsi_cmd; + + scsi_cmd = (struct scsi_sanitize *)&csio->cdb_io.cdb_bytes; + scsi_cmd->opcode = SANITIZE; + scsi_cmd->byte2 = byte2; + scsi_cmd->control = control; + scsi_ulto2b(dxfer_len, scsi_cmd->length); + + cam_fill_csio(csio, + retries, + cbfcnp, + /*flags*/ (dxfer_len > 0) ? CAM_DIR_OUT : CAM_DIR_NONE, + tag_action, + data_ptr, + dxfer_len, + sense_len, + sizeof(*scsi_cmd), + timeout); +} + #endif /* _KERNEL */ |