Commit 3b822c88 authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] Fix pd.c for new queue allocation

From A1tmblwd@netscape.net
parent 89eea93b
...@@ -654,7 +654,7 @@ static int pd_probe_drive(struct pd_unit *disk) ...@@ -654,7 +654,7 @@ static int pd_probe_drive(struct pd_unit *disk)
return pd_identify(disk); return pd_identify(disk);
} }
static struct request_queue pd_queue; static struct request_queue *pd_queue;
static int pd_detect(void) static int pd_detect(void)
{ {
...@@ -704,7 +704,7 @@ static int pd_detect(void) ...@@ -704,7 +704,7 @@ static int pd_detect(void)
set_capacity(p, disk->capacity); set_capacity(p, disk->capacity);
disk->gd = p; disk->gd = p;
p->private_data = disk; p->private_data = disk;
p->queue = &pd_queue; p->queue = pd_queue;
add_disk(p); add_disk(p);
} }
} }
...@@ -782,7 +782,7 @@ static inline void next_request(int success) ...@@ -782,7 +782,7 @@ static inline void next_request(int success)
spin_lock_irqsave(&pd_lock, saved_flags); spin_lock_irqsave(&pd_lock, saved_flags);
end_request(pd_req, success); end_request(pd_req, success);
pd_busy = 0; pd_busy = 0;
do_pd_request(&pd_queue); do_pd_request(pd_queue);
spin_unlock_irqrestore(&pd_lock, saved_flags); spin_unlock_irqrestore(&pd_lock, saved_flags);
} }
...@@ -890,20 +890,30 @@ static int __init pd_init(void) ...@@ -890,20 +890,30 @@ static int __init pd_init(void)
{ {
if (disable) if (disable)
return -1; return -1;
if (register_blkdev(major, name))
return -1;
blk_init_queue(&pd_queue, do_pd_request, &pd_lock); pd_queue = blk_init_queue(do_pd_request, &pd_lock);
blk_queue_max_sectors(&pd_queue, cluster); if (!pd_queue)
goto out1;
blk_queue_max_sectors(pd_queue, cluster);
if (register_blkdev(major, name))
goto out2;
printk("%s: %s version %s, major %d, cluster %d, nice %d\n", printk("%s: %s version %s, major %d, cluster %d, nice %d\n",
name, name, PD_VERSION, major, cluster, nice); name, name, PD_VERSION, major, cluster, nice);
pd_init_units(); pd_init_units();
if (!pd_detect()) { if (!pd_detect())
unregister_blkdev(major, name); goto out3;
return -1;
}
return 0; return 0;
out3:
unregister_blkdev(major, name);
out2:
blk_cleanup_queue(pd_queue);
out1:
return -1;
} }
static void __exit pd_exit(void) static void __exit pd_exit(void)
...@@ -920,7 +930,7 @@ static void __exit pd_exit(void) ...@@ -920,7 +930,7 @@ static void __exit pd_exit(void)
pi_release(disk->pi); pi_release(disk->pi);
} }
} }
blk_cleanup_queue(&pd_queue); blk_cleanup_queue(pd_queue);
} }
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment