* [PATCH 1/3] libata: scsi error handling, encore
@ 2005-10-09 12:24 Douglas Gilbert
0 siblings, 0 replies; only message in thread
From: Douglas Gilbert @ 2005-10-09 12:24 UTC (permalink / raw)
To: Jeff Garzik; +Cc: linux-ide, linux-scsi, htejun, russb
[-- Attachment #1: Type: text/plain, Size: 253 bytes --]
This patch is against Jeff's libata-dev git repository,
upstream branch.
Changelog:
- add extern ata_scsi_set_sense() to build SCSI
fixed sense data and corresponding SCSI status
Signed-off-by: Douglas Gilbert <dougg@torque.net>
Doug Gilbert
[-- Attachment #2: libata_err1.diff --]
[-- Type: text/x-patch, Size: 1844 bytes --]
--- linux/drivers/scsi/libata.h 2005-10-08 17:20:02.000000000 +1000
+++ linux/drivers/scsi/libata.h1 2005-10-09 15:46:14.000000000 +1000
@@ -80,6 +80,8 @@
extern void ata_scsi_badcmd(struct scsi_cmnd *cmd,
void (*done)(struct scsi_cmnd *),
u8 asc, u8 ascq);
+extern void ata_scsi_set_sense(struct scsi_cmnd *cmd,
+ u8 sk, u8 asc, u8 ascq);
extern void ata_scsi_rbuf_fill(struct ata_scsi_args *args,
unsigned int (*actor) (struct ata_scsi_args *args,
u8 *rbuf, unsigned int buflen));
--- linux/drivers/scsi/libata-scsi.c 2005-10-08 17:20:02.000000000 +1000
+++ linux/drivers/scsi/libata-scsi.c1 2005-10-09 15:46:22.000000000 +1000
@@ -1451,6 +1451,34 @@
}
/**
+ * ata_scsi_set_sense - Set SCSI sense data and status
+ * @cmd: SCSI request to be handled
+ * @sk: SCSI-defined sense key
+ * @asc: SCSI-defined additional sense code
+ * @ascq: SCSI-defined additional sense code qualifier
+ *
+ * Helper function that builds a valid fixed format, current
+ * response code and the given sense key (sk), additional sense
+ * code (asc) and additional sense code qualifier (ascq) with
+ * a SCSI command status of %SAM_STAT_CHECK_CONDITION and
+ * DRIVER_SENSE set in the upper bits of scsi_cmnd::result .
+ *
+ * LOCKING:
+ * Not required
+ */
+
+void ata_scsi_set_sense(struct scsi_cmnd *cmd, u8 sk, u8 asc, u8 ascq)
+{
+ cmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION;
+
+ cmd->sense_buffer[0] = 0x70; /* fixed format, current */
+ cmd->sense_buffer[2] = sk;
+ cmd->sense_buffer[7] = 18 - 8; /* additional sense length */
+ cmd->sense_buffer[12] = asc;
+ cmd->sense_buffer[13] = ascq;
+}
+
+/**
* ata_scsi_badcmd - End a SCSI request with an error
* @cmd: SCSI request to be handled
* @done: SCSI command completion function
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-10-09 12:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-09 12:24 [PATCH 1/3] libata: scsi error handling, encore Douglas Gilbert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).