aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx/aic79xx_osm.h
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2006-06-22 05:45:00 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-06-26 10:59:18 -0400
commitf89d0a4e1d01168f20f9e8273de7dfc094b2a430 (patch)
tree192535b673233f57fa7617b99ce593892957cb2f /drivers/scsi/aic7xxx/aic79xx_osm.h
parent9ba0883cfc5ab69820c05f1bf2b7711bb0a0103c (diff)
[SCSI] aic79xx: remove slave_destroy
Even with the latest fixes aic79xx still occasionally triggers the BUG_ON in slave_destroy. Rather than trying to figure out the various levels of interaction here I've decided to remove the callback altogether. The primary reason for the slave_alloc / slave_destroy is to keep an index of pointers to the sdevs associated with a given target. However, by changing the arguments to the affected functions slightly it's possible to avoid the use of that index entirely. The only performance penalty we'll incur is in writing the information for /proc/scsi/XXX, as we'll have to recurse over all available sdevs to find the correct ones. But I doubt that reading from /proc is in any way time-critical. Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/aic7xxx/aic79xx_osm.h')
-rw-r--r--drivers/scsi/aic7xxx/aic79xx_osm.h11
1 files changed, 2 insertions, 9 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h
index 2b8331649eeb..b2e65e10ad2b 100644
--- a/drivers/scsi/aic7xxx/aic79xx_osm.h
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.h
@@ -263,7 +263,6 @@ typedef enum {
263 AHD_DEV_PERIODIC_OTAG = 0x40, /* Send OTAG to prevent starvation */ 263 AHD_DEV_PERIODIC_OTAG = 0x40, /* Send OTAG to prevent starvation */
264} ahd_linux_dev_flags; 264} ahd_linux_dev_flags;
265 265
266struct ahd_linux_target;
267struct ahd_linux_device { 266struct ahd_linux_device {
268 TAILQ_ENTRY(ahd_linux_device) links; 267 TAILQ_ENTRY(ahd_linux_device) links;
269 268
@@ -343,12 +342,6 @@ struct ahd_linux_device {
343#define AHD_OTAG_THRESH 500 342#define AHD_OTAG_THRESH 500
344}; 343};
345 344
346struct ahd_linux_target {
347 struct scsi_device *sdev[AHD_NUM_LUNS];
348 struct ahd_transinfo last_tinfo;
349 struct ahd_softc *ahd;
350};
351
352/********************* Definitions Required by the Core ***********************/ 345/********************* Definitions Required by the Core ***********************/
353/* 346/*
354 * Number of SG segments we require. So long as the S/G segments for 347 * Number of SG segments we require. So long as the S/G segments for
@@ -865,7 +858,7 @@ ahd_freeze_scb(struct scb *scb)
865 } 858 }
866} 859}
867 860
868void ahd_platform_set_tags(struct ahd_softc *ahd, 861void ahd_platform_set_tags(struct ahd_softc *ahd, struct scsi_device *sdev,
869 struct ahd_devinfo *devinfo, ahd_queue_alg); 862 struct ahd_devinfo *devinfo, ahd_queue_alg);
870int ahd_platform_abort_scbs(struct ahd_softc *ahd, int target, 863int ahd_platform_abort_scbs(struct ahd_softc *ahd, int target,
871 char channel, int lun, u_int tag, 864 char channel, int lun, u_int tag,
@@ -874,7 +867,7 @@ irqreturn_t
874 ahd_linux_isr(int irq, void *dev_id, struct pt_regs * regs); 867 ahd_linux_isr(int irq, void *dev_id, struct pt_regs * regs);
875void ahd_done(struct ahd_softc*, struct scb*); 868void ahd_done(struct ahd_softc*, struct scb*);
876void ahd_send_async(struct ahd_softc *, char channel, 869void ahd_send_async(struct ahd_softc *, char channel,
877 u_int target, u_int lun, ac_code, void *); 870 u_int target, u_int lun, ac_code);
878void ahd_print_path(struct ahd_softc *, struct scb *); 871void ahd_print_path(struct ahd_softc *, struct scb *);
879 872
880#ifdef CONFIG_PCI 873#ifdef CONFIG_PCI