patch-2.4.2 linux/drivers/block/xd.c
Next file: linux/drivers/block/z2ram.c
Previous file: linux/drivers/block/rd.c
Back to the patch index
Back to the overall index
- Lines: 56
- Date:
Fri Feb 16 16:02:35 2001
- Orig file:
v2.4.1/linux/drivers/block/xd.c
- Orig date:
Thu Oct 26 23:35:47 2000
diff -u --recursive --new-file v2.4.1/linux/drivers/block/xd.c linux/drivers/block/xd.c
@@ -28,6 +28,9 @@
* Recovered DMA access. Abridged messages. Added support for DTC5051CX,
* WD1002-27X & XEBEC controllers. Driver uses now some jumper settings.
* Extended ioctl() support.
+ *
+ * Bugfix: 15/02/01, Paul G. - inform queue layer of tiny xd_maxsect.
+ *
*/
#include <linux/module.h>
@@ -59,7 +62,7 @@
#define XD_INIT_DISK_DELAY (30*HZ/1000) /* 30 ms delay during disk initialization */
/* Above may need to be increased if a problem with the 2nd drive detection
- (ST11M controller) or resetting a controler (WD) appears */
+ (ST11M controller) or resetting a controller (WD) appears */
XD_INFO xd_info[XD_MAXDRIVES];
@@ -118,6 +121,7 @@
static struct hd_struct xd_struct[XD_MAXDRIVES << 6];
static int xd_sizes[XD_MAXDRIVES << 6], xd_access[XD_MAXDRIVES];
static int xd_blocksizes[XD_MAXDRIVES << 6];
+static int xd_maxsect[XD_MAXDRIVES << 6];
extern struct block_device_operations xd_fops;
@@ -242,6 +246,10 @@
printk("xd: unable to get IRQ%d\n",xd_irq);
}
+ /* xd_maxsectors depends on controller - so set after detection */
+ for(i=0; i<(XD_MAXDRIVES << 6); i++) xd_maxsect[i] = xd_maxsectors;
+ max_sectors[MAJOR_NR] = xd_maxsect;
+
for (i = 0; i < xd_drives; i++) {
xd_valid[i] = 1;
register_disk(&xd_gendisk, MKDEV(MAJOR_NR,i<<6), 1<<6, &xd_fops,
@@ -877,7 +885,7 @@
xd_setparam(CMD_WDSETPARAM,drive,xd_info[drive].heads,xd_info[drive].cylinders,
((u_short *) (buf))[0xD8],((u_short *) (buf))[0xDA],buf[0x1B4]);
}
- /* 1002 based RLL controler requests converted addressing, but reports physical
+ /* 1002 based RLL controller requests converted addressing, but reports physical
(physical 26 sec., logical 17 sec.)
1004 based ???? */
if (rll & wd_1002) {
@@ -1058,7 +1066,7 @@
xd_info[drive].control = 0;
}
-/* xd_setup: initialise controler from command line parameters */
+/* xd_setup: initialise controller from command line parameters */
void __init do_xd_setup (int *integers)
{
switch (integers[0]) {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)