/*
Initialize the I/O Request Queue.
*/
- RequestQueue = &Controller->RequestQueue;
- blk_init_queue(RequestQueue, DAC960_RequestFunction, &Controller->queue_lock);
+ RequestQueue = blk_init_queue(DAC960_RequestFunction,&Controller->queue_lock);
+ if (!RequestQueue) {
+ unregister_blkdev(MajorNumber, "dac960");
+ return false;
+ }
+ Controller->RequestQueue = RequestQueue;
blk_queue_bounce_limit(RequestQueue, Controller->BounceBufferLimit);
RequestQueue->queuedata = Controller;
blk_queue_max_hw_segments(RequestQueue,
for (n = 0; n < DAC960_MaxLogicalDrives; n++) {
struct gendisk *disk = Controller->disks[n];
sprintf(disk->disk_name, "rd/c%dd%d", Controller->ControllerNumber, n);
+ sprintf(disk->devfs_name, "rd/c%dd%d", Controller->ControllerNumber, n);
disk->major = MajorNumber;
disk->first_minor = n << DAC960_MaxPartitionsBits;
disk->fops = &DAC960_BlockDeviceOperations;
/*
Remove the I/O Request Queue.
*/
- blk_cleanup_queue(&Controller->RequestQueue);
+ blk_cleanup_queue(Controller->RequestQueue);
}
/*
if (!Controller->disks[i])
goto Failure;
Controller->disks[i]->private_data = (void *)i;
- Controller->disks[i]->queue = &Controller->RequestQueue;
+ Controller->disks[i]->queue = Controller->RequestQueue;
}
init_waitqueue_head(&Controller->CommandWaitQueue);
init_waitqueue_head(&Controller->HealthStatusWaitQueue);
static boolean DAC960_ProcessRequest(DAC960_Controller_T *Controller,
boolean WaitForCommand)
{
- struct request_queue *RequestQueue = &Controller->RequestQueue;
+ struct request_queue *RequestQueue = Controller->RequestQueue;
struct request *Request;
DAC960_Command_T *Command;
Command->BlockCount = Request->nr_sectors;
Command->Request = Request;
blkdev_dequeue_request(Request);
- Command->SegmentCount = blk_rq_map_sg(&Controller->RequestQueue,
+ Command->SegmentCount = blk_rq_map_sg(Controller->RequestQueue,
Command->Request, Command->cmd_sglist);
/* pci_map_sg MAY change the value of SegCount */
Command->SegmentCount = pci_map_sg(Command->PciDevice, Command->cmd_sglist,
* code should almost never be called, just go with a
* simple coding.
*/
- (void)blk_rq_map_sg(&Controller->RequestQueue, Command->Request,
+ (void)blk_rq_map_sg(Controller->RequestQueue, Command->Request,
Command->cmd_sglist);
(void)pci_map_sg(Command->PciDevice, Command->cmd_sglist, 1,