aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/gdth.h
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2007-10-02 23:14:39 +0200
committerJames Bottomley <jejb@mulgrave.localdomain>2007-10-12 14:56:05 -0400
commit3058d5de47ce09ac0e531290566937c7d94d0653 (patch)
treec8a6a5326370b492bdb45f9c698aa6cba7342763 /drivers/scsi/gdth.h
parent884f7fba09646714f94d945162e698f0822a6fdd (diff)
downloadkernel_samsung_espresso10-3058d5de47ce09ac0e531290566937c7d94d0653.zip
kernel_samsung_espresso10-3058d5de47ce09ac0e531290566937c7d94d0653.tar.gz
kernel_samsung_espresso10-3058d5de47ce09ac0e531290566937c7d94d0653.tar.bz2
[SCSI] gdth: Setup proper per-command private data
- scsi_cmnd and specifically ->SCp of, where heavily abused with internal meaning members and flags. So introduce a new struct gdth_cmndinfo, put it on ->host_scribble and define a gdth_cmnd_priv() accessor to retrieve it from a scsi_cmnd. - The structure now holds two members: internal_command - replaces the IS_GDTH_INTERNAL_CMD() croft. sense_paddr - which was a 64-bit spanning on 2 32-bit members of SCp. More overloaded members from SCp and scsi_cmnd will be moved in a later patch (For easy review). - Split up gdth_queuecommand to an additional internal_function. The later is the one called by gdth_execute(). This will be more evident later in the scsi accessors patch, but it also facilitates in the differentiation between internal_command and external. And the setup of gdth_cmndinfo of each command. Signed-off-by Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/gdth.h')
-rw-r--r--drivers/scsi/gdth.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/gdth.h b/drivers/scsi/gdth.h
index e6178c4..be4ae5a 100644
--- a/drivers/scsi/gdth.h
+++ b/drivers/scsi/gdth.h
@@ -919,6 +919,11 @@ typedef struct {
Scsi_Cmnd *cmnd; /* pending request */
ushort service; /* service */
} cmd_tab[GDTH_MAXCMDS]; /* table of pend. requests */
+ struct gdth_cmndinfo { /* per-command private info */
+ int index;
+ int internal_command; /* don't call scsi_done */
+ dma_addr_t sense_paddr; /* sense dma-addr */
+ } cmndinfo[GDTH_MAXCMDS]; /* index==0 is free */
unchar bus_cnt; /* SCSI bus count */
unchar tid_cnt; /* Target ID count */
unchar bus_id[MAXBUS]; /* IOP IDs */
@@ -941,6 +946,11 @@ typedef struct {
struct scsi_device *sdev;
} gdth_ha_str;
+static inline struct gdth_cmndinfo *gdth_cmnd_priv(struct scsi_cmnd* cmd)
+{
+ return (struct gdth_cmndinfo *)cmd->host_scribble;
+}
+
/* INQUIRY data format */
typedef struct {
unchar type_qual;