Re: My SCSI HD has 34 heads, not 255...

Tom Zerucha (root@mars.ceddec.com)
Thu, 13 Jun 1996 15:01:08 -0400 (EDT)


Here is the patch again (updated for 1.3.98 - should work on 2.0.0):

diff -Bbur l1398/Documentation/Configure.help
l1398.orig/Documentation/Configure.help
--- l1398/Documentation/Configure.help Fri May 3 04:11:16 1996
+++ l1398.orig/Documentation/Configure.help Tue May 7 17:10:56 1996
@@ -1182,6 +1182,17 @@
understand if you enable this; it will enlarge your kernel by about
12KB. If in doubt, say Y.

+Automatic Disk Geometry Translation
+CONFIG_SCSI_AUTO_BIOSP
+ When this is set to Y, Linux will examine the partition table to
+ determine the mapping used under the other operating systems (e.g.
+ DOS), and set these parameters to the determined values, or if the
+ disk has no valid partition table, to an optimal value. Set this
+ to N if you are have partitioned with an existing driver. Set this
+ to Y if you are reinstalling and the partition table is strange
+ under fdisk or if you wish to use one hard drive on more than one
+ Linux system with different controllers.
+
AdvanSys SCSI support
CONFIG_SCSI_ADVANSYS
This is a driver for all SCSI host adaptors manufactured by
diff -Bbur l1398/drivers/scsi/Config.in l1398.orig/drivers/scsi/Config.in
--- l1398/drivers/scsi/Config.in Sat Apr 20 04:18:14 1996
+++ l1398.orig/drivers/scsi/Config.in Mon May 6 18:14:03 1996
@@ -11,6 +11,10 @@

bool 'Verbose SCSI error reporting (kernel size +=12K)'
CONFIG_SCSI_CONSTANTS

+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+ bool 'Automatic Disk Geometry determination'
CONFIG_SCSI_AUTO_BIOSP
+fi
+
mainmenu_option next_comment
comment 'SCSI low-level drivers'

diff -Bbur l1398/drivers/scsi/sd_ioctl.c
l1398.orig/drivers/scsi/sd_ioctl.c
--- l1398/drivers/scsi/sd_ioctl.c Thu May 2 00:48:54 1996
+++ l1398.orig/drivers/scsi/sd_ioctl.c Tue May 7 17:16:20 1996
@@ -4,6 +4,7 @@
* ioctl handling for SCSI disks
*/

+#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/mm.h>
@@ -44,11 +45,14 @@

/* override with calculated, extended default, or driver values */

+#ifndef CONFIG_SCSI_AUTO_BIOSP
if(host->hostt->bios_param != NULL)
host->hostt->bios_param(&rscsi_disks[MINOR(dev) >> 4],
dev,
&diskinfo[0]);
- else scsicam_bios_param(&rscsi_disks[MINOR(dev) >> 4],
+ else
+#endif
+ scsicam_bios_param(&rscsi_disks[MINOR(dev) >> 4],
dev, &diskinfo[0]);

put_user(diskinfo[0], &loc->heads);