All of lore.kernel.org
 help / color / mirror / Atom feed
* [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:23 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.