patch-2.3.40 linux/drivers/block/cpqarray.c
Next file: linux/drivers/block/cy82c693.c
Previous file: linux/drivers/block/cmd64x.c
Back to the patch index
Back to the overall index
- Lines: 96
- Date:
Tue Jan 18 18:54:21 2000
- Orig file:
v2.3.39/linux/drivers/block/cpqarray.c
- Orig date:
Tue Jan 11 22:31:39 2000
diff -u --recursive --new-file v2.3.39/linux/drivers/block/cpqarray.c linux/drivers/block/cpqarray.c
@@ -171,9 +171,8 @@
int length, int *eof, void *data) {}
#endif
-static void ida_geninit(struct gendisk *g)
+static void ida_geninit(int ctlr)
{
- int ctlr = g-ida_gendisk;
int i,j;
drv_info_t *drv;
@@ -317,13 +316,6 @@
cpqarray_init();
if (nr_ctlr == 0)
return -EIO;
-
- for(i=0; i<nr_ctlr; i++) {
- ida_geninit(&ida_gendisk[i]);
- for(j=0; j<NWD; j++)
- if (ida_sizes[(i<<CTLR_SHIFT) + (j<<NWD_SHIFT)])
- resetup_one_dev(&ida_gendisk[i], j);
- }
return 0;
}
@@ -375,7 +367,7 @@
do_ida_request4, do_ida_request5,
do_ida_request6, do_ida_request7,
};
- int i;
+ int i,j;
/* detect controllers */
cpqarray_pci_detect();
@@ -460,22 +452,21 @@
hba[i]->access.set_intr_mask(hba[i], FIFO_NOT_EMPTY);
ida_procinit(i);
- ida_gendisk[i].major = MAJOR_NR + i;
- ida_gendisk[i].major_name = "ida";
- ida_gendisk[i].minor_shift = NWD_SHIFT;
- ida_gendisk[i].max_p = 16;
- ida_gendisk[i].max_nr = 16;
- ida_gendisk[i].init = ida_geninit;
- ida_gendisk[i].part = ida + (i*256);
- ida_gendisk[i].sizes = ida_sizes + (i*256);
- /* ida_gendisk[i].nr_real is handled by getgeometry */
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR + i), request_fns[i]);
blk_queue_headactive(BLK_DEFAULT_QUEUE(MAJOR_NR + i), 0);
blksize_size[MAJOR_NR+i] = ida_blocksizes + (i*256);
hardsect_size[MAJOR_NR+i] = ida_hardsizes + (i*256);
+
read_ahead[MAJOR_NR+i] = READ_AHEAD;
+ ida_gendisk[i].major = MAJOR_NR + i;
+ ida_gendisk[i].major_name = "ida";
+ ida_gendisk[i].minor_shift = NWD_SHIFT;
+ ida_gendisk[i].max_p = 16;
+ ida_gendisk[i].part = ida + (i*256);
+ ida_gendisk[i].sizes = ida_sizes + (i*256);
+ /* ida_gendisk[i].nr_real is handled by getgeometry */
/* Get on the disk list */
ida_gendisk[i].next = gendisk_head;
@@ -487,6 +478,10 @@
hba[i]->timer.function = ida_timer;
add_timer(&hba[i]->timer);
+ ida_geninit(i);
+ for(j=0; j<NWD; j++)
+ register_disk(&ida_gendisk[i], MKDEV(MAJOR_NR+i,j<<4),
+ 16, &ida_fops, hba[i]->drv[j].nr_blks);
}
/* done ! */
return;
@@ -1494,7 +1489,7 @@
getgeometry(ctlr);
hba[ctlr]->access.set_intr_mask(hba[ctlr], FIFO_NOT_EMPTY);
- ida_geninit(&ida_gendisk[ctlr]);
+ ida_geninit(ctlr);
for(i=0; i<NWD; i++)
if (ida_sizes[(ctlr<<CTLR_SHIFT) + (i<<NWD_SHIFT)])
revalidate_logvol(dev+(i<<NWD_SHIFT), 2);
@@ -1545,8 +1540,8 @@
blksize_size[MAJOR_NR+ctlr][minor] = 1024;
}
- gdev->part[start].nr_sects = hba[ctlr]->drv[target].nr_blks;
- resetup_one_dev(gdev, target);
+ /* 16 minors per disk... */
+ grok_partitions(gdev, target, 16, hba[ctlr]->drv[target].nr_blks);
hba[ctlr]->drv[target].usage_count--;
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)