summaryrefslogtreecommitdiffstats
path: root/src/kernel/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/core.c')
-rw-r--r--src/kernel/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/kernel/core.c b/src/kernel/core.c
index 1b0aa46..f4b7204 100644
--- a/src/kernel/core.c
+++ b/src/kernel/core.c
@@ -117,7 +117,7 @@ again:
goto out;
}
- ret = dnbd3_send_request(dev, sock, blk_mq_rq_from_pdu(cmd));
+ ret = dnbd3_send_request(sock, blk_mq_rq_from_pdu(cmd), cmd);
if (ret == -EAGAIN) {
dev_err_ratelimited(disk_to_dev(dev->disk), "request send failed, requeueing\n");
dnbd3_requeue_cmd(cmd);
@@ -338,11 +338,16 @@ int dnbd3_add_device(dnbd3_device *dev, int minor)
struct gendisk *disk;
struct request_queue *q;
int err = -ENOMEM;
+ int i;
printk(KERN_DEBUG "dnbd3: adding device %i\n", minor);
mutex_init(&dev->device_lock);
mutex_lock(&dev->device_lock);
+ for (i = 0; i < NUMBER_CONNECTIONS; i++) {
+ dev->socks[i].device = dev;
+ }
+
disk = alloc_disk(1);
if (!disk) {
printk(KERN_WARNING "dnbd3: alloc_disc failed device %i\n", minor);
@@ -428,7 +433,7 @@ static int __init dnbd3_init(void)
int i;
printk(KERN_DEBUG "dnbd3: starting kernel module\n");
- dnbd3_wq = alloc_workqueue("kdnbd3", WQ_MEM_RECLAIM | WQ_FREEZABLE, 1);
+ dnbd3_wq = alloc_workqueue("kdnbd3", WQ_MEM_RECLAIM | WQ_FREEZABLE | WQ_UNBOUND, 0);
if (max_devs < 0) {
printk(KERN_ERR "dnbd3: max_devs must be >= 0\n");