* [PATCH 2.6 ] MPT Fusion driver 3.01.01 update
@ 2004-03-11 17:32 Moore, Eric Dean
2004-03-11 19:13 ` Marc Bevand
0 siblings, 1 reply; 2+ messages in thread
From: Moore, Eric Dean @ 2004-03-11 17:32 UTC (permalink / raw)
To: linux-scsi; +Cc: James.Bottomley
[-- Attachment #1: Type: text/plain, Size: 685 bytes --]
This is an update for the MPT Fusion drivers 2.6 kernel.
Version 3.01.01.
This is a fix for poor performance in RAID Volumes.
The dvStatus was being cleared for hidden physical disks
when mptscsih_slave_destroy is called.
Also, I have fixed the warning comming from mptscsih_reset_timeouts.
You can download full source as well as the patches for this
driver at:
ftp://ftp.lsil.com/HostAdapterDrivers/linux/FiberChannel/2.6-patches/3.01.01
This attached patch is against the 3.01.00 driver.
Eric Moore
Staff Engineer
Standard Storage Products Division
LSI Logic Corporation
4420 Arrowswest Drive
Colorado Springs, CO 80907
Email: emoore@lsil.com
Web: http://www.lsilogic.com/
[-- Attachment #2: mptlinux-3.01.01.patch --]
[-- Type: application/octet-stream, Size: 3512 bytes --]
diff -uarN b/drivers/message/fusion/mptbase.h a/drivers/message/fusion/mptbase.h
--- b/drivers/message/fusion/mptbase.h 2004-03-05 12:01:39.000000000 -0700
+++ a/drivers/message/fusion/mptbase.h 2004-03-11 08:41:17.000000000 -0700
@@ -81,8 +81,8 @@
#define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR
#endif
-#define MPT_LINUX_VERSION_COMMON "3.01.00"
-#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.00"
+#define MPT_LINUX_VERSION_COMMON "3.01.01"
+#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.01"
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
#define show_mptmod_ver(s,ver) \
diff -uarN b/drivers/message/fusion/mptscsih.c a/drivers/message/fusion/mptscsih.c
--- b/drivers/message/fusion/mptscsih.c 2004-03-05 12:01:39.000000000 -0700
+++ a/drivers/message/fusion/mptscsih.c 2004-03-11 08:55:49.000000000 -0700
@@ -199,8 +199,8 @@
static int mptscsih_setup(char *str);
/* module entry point */
-static int __init mptscsih_init (void);
-static void __exit mptscsih_exit (void);
+static int __init mptscsih_init (void);
+static void __exit mptscsih_exit (void);
static int mptscsih_probe (struct pci_dev *, const struct pci_device_id *);
static void mptscsih_remove(struct pci_dev *);
@@ -1067,10 +1067,14 @@
Scsi_Cmnd *SCpnt;
int ii;
int max = hd->ioc->req_depth;
+
for (ii= 0; ii < max; ii++) {
if ((SCpnt = hd->ScsiLookup[ii]) != NULL) {
- mod_timer(&SCpnt->eh_timeout, jiffies + (HZ * 60));
+ /* calling mod_timer() panics in 2.6 kernel...
+ * need to investigate
+ */
+// mod_timer(&SCpnt->eh_timeout, jiffies + (HZ * 60));
dtmprintk((MYIOC_s_WARN_FMT "resetting SCpnt=%p timeout + 60HZ",
(hd && hd->ioc) ? hd->ioc->name : "ioc?", SCpnt));
}
@@ -1978,8 +1982,8 @@
* mptscsih_exit - Unregisters MPT adapter(s)
*
*/
-static void
-__exit mptscsih_exit(void)
+static void __exit
+mptscsih_exit(void)
{
MPT_ADAPTER *ioc;
@@ -3339,6 +3343,7 @@
struct Scsi_Host *host = device->host;
MPT_SCSI_HOST *hd;
VirtDevice *vdev;
+ int raid_volume=0;
hd = (MPT_SCSI_HOST *)host->hostdata;
@@ -3361,25 +3366,33 @@
kfree(hd->Targets[device->id]);
hd->Targets[device->id] = NULL;
- if (hd->is_spi) {
+ if (!hd->is_spi)
+ return;
+
+ if((hd->ioc->spi_data.isRaid) && (hd->ioc->spi_data.pIocPg3)) {
+ int i;
+ for(i=0;i<hd->ioc->spi_data.pIocPg3->NumPhysDisks &&
+ raid_volume==0;i++)
+
+ if(device->id ==
+ hd->ioc->spi_data.pIocPg3->PhysDisk[i].PhysDiskNum) {
+ raid_volume=1;
+ hd->ioc->spi_data.forceDv |=
+ MPT_SCSICFG_RELOAD_IOC_PG3;
+ }
+ }
+
+ if(!raid_volume){
hd->ioc->spi_data.dvStatus[device->id] =
MPT_SCSICFG_NEGOTIATE;
if (hd->negoNvram == 0)
hd->ioc->spi_data.dvStatus[device->id]
|= MPT_SCSICFG_DV_NOT_DONE;
-
- /* Don't alter isRaid, not allowed to move
- * volumes on a running system.
- */
- if (hd->ioc->spi_data.isRaid & (1 <<
- (device->id)))
- hd->ioc->spi_data.forceDv |=
- MPT_SCSICFG_RELOAD_IOC_PG3;
}
}
}
-
+
return;
}
@@ -3693,12 +3706,8 @@
*/
hd->resetPending = 1;
-#if 0
- /* calling mod_timer() panics in 2.6 kernel...
- * need to investigate
- */
mptscsih_reset_timeouts (hd);
-#endif
+
} else if (reset_phase == MPT_IOC_PRE_RESET) {
dtmprintk((MYIOC_s_WARN_FMT "Pre-Diag Reset\n", ioc->name));
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 2.6 ] MPT Fusion driver 3.01.01 update
2004-03-11 17:32 [PATCH 2.6 ] MPT Fusion driver 3.01.01 update Moore, Eric Dean
@ 2004-03-11 19:13 ` Marc Bevand
0 siblings, 0 replies; 2+ messages in thread
From: Marc Bevand @ 2004-03-11 19:13 UTC (permalink / raw)
To: linux-scsi
Moore, Eric Dean wrote:
> This is an update for the MPT Fusion drivers 2.6 kernel.
> Version 3.01.01.
>
> This is a fix for poor performance in RAID Volumes.
> The dvStatus was being cleared for hidden physical disks
> when mptscsih_slave_destroy is called.
Are these poor performances related to [1] (I encounter the same problem) ?
If so, do you plan to have a fix for the 2.4 kernel ? Thanks.
[1] http://testing.lkml.org/slashdot.php?mid=432911
--
Marc Bevand
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-03-11 19:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-11 17:32 [PATCH 2.6 ] MPT Fusion driver 3.01.01 update Moore, Eric Dean
2004-03-11 19:13 ` Marc Bevand
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.