diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2007-10-02 17:14:39 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:56:05 -0400 |
commit | 3058d5de47ce09ac0e531290566937c7d94d0653 (patch) | |
tree | c8a6a5326370b492bdb45f9c698aa6cba7342763 /drivers/scsi/gdth.h | |
parent | 884f7fba09646714f94d945162e698f0822a6fdd (diff) |
[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.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/gdth.h b/drivers/scsi/gdth.h index e6178c421855..be4ae5abd5c3 100644 --- a/drivers/scsi/gdth.h +++ b/drivers/scsi/gdth.h | |||
@@ -919,6 +919,11 @@ typedef struct { | |||
919 | Scsi_Cmnd *cmnd; /* pending request */ | 919 | Scsi_Cmnd *cmnd; /* pending request */ |
920 | ushort service; /* service */ | 920 | ushort service; /* service */ |
921 | } cmd_tab[GDTH_MAXCMDS]; /* table of pend. requests */ | 921 | } cmd_tab[GDTH_MAXCMDS]; /* table of pend. requests */ |
922 | struct gdth_cmndinfo { /* per-command private info */ | ||
923 | int index; | ||
924 | int internal_command; /* don't call scsi_done */ | ||
925 | dma_addr_t sense_paddr; /* sense dma-addr */ | ||
926 | } cmndinfo[GDTH_MAXCMDS]; /* index==0 is free */ | ||
922 | unchar bus_cnt; /* SCSI bus count */ | 927 | unchar bus_cnt; /* SCSI bus count */ |
923 | unchar tid_cnt; /* Target ID count */ | 928 | unchar tid_cnt; /* Target ID count */ |
924 | unchar bus_id[MAXBUS]; /* IOP IDs */ | 929 | unchar bus_id[MAXBUS]; /* IOP IDs */ |
@@ -941,6 +946,11 @@ typedef struct { | |||
941 | struct scsi_device *sdev; | 946 | struct scsi_device *sdev; |
942 | } gdth_ha_str; | 947 | } gdth_ha_str; |
943 | 948 | ||
949 | static inline struct gdth_cmndinfo *gdth_cmnd_priv(struct scsi_cmnd* cmd) | ||
950 | { | ||
951 | return (struct gdth_cmndinfo *)cmd->host_scribble; | ||
952 | } | ||
953 | |||
944 | /* INQUIRY data format */ | 954 | /* INQUIRY data format */ |
945 | typedef struct { | 955 | typedef struct { |
946 | unchar type_qual; | 956 | unchar type_qual; |