2004-06-11 17:41:54

by Martin Schwidefsky

[permalink] [raw]
Subject: [PATCH] s390: xpram device driver.

[PATCH] s390: xpram device driver.

From: Martin Schwidefsky <[email protected]>

xpram device driver changes:
- Allocate request queue with blk_alloc_queue.

Signed-off-by: Martin Schwidefsky <[email protected]>

diffstat:
drivers/s390/block/xpram.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)

diff -urN linux-2.6/drivers/s390/block/xpram.c linux-2.6-s390/drivers/s390/block/xpram.c
--- linux-2.6/drivers/s390/block/xpram.c Fri Jun 11 19:09:24 2004
+++ linux-2.6-s390/drivers/s390/block/xpram.c Fri Jun 11 19:09:58 2004
@@ -423,7 +423,7 @@
return 0;
}

-static struct request_queue xpram_queue;
+static struct request_queue *xpram_queue;

static int __init xpram_setup_blkdev(void)
{
@@ -450,8 +450,13 @@
* Assign the other needed values: make request function, sizes and
* hardsect size. All the minor devices feature the same value.
*/
- blk_queue_make_request(&xpram_queue, xpram_make_request);
- blk_queue_hardsect_size(&xpram_queue, 4096);
+ xpram_queue = blk_alloc_queue(GFP_KERNEL);
+ if (!xpram_queue) {
+ rc = -ENOMEM;
+ goto out_unreg;
+ }
+ blk_queue_make_request(xpram_queue, xpram_make_request);
+ blk_queue_hardsect_size(xpram_queue, 4096);

/*
* Setup device structures.
@@ -467,7 +472,7 @@
disk->first_minor = i;
disk->fops = &xpram_devops;
disk->private_data = &xpram_devices[i];
- disk->queue = &xpram_queue;
+ disk->queue = xpram_queue;
sprintf(disk->disk_name, "slram%d", i);
sprintf(disk->devfs_name, "slram/%d", i);
set_capacity(disk, xpram_sizes[i] << 1);
@@ -475,6 +480,9 @@
}

return 0;
+out_unreg:
+ devfs_remove("slram");
+ unregister_blkdev(XPRAM_MAJOR, XPRAM_NAME);
out:
while (i--)
put_disk(xpram_disks[i]);
@@ -493,6 +501,7 @@
}
unregister_blkdev(XPRAM_MAJOR, XPRAM_NAME);
devfs_remove("slram");
+ blk_cleanup_queue(xpram_queue);
sysdev_unregister(&xpram_sys_device);
sysdev_class_unregister(&xpram_sysclass);
}