summaryrefslogtreecommitdiffstats
path: root/sys/cam/scsi/scsi_da.c
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2013-09-11 18:16:18 +0000
committersjg <sjg@FreeBSD.org>2013-09-11 18:16:18 +0000
commitff87b5d1477fd150ff715e5c3c2a205deb66804f (patch)
treea3620d99f472deaa7f019c4324bb8f4e38ac4272 /sys/cam/scsi/scsi_da.c
parent62bb1062226d3ce6a2350808256a25508978352d (diff)
parent4d92de31b23f33109e1fa7f0b1499ed6c3501ee1 (diff)
downloadFreeBSD-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.c27
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 */
OpenPOWER on IntegriCloud