summaryrefslogtreecommitdiffstats
path: root/src/kernel/core.c
diff options
context:
space:
mode:
authorFrederic Robra2019-07-09 12:12:55 +0200
committerFrederic Robra2019-07-09 12:12:55 +0200
commit04ba582cf57deacb07884b2d26ef60a591087dd3 (patch)
tree81c10e3fb3b04aeed85a3644998419cc37e52775 /src/kernel/core.c
parentadded first draft for keepalive and discovery (diff)
downloaddnbd3-ng-04ba582cf57deacb07884b2d26ef60a591087dd3.tar.gz
dnbd3-ng-04ba582cf57deacb07884b2d26ef60a591087dd3.tar.xz
dnbd3-ng-04ba582cf57deacb07884b2d26ef60a591087dd3.zip
added worker for keepalive and discovery
Diffstat (limited to 'src/kernel/core.c')
-rw-r--r--src/kernel/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/kernel/core.c b/src/kernel/core.c
index 48f809b..1b0aa46 100644
--- a/src/kernel/core.c
+++ b/src/kernel/core.c
@@ -54,6 +54,8 @@
#define DNBD3_CMD_REQUEUED 1
+
+struct workqueue_struct *dnbd3_wq;
DEFINE_IDR(dnbd3_index_idr);
DEFINE_MUTEX(dnbd3_index_mutex);
@@ -426,6 +428,8 @@ 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);
+
if (max_devs < 0) {
printk(KERN_ERR "dnbd3: max_devs must be >= 0\n");
return -EINVAL;
@@ -483,6 +487,7 @@ static void dnbd3_dev_remove(struct dnbd3_device *dnbd3)
disk->private_data = NULL;
put_disk(disk);
}
+ mutex_destroy(&dnbd3->device_lock);
}
static void dnbd3_put(struct dnbd3_device *dnbd3)
@@ -516,6 +521,8 @@ static void __exit dnbd3_exit(void)
kfree(device);
+ destroy_workqueue(dnbd3_wq);
+
printk(KERN_INFO "dnbd3: stopped kernel module\n");
}