diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-08-10 13:43:09 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-10 13:43:09 -0400 |
commit | a7144b23da073f4b3192e356ad74de12aba60e00 (patch) | |
tree | 2b93bdf54563bfe447a167d832c43d24f56c7a95 /drivers/scsi | |
parent | 8a60a07129fad60bba779a2a4038c7518b167fc7 (diff) | |
parent | 86b3786078d63242d3194ffc58ae8dae1d1bbef3 (diff) |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/Kconfig | 2 | ||||
-rw-r--r-- | drivers/scsi/aacraid/aacraid.h | 6 | ||||
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 3 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 24 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm.c | 4 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h | 8 | ||||
-rw-r--r-- | drivers/scsi/ibmvscsi/srp.h | 2 | ||||
-rw-r--r-- | drivers/scsi/ips.c | 8 | ||||
-rw-r--r-- | drivers/scsi/ips.h | 39 | ||||
-rw-r--r-- | drivers/scsi/st.c | 8 |
10 files changed, 51 insertions, 53 deletions
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 96df148ed969..f1e8c4223ed1 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
@@ -424,7 +424,7 @@ config SCSI_IN2000 | |||
424 | source "drivers/scsi/megaraid/Kconfig.megaraid" | 424 | source "drivers/scsi/megaraid/Kconfig.megaraid" |
425 | 425 | ||
426 | config SCSI_SATA | 426 | config SCSI_SATA |
427 | bool "Serial ATA (SATA) support" | 427 | tristate "Serial ATA (SATA) support" |
428 | depends on SCSI | 428 | depends on SCSI |
429 | help | 429 | help |
430 | This driver family supports Serial ATA host controllers | 430 | This driver family supports Serial ATA host controllers |
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 3a11a536c0da..4ab07861b457 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -15,11 +15,7 @@ | |||
15 | #define AAC_MAX_LUN (8) | 15 | #define AAC_MAX_LUN (8) |
16 | 16 | ||
17 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) | 17 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) |
18 | /* | 18 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)512) |
19 | * max_sectors is an unsigned short, otherwise limit is 0x100000000 / 512 | ||
20 | * Linux has starvation problems if we permit larger than 4MB I/O ... | ||
21 | */ | ||
22 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)8192) | ||
23 | 19 | ||
24 | /* | 20 | /* |
25 | * These macros convert from physical channels to virtual channels | 21 | * These macros convert from physical channels to virtual channels |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index c1a4f978fcba..562da90480a1 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -374,7 +374,8 @@ static int aac_slave_configure(struct scsi_device *sdev) | |||
374 | else | 374 | else |
375 | scsi_adjust_queue_depth(sdev, 0, 1); | 375 | scsi_adjust_queue_depth(sdev, 0, 1); |
376 | 376 | ||
377 | if (host->max_sectors < AAC_MAX_32BIT_SGBCOUNT) | 377 | if (!(((struct aac_dev *)host->hostdata)->adapter_info.options |
378 | & AAC_OPT_NEW_COMM)) | ||
378 | blk_queue_max_segment_size(sdev->request_queue, 65536); | 379 | blk_queue_max_segment_size(sdev->request_queue, 65536); |
379 | 380 | ||
380 | return 0; | 381 | return 0; |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index 116d0f51ca2c..687f19e9cf03 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c | |||
@@ -1264,14 +1264,12 @@ ahc_platform_set_tags(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, | |||
1264 | } | 1264 | } |
1265 | switch ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED))) { | 1265 | switch ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED))) { |
1266 | case AHC_DEV_Q_BASIC: | 1266 | case AHC_DEV_Q_BASIC: |
1267 | scsi_adjust_queue_depth(sdev, | 1267 | scsi_set_tag_type(sdev, MSG_SIMPLE_TAG); |
1268 | MSG_SIMPLE_TASK, | 1268 | scsi_activate_tcq(sdev, dev->openings + dev->active); |
1269 | dev->openings + dev->active); | ||
1270 | break; | 1269 | break; |
1271 | case AHC_DEV_Q_TAGGED: | 1270 | case AHC_DEV_Q_TAGGED: |
1272 | scsi_adjust_queue_depth(sdev, | 1271 | scsi_set_tag_type(sdev, MSG_ORDERED_TAG); |
1273 | MSG_ORDERED_TASK, | 1272 | scsi_activate_tcq(sdev, dev->openings + dev->active); |
1274 | dev->openings + dev->active); | ||
1275 | break; | 1273 | break; |
1276 | default: | 1274 | default: |
1277 | /* | 1275 | /* |
@@ -1280,9 +1278,7 @@ ahc_platform_set_tags(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, | |||
1280 | * serially on the controller/device. This should | 1278 | * serially on the controller/device. This should |
1281 | * remove some latency. | 1279 | * remove some latency. |
1282 | */ | 1280 | */ |
1283 | scsi_adjust_queue_depth(sdev, | 1281 | scsi_deactivate_tcq(sdev, 2); |
1284 | /*NON-TAGGED*/0, | ||
1285 | /*queue depth*/2); | ||
1286 | break; | 1282 | break; |
1287 | } | 1283 | } |
1288 | } | 1284 | } |
@@ -1635,9 +1631,9 @@ ahc_send_async(struct ahc_softc *ahc, char channel, | |||
1635 | spi_period(starget) = tinfo->curr.period; | 1631 | spi_period(starget) = tinfo->curr.period; |
1636 | spi_width(starget) = tinfo->curr.width; | 1632 | spi_width(starget) = tinfo->curr.width; |
1637 | spi_offset(starget) = tinfo->curr.offset; | 1633 | spi_offset(starget) = tinfo->curr.offset; |
1638 | spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ; | 1634 | spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ ? 1 : 0; |
1639 | spi_qas(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_QAS_REQ; | 1635 | spi_qas(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_QAS_REQ ? 1 : 0; |
1640 | spi_iu(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ; | 1636 | spi_iu(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ ? 1 : 0; |
1641 | spi_display_xfer_agreement(starget); | 1637 | spi_display_xfer_agreement(starget); |
1642 | break; | 1638 | break; |
1643 | } | 1639 | } |
@@ -2429,12 +2425,14 @@ static void ahc_linux_set_dt(struct scsi_target *starget, int dt) | |||
2429 | unsigned int ppr_options = tinfo->goal.ppr_options | 2425 | unsigned int ppr_options = tinfo->goal.ppr_options |
2430 | & ~MSG_EXT_PPR_DT_REQ; | 2426 | & ~MSG_EXT_PPR_DT_REQ; |
2431 | unsigned int period = tinfo->goal.period; | 2427 | unsigned int period = tinfo->goal.period; |
2428 | unsigned int width = tinfo->goal.width; | ||
2432 | unsigned long flags; | 2429 | unsigned long flags; |
2433 | struct ahc_syncrate *syncrate; | 2430 | struct ahc_syncrate *syncrate; |
2434 | 2431 | ||
2435 | if (dt) { | 2432 | if (dt) { |
2436 | period = 9; /* 12.5ns is the only period valid for DT */ | ||
2437 | ppr_options |= MSG_EXT_PPR_DT_REQ; | 2433 | ppr_options |= MSG_EXT_PPR_DT_REQ; |
2434 | if (!width) | ||
2435 | ahc_linux_set_width(starget, 1); | ||
2438 | } else if (period == 9) | 2436 | } else if (period == 9) |
2439 | period = 10; /* if resetting DT, period must be >= 25ns */ | 2437 | period = 10; /* if resetting DT, period must be >= 25ns */ |
2440 | 2438 | ||
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm.c b/drivers/scsi/aic7xxx/aicasm/aicasm.c index c34639481904..f936b691232f 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm.c +++ b/drivers/scsi/aic7xxx/aicasm/aicasm.c | |||
@@ -369,7 +369,7 @@ output_code() | |||
369 | 369 | ||
370 | fprintf(ofile, "%s\t0x%02x, 0x%02x, 0x%02x, 0x%02x", | 370 | fprintf(ofile, "%s\t0x%02x, 0x%02x, 0x%02x, 0x%02x", |
371 | cur_instr == STAILQ_FIRST(&seq_program) ? "" : ",\n", | 371 | cur_instr == STAILQ_FIRST(&seq_program) ? "" : ",\n", |
372 | #if BYTE_ORDER == LITTLE_ENDIAN | 372 | #ifdef __LITTLE_ENDIAN |
373 | cur_instr->format.bytes[0], | 373 | cur_instr->format.bytes[0], |
374 | cur_instr->format.bytes[1], | 374 | cur_instr->format.bytes[1], |
375 | cur_instr->format.bytes[2], | 375 | cur_instr->format.bytes[2], |
@@ -613,7 +613,7 @@ output_listing(char *ifilename) | |||
613 | line++; | 613 | line++; |
614 | } | 614 | } |
615 | fprintf(listfile, "%03x %02x%02x%02x%02x", instrptr, | 615 | fprintf(listfile, "%03x %02x%02x%02x%02x", instrptr, |
616 | #if BYTE_ORDER == LITTLE_ENDIAN | 616 | #ifdef __LITTLE_ENDIAN |
617 | cur_instr->format.bytes[0], | 617 | cur_instr->format.bytes[0], |
618 | cur_instr->format.bytes[1], | 618 | cur_instr->format.bytes[1], |
619 | cur_instr->format.bytes[2], | 619 | cur_instr->format.bytes[2], |
diff --git a/drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h b/drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h index 3e80f07df49c..e64f802bbaaa 100644 --- a/drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h +++ b/drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h | |||
@@ -42,8 +42,10 @@ | |||
42 | * $FreeBSD$ | 42 | * $FreeBSD$ |
43 | */ | 43 | */ |
44 | 44 | ||
45 | #include <asm/byteorder.h> | ||
46 | |||
45 | struct ins_format1 { | 47 | struct ins_format1 { |
46 | #if BYTE_ORDER == LITTLE_ENDIAN | 48 | #ifdef __LITTLE_ENDIAN |
47 | uint32_t immediate : 8, | 49 | uint32_t immediate : 8, |
48 | source : 9, | 50 | source : 9, |
49 | destination : 9, | 51 | destination : 9, |
@@ -61,7 +63,7 @@ struct ins_format1 { | |||
61 | }; | 63 | }; |
62 | 64 | ||
63 | struct ins_format2 { | 65 | struct ins_format2 { |
64 | #if BYTE_ORDER == LITTLE_ENDIAN | 66 | #ifdef __LITTLE_ENDIAN |
65 | uint32_t shift_control : 8, | 67 | uint32_t shift_control : 8, |
66 | source : 9, | 68 | source : 9, |
67 | destination : 9, | 69 | destination : 9, |
@@ -79,7 +81,7 @@ struct ins_format2 { | |||
79 | }; | 81 | }; |
80 | 82 | ||
81 | struct ins_format3 { | 83 | struct ins_format3 { |
82 | #if BYTE_ORDER == LITTLE_ENDIAN | 84 | #ifdef __LITTLE_ENDIAN |
83 | uint32_t immediate : 8, | 85 | uint32_t immediate : 8, |
84 | source : 9, | 86 | source : 9, |
85 | address : 10, | 87 | address : 10, |
diff --git a/drivers/scsi/ibmvscsi/srp.h b/drivers/scsi/ibmvscsi/srp.h index 2ae5154fd89c..7d8e4c4accb9 100644 --- a/drivers/scsi/ibmvscsi/srp.h +++ b/drivers/scsi/ibmvscsi/srp.h | |||
@@ -35,7 +35,7 @@ | |||
35 | enum srp_types { | 35 | enum srp_types { |
36 | SRP_LOGIN_REQ_TYPE = 0x00, | 36 | SRP_LOGIN_REQ_TYPE = 0x00, |
37 | SRP_LOGIN_RSP_TYPE = 0xC0, | 37 | SRP_LOGIN_RSP_TYPE = 0xC0, |
38 | SRP_LOGIN_REJ_TYPE = 0x80, | 38 | SRP_LOGIN_REJ_TYPE = 0xC2, |
39 | SRP_I_LOGOUT_TYPE = 0x03, | 39 | SRP_I_LOGOUT_TYPE = 0x03, |
40 | SRP_T_LOGOUT_TYPE = 0x80, | 40 | SRP_T_LOGOUT_TYPE = 0x80, |
41 | SRP_TSK_MGMT_TYPE = 0x01, | 41 | SRP_TSK_MGMT_TYPE = 0x01, |
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index 6dfcb4fbccdd..4cdd891781b1 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c | |||
@@ -133,10 +133,12 @@ | |||
133 | /* 6.10.00 - Remove 1G Addressing Limitations */ | 133 | /* 6.10.00 - Remove 1G Addressing Limitations */ |
134 | /* 6.11.xx - Get VersionInfo buffer off the stack ! DDTS 60401 */ | 134 | /* 6.11.xx - Get VersionInfo buffer off the stack ! DDTS 60401 */ |
135 | /* 6.11.xx - Make Logical Drive Info structure safe for DMA DDTS 60639 */ | 135 | /* 6.11.xx - Make Logical Drive Info structure safe for DMA DDTS 60639 */ |
136 | /* 7.10.xx - Add highmem_io flag in SCSI Templete for 2.4 kernels */ | 136 | /* 7.10.18 - Add highmem_io flag in SCSI Templete for 2.4 kernels */ |
137 | /* - Fix path/name for scsi_hosts.h include for 2.6 kernels */ | 137 | /* - Fix path/name for scsi_hosts.h include for 2.6 kernels */ |
138 | /* - Fix sort order of 7k */ | 138 | /* - Fix sort order of 7k */ |
139 | /* - Remove 3 unused "inline" functions */ | 139 | /* - Remove 3 unused "inline" functions */ |
140 | /* 7.12.xx - Use STATIC functions whereever possible */ | ||
141 | /* - Clean up deprecated MODULE_PARM calls */ | ||
140 | /*****************************************************************************/ | 142 | /*****************************************************************************/ |
141 | 143 | ||
142 | /* | 144 | /* |
@@ -207,8 +209,8 @@ module_param(ips, charp, 0); | |||
207 | /* | 209 | /* |
208 | * DRIVER_VER | 210 | * DRIVER_VER |
209 | */ | 211 | */ |
210 | #define IPS_VERSION_HIGH "7.10" | 212 | #define IPS_VERSION_HIGH "7.12" |
211 | #define IPS_VERSION_LOW ".18 " | 213 | #define IPS_VERSION_LOW ".02 " |
212 | 214 | ||
213 | #if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__) | 215 | #if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__) |
214 | #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" | 216 | #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" |
diff --git a/drivers/scsi/ips.h b/drivers/scsi/ips.h index 480e06f4d6ae..505e967013de 100644 --- a/drivers/scsi/ips.h +++ b/drivers/scsi/ips.h | |||
@@ -87,15 +87,14 @@ | |||
87 | #define scsi_set_pci_device(sh,dev) (0) | 87 | #define scsi_set_pci_device(sh,dev) (0) |
88 | #endif | 88 | #endif |
89 | 89 | ||
90 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) | 90 | #ifndef IRQ_NONE |
91 | 91 | typedef void irqreturn_t; | |
92 | #ifndef irqreturn_t | ||
93 | typedef void irqreturn_t; | ||
94 | #endif | ||
95 | |||
96 | #define IRQ_NONE | 92 | #define IRQ_NONE |
97 | #define IRQ_HANDLED | 93 | #define IRQ_HANDLED |
98 | #define IRQ_RETVAL(x) | 94 | #define IRQ_RETVAL(x) |
95 | #endif | ||
96 | |||
97 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) | ||
99 | #define IPS_REGISTER_HOSTS(SHT) scsi_register_module(MODULE_SCSI_HA,SHT) | 98 | #define IPS_REGISTER_HOSTS(SHT) scsi_register_module(MODULE_SCSI_HA,SHT) |
100 | #define IPS_UNREGISTER_HOSTS(SHT) scsi_unregister_module(MODULE_SCSI_HA,SHT) | 99 | #define IPS_UNREGISTER_HOSTS(SHT) scsi_unregister_module(MODULE_SCSI_HA,SHT) |
101 | #define IPS_ADD_HOST(shost,device) | 100 | #define IPS_ADD_HOST(shost,device) |
@@ -123,6 +122,10 @@ | |||
123 | #ifndef min | 122 | #ifndef min |
124 | #define min(x,y) ((x) < (y) ? x : y) | 123 | #define min(x,y) ((x) < (y) ? x : y) |
125 | #endif | 124 | #endif |
125 | |||
126 | #ifndef __iomem /* For clean compiles in earlier kernels without __iomem annotations */ | ||
127 | #define __iomem | ||
128 | #endif | ||
126 | 129 | ||
127 | #define pci_dma_hi32(a) ((a >> 16) >> 16) | 130 | #define pci_dma_hi32(a) ((a >> 16) >> 16) |
128 | #define pci_dma_lo32(a) (a & 0xffffffff) | 131 | #define pci_dma_lo32(a) (a & 0xffffffff) |
@@ -1206,13 +1209,13 @@ typedef struct { | |||
1206 | 1209 | ||
1207 | #define IPS_VER_MAJOR 7 | 1210 | #define IPS_VER_MAJOR 7 |
1208 | #define IPS_VER_MAJOR_STRING "7" | 1211 | #define IPS_VER_MAJOR_STRING "7" |
1209 | #define IPS_VER_MINOR 10 | 1212 | #define IPS_VER_MINOR 12 |
1210 | #define IPS_VER_MINOR_STRING "10" | 1213 | #define IPS_VER_MINOR_STRING "12" |
1211 | #define IPS_VER_BUILD 18 | 1214 | #define IPS_VER_BUILD 02 |
1212 | #define IPS_VER_BUILD_STRING "18" | 1215 | #define IPS_VER_BUILD_STRING "02" |
1213 | #define IPS_VER_STRING "7.10.18" | 1216 | #define IPS_VER_STRING "7.12.02" |
1214 | #define IPS_RELEASE_ID 0x00020000 | 1217 | #define IPS_RELEASE_ID 0x00020000 |
1215 | #define IPS_BUILD_IDENT 731 | 1218 | #define IPS_BUILD_IDENT 761 |
1216 | #define IPS_LEGALCOPYRIGHT_STRING "(C) Copyright IBM Corp. 1994, 2002. All Rights Reserved." | 1219 | #define IPS_LEGALCOPYRIGHT_STRING "(C) Copyright IBM Corp. 1994, 2002. All Rights Reserved." |
1217 | #define IPS_ADAPTECCOPYRIGHT_STRING "(c) Copyright Adaptec, Inc. 2002 to 2004. All Rights Reserved." | 1220 | #define IPS_ADAPTECCOPYRIGHT_STRING "(c) Copyright Adaptec, Inc. 2002 to 2004. All Rights Reserved." |
1218 | #define IPS_DELLCOPYRIGHT_STRING "(c) Copyright Dell 2004. All Rights Reserved." | 1221 | #define IPS_DELLCOPYRIGHT_STRING "(c) Copyright Dell 2004. All Rights Reserved." |
@@ -1223,12 +1226,12 @@ typedef struct { | |||
1223 | #define IPS_VER_SERVERAID2 "2.88.13" | 1226 | #define IPS_VER_SERVERAID2 "2.88.13" |
1224 | #define IPS_VER_NAVAJO "2.88.13" | 1227 | #define IPS_VER_NAVAJO "2.88.13" |
1225 | #define IPS_VER_SERVERAID3 "6.10.24" | 1228 | #define IPS_VER_SERVERAID3 "6.10.24" |
1226 | #define IPS_VER_SERVERAID4H "7.10.11" | 1229 | #define IPS_VER_SERVERAID4H "7.12.02" |
1227 | #define IPS_VER_SERVERAID4MLx "7.10.18" | 1230 | #define IPS_VER_SERVERAID4MLx "7.12.02" |
1228 | #define IPS_VER_SARASOTA "7.10.18" | 1231 | #define IPS_VER_SARASOTA "7.12.02" |
1229 | #define IPS_VER_MARCO "7.10.18" | 1232 | #define IPS_VER_MARCO "7.12.02" |
1230 | #define IPS_VER_SEBRING "7.10.18" | 1233 | #define IPS_VER_SEBRING "7.12.02" |
1231 | #define IPS_VER_KEYWEST "7.10.18" | 1234 | #define IPS_VER_KEYWEST "7.12.02" |
1232 | 1235 | ||
1233 | /* Compatability IDs for various adapters */ | 1236 | /* Compatability IDs for various adapters */ |
1234 | #define IPS_COMPAT_UNKNOWN "" | 1237 | #define IPS_COMPAT_UNKNOWN "" |
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index 0291a8fb654d..0a7839db5752 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
@@ -4149,12 +4149,10 @@ static int __init init_st(void) | |||
4149 | do_create_driverfs_files(); | 4149 | do_create_driverfs_files(); |
4150 | return 0; | 4150 | return 0; |
4151 | } | 4151 | } |
4152 | if (st_sysfs_class) | ||
4153 | class_destroy(st_sysfs_class); | ||
4154 | unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0), | 4152 | unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0), |
4155 | |||
4156 | ST_MAX_TAPE_ENTRIES); | 4153 | ST_MAX_TAPE_ENTRIES); |
4157 | } | 4154 | } |
4155 | class_destroy(st_sysfs_class); | ||
4158 | 4156 | ||
4159 | printk(KERN_ERR "Unable to get major %d for SCSI tapes\n", SCSI_TAPE_MAJOR); | 4157 | printk(KERN_ERR "Unable to get major %d for SCSI tapes\n", SCSI_TAPE_MAJOR); |
4160 | return 1; | 4158 | return 1; |
@@ -4162,13 +4160,11 @@ static int __init init_st(void) | |||
4162 | 4160 | ||
4163 | static void __exit exit_st(void) | 4161 | static void __exit exit_st(void) |
4164 | { | 4162 | { |
4165 | if (st_sysfs_class) | ||
4166 | class_destroy(st_sysfs_class); | ||
4167 | st_sysfs_class = NULL; | ||
4168 | do_remove_driverfs_files(); | 4163 | do_remove_driverfs_files(); |
4169 | scsi_unregister_driver(&st_template.gendrv); | 4164 | scsi_unregister_driver(&st_template.gendrv); |
4170 | unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0), | 4165 | unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0), |
4171 | ST_MAX_TAPE_ENTRIES); | 4166 | ST_MAX_TAPE_ENTRIES); |
4167 | class_destroy(st_sysfs_class); | ||
4172 | kfree(scsi_tapes); | 4168 | kfree(scsi_tapes); |
4173 | printk(KERN_INFO "st: Unloaded.\n"); | 4169 | printk(KERN_INFO "st: Unloaded.\n"); |
4174 | } | 4170 | } |