From 04ba582cf57deacb07884b2d26ef60a591087dd3 Mon Sep 17 00:00:00 2001 From: Frederic Robra Date: Tue, 9 Jul 2019 12:12:55 +0200 Subject: added worker for keepalive and discovery --- src/kernel/core.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/kernel/core.c') 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"); } -- cgit v1.2.3-55-g7522