svn commit: r275630 - stable/10/sbin/camcontrol
Bryan Venteicher
bryanv at FreeBSD.org
Tue Dec 9 07:03:50 UTC 2014
Author: bryanv
Date: Tue Dec 9 07:03:49 2014
New Revision: 275630
URL: https://svnweb.freebsd.org/changeset/base/275630
Log:
MFC r274322:
Attempt to report a better error if sanitize is not supported
Modified:
stable/10/sbin/camcontrol/camcontrol.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sbin/camcontrol/camcontrol.c
==============================================================================
--- stable/10/sbin/camcontrol/camcontrol.c Tue Dec 9 06:40:38 2014 (r275629)
+++ stable/10/sbin/camcontrol/camcontrol.c Tue Dec 9 07:03:49 2014 (r275630)
@@ -5827,15 +5827,31 @@ scsisanitize(struct cam_device *device,
if (arglist & CAM_ARG_ERR_RECOVER)
ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
- if (((retval = cam_send_ccb(device, ccb)) < 0)
- || ((immediate == 0)
- && ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP))) {
- const char errstr[] = "error sending sanitize command";
+ if (cam_send_ccb(device, ccb) < 0) {
+ warn("error sending sanitize command");
+ error = 1;
+ goto scsisanitize_bailout;
+ }
- if (retval < 0)
- warn(errstr);
- else
- warnx(errstr);
+ if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
+ struct scsi_sense_data *sense;
+ int error_code, sense_key, asc, ascq;
+
+ if ((ccb->ccb_h.status & CAM_STATUS_MASK) ==
+ CAM_SCSI_STATUS_ERROR) {
+ sense = &ccb->csio.sense_data;
+ scsi_extract_sense_len(sense, ccb->csio.sense_len -
+ ccb->csio.sense_resid, &error_code, &sense_key,
+ &asc, &ascq, /*show_errors*/ 1);
+
+ if (sense_key == SSD_KEY_ILLEGAL_REQUEST &&
+ asc == 0x20 && ascq == 0x00)
+ warnx("sanitize is not supported by "
+ "this device");
+ else
+ warnx("error sanitizing this device");
+ } else
+ warnx("error sanitizing this device");
if (arglist & CAM_ARG_VERBOSE) {
cam_error_print(device, ccb, CAM_ESF_ALL,
More information about the svn-src-all
mailing list