Skip to content
Snippets Groups Projects
Commit 87f59d82 authored by Johann Lombardi's avatar Johann Lombardi
Browse files

Branch b1_6

b=12755

Rollback 12755 since it breaks the SLES9 build.
parent da860ef4
No related merge requests found
...@@ -107,12 +107,6 @@ Bugzilla : 11802 ...@@ -107,12 +107,6 @@ Bugzilla : 11802
Description: lustre support for RHEL5 Description: lustre support for RHEL5
Details : Add support for RHEL5. Details : Add support for RHEL5.
Severity : normal
Frequency : when using more than 256 SCSI disks on a single server
Bugzilla : 12755
Description: Kernel BUG: sd_iostats_bump: unexpected disk index
Details : a kernel BUG is hit when using more than 256 SCSI disks.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
2007-07-30 Cluster File Systems, Inc. <info@clusterfs.com> 2007-07-30 Cluster File Systems, Inc. <info@clusterfs.com>
......
Index: linux-2.6.9/drivers/scsi/Kconfig Index: linux-2.6.9-5.0.3.EL/drivers/scsi/Kconfig
===================================================================
Index: linux+rhel4+chaos/drivers/scsi/Kconfig
=================================================================== ===================================================================
--- linux-2.6.9.orig/drivers/scsi/Kconfig 2007-08-02 09:26:17.000000000 +0200 --- linux+rhel4+chaos.orig/drivers/scsi/Kconfig
+++ linux-2.6.9/drivers/scsi/Kconfig 2007-08-02 09:26:21.000000000 +0200 +++ linux+rhel4+chaos/drivers/scsi/Kconfig
@@ -61,6 +61,14 @@ config SCSI_DUMP @@ -61,6 +61,14 @@ config SCSI_DUMP
help help
SCSI dump support SCSI dump support
...@@ -17,10 +19,10 @@ Index: linux-2.6.9/drivers/scsi/Kconfig ...@@ -17,10 +19,10 @@ Index: linux-2.6.9/drivers/scsi/Kconfig
config CHR_DEV_ST config CHR_DEV_ST
tristate "SCSI tape support" tristate "SCSI tape support"
depends on SCSI depends on SCSI
Index: linux-2.6.9/drivers/scsi/sd.c Index: linux+rhel4+chaos/drivers/scsi/sd.c
=================================================================== ===================================================================
--- linux-2.6.9.orig/drivers/scsi/sd.c 2007-08-02 09:26:17.000000000 +0200 --- linux+rhel4+chaos.orig/drivers/scsi/sd.c
+++ linux-2.6.9/drivers/scsi/sd.c 2007-08-02 09:29:31.000000000 +0200 +++ linux+rhel4+chaos/drivers/scsi/sd.c
@@ -63,6 +63,38 @@ @@ -63,6 +63,38 @@
#include "scsi_logging.h" #include "scsi_logging.h"
...@@ -60,27 +62,15 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -60,27 +62,15 @@ Index: linux-2.6.9/drivers/scsi/sd.c
/* /*
* More than enough for everybody ;) The huge number of majors * More than enough for everybody ;) The huge number of majors
* is a leftover from 16bit dev_t days, we don't really need that * is a leftover from 16bit dev_t days, we don't really need that
@@ -71,10 +103,18 @@ @@ -76,6 +108,7 @@
#define SD_MAJORS 16
/*
- * This is limited by the naming scheme enforced in sd_probe,
+ * SD_MAX_DISKS is limited by the naming scheme enforced in sd_probe,
* add another character to it if you really need more disks.
+ *
+ * SD_STATS must not be less than SD_MAX_DISKS and, is limited by 131072/8
+ * for sd_iostats kmalloc (see kmalloc_sizes.h)
*/ */
+#if (defined(CONFIG_SD_IOSTATS) && defined(CONFIG_PROC_FS))
+#define SD_STATS 16384
+#define SD_MAX_DISKS SD_STATS
+#else
#define SD_MAX_DISKS (((26 * 26) + 26 + 1) * 26) #define SD_MAX_DISKS (((26 * 26) + 26 + 1) * 26)
+#endif
+#define SD_STATS 256
/* /*
* Time out in seconds for disks and Magneto-opticals (which are slower). * Time out in seconds for disks and Magneto-opticals (which are slower).
@@ -278,6 +318,9 @@ static int sd_init_command(struct scsi_c */
@@ -278,6 +311,9 @@ static int sd_init_command(struct scsi_c
SCSI_LOG_HLQUEUE(2, printk("%s : block=%llu\n", SCSI_LOG_HLQUEUE(2, printk("%s : block=%llu\n",
disk->disk_name, (unsigned long long)block)); disk->disk_name, (unsigned long long)block));
...@@ -90,7 +80,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -90,7 +80,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
/* /*
* If we have a 1K hardware sectorsize, prevent access to single * If we have a 1K hardware sectorsize, prevent access to single
* 512 byte sectors. In theory we could handle this - in fact * 512 byte sectors. In theory we could handle this - in fact
@@ -474,6 +517,7 @@ static int sd_open(struct inode *inode, @@ -474,6 +510,7 @@ static int sd_open(struct inode *inode,
scsi_set_medium_removal(sdev, SCSI_REMOVAL_PREVENT); scsi_set_medium_removal(sdev, SCSI_REMOVAL_PREVENT);
} }
...@@ -98,7 +88,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -98,7 +88,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
return 0; return 0;
error_out: error_out:
@@ -500,8 +544,20 @@ static int sd_release(struct inode *inod @@ -500,8 +537,20 @@ static int sd_release(struct inode *inod
SCSI_LOG_HLQUEUE(3, printk("sd_release: disk=%s\n", disk->disk_name)); SCSI_LOG_HLQUEUE(3, printk("sd_release: disk=%s\n", disk->disk_name));
...@@ -121,7 +111,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -121,7 +111,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW); scsi_set_medium_removal(sdev, SCSI_REMOVAL_ALLOW);
} }
@@ -1575,6 +1631,342 @@ static void sd_shutdown(struct device *d @@ -1575,6 +1624,342 @@ static void sd_shutdown(struct device *d
sd_sync_cache(sdp); sd_sync_cache(sdp);
} }
...@@ -464,7 +454,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -464,7 +454,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
/** /**
* init_sd - entry point for this driver (both when built in or when * init_sd - entry point for this driver (both when built in or when
* a module). * a module).
@@ -1584,6 +1976,7 @@ static void sd_shutdown(struct device *d @@ -1584,6 +1969,7 @@ static void sd_shutdown(struct device *d
static int __init init_sd(void) static int __init init_sd(void)
{ {
int majors = 0, i; int majors = 0, i;
...@@ -472,7 +462,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -472,7 +462,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point\n")); SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point\n"));
@@ -1594,7 +1987,10 @@ static int __init init_sd(void) @@ -1594,7 +1980,10 @@ static int __init init_sd(void)
if (!majors) if (!majors)
return -ENODEV; return -ENODEV;
...@@ -484,7 +474,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -484,7 +474,7 @@ Index: linux-2.6.9/drivers/scsi/sd.c
} }
/** /**
@@ -1608,6 +2004,7 @@ static void __exit exit_sd(void) @@ -1608,6 +1997,7 @@ static void __exit exit_sd(void)
SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n")); SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n"));
...@@ -492,10 +482,10 @@ Index: linux-2.6.9/drivers/scsi/sd.c ...@@ -492,10 +482,10 @@ Index: linux-2.6.9/drivers/scsi/sd.c
scsi_unregister_driver(&sd_template.gendrv); scsi_unregister_driver(&sd_template.gendrv);
for (i = 0; i < SD_MAJORS; i++) for (i = 0; i < SD_MAJORS; i++)
unregister_blkdev(sd_major(i), "sd"); unregister_blkdev(sd_major(i), "sd");
Index: linux-2.6.9/drivers/scsi/scsi_proc.c Index: linux+rhel4+chaos/drivers/scsi/scsi_proc.c
=================================================================== ===================================================================
--- linux-2.6.9.orig/drivers/scsi/scsi_proc.c 2007-08-02 09:26:17.000000000 +0200 --- linux+rhel4+chaos.orig/drivers/scsi/scsi_proc.c
+++ linux-2.6.9/drivers/scsi/scsi_proc.c 2007-08-02 09:26:21.000000000 +0200 +++ linux+rhel4+chaos/drivers/scsi/scsi_proc.c
@@ -38,7 +38,8 @@ @@ -38,7 +38,8 @@
/* 4K page size, but our output routines, use some slack for overruns */ /* 4K page size, but our output routines, use some slack for overruns */
#define PROC_BLOCK_SIZE (3*1024) #define PROC_BLOCK_SIZE (3*1024)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment