summaryrefslogtreecommitdiffstats
path: root/src/kernel/core.c
diff options
context:
space:
mode:
authorManuel Bentele2020-08-28 14:50:51 +0200
committerManuel Bentele2020-08-28 14:50:51 +0200
commit042b7ca9932f05ed7c69efc7b15fa58e42c6eb3c (patch)
tree5957cd5d532ce311f85c2bb2d7a9a861da18cd35 /src/kernel/core.c
parent[KERNEL] convert to blk-mq and ktime (diff)
downloaddnbd3-042b7ca9932f05ed7c69efc7b15fa58e42c6eb3c.tar.gz
dnbd3-042b7ca9932f05ed7c69efc7b15fa58e42c6eb3c.tar.xz
dnbd3-042b7ca9932f05ed7c69efc7b15fa58e42c6eb3c.zip
[KERNEL] convert debug messages and clean up code
This change converts all debug messages to support the Linux kernel's dynamic debug feature. Debug messages can be enabled or disabled by the debug feature if the - kernel module is built in debug mode (EXTRA_CFLAGS=-g -DDEBUG) - Linux kernel supports dynamic debug (CONFIG_DYNAMIC_DEBUG is set) This patch removes outdated kernel compatibility macros (used for Linux kernels in version 4.x) and cleans up the kernel module's code.
Diffstat (limited to 'src/kernel/core.c')
-rw-r--r--src/kernel/core.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/kernel/core.c b/src/kernel/core.c
index 69a2540..6e7d052 100644
--- a/src/kernel/core.c
+++ b/src/kernel/core.c
@@ -18,42 +18,51 @@
*
*/
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
#include "clientconfig.h"
#include "dnbd3.h"
#include "blk.h"
int major;
static unsigned int max_devs = NUMBER_DEVICES;
-static dnbd3_device_t *dnbd3_device;
+static dnbd3_device_t *dnbd3_devices;
+
+struct device *dnbd3_device_to_dev(dnbd3_device_t *dev)
+{
+ return disk_to_dev(dev->disk);
+}
static int __init dnbd3_init(void)
{
int i;
- dnbd3_device = kcalloc(max_devs, sizeof(*dnbd3_device), GFP_KERNEL);
- if (!dnbd3_device)
+ dnbd3_devices = kcalloc(max_devs, sizeof(*dnbd3_devices), GFP_KERNEL);
+ if (!dnbd3_devices)
return -ENOMEM;
// initialize block device
if ((major = register_blkdev(0, "dnbd3")) == 0)
{
- printk("ERROR: dnbd3 register_blkdev failed.\n");
+ pr_err("register_blkdev failed\n");
return -EIO;
}
- printk("DNBD3 kernel module loaded. Machine type: " ENDIAN_MODE "\n");
+ pr_info("kernel module loaded\n");
+ pr_debug("machine type " ENDIAN_MODE "\n");
// add MAX_NUMBER_DEVICES devices
for (i = 0; i < max_devs; i++)
{
- if (dnbd3_blk_add_device(&dnbd3_device[i], i) != 0)
+ if (dnbd3_blk_add_device(&dnbd3_devices[i], i) != 0)
{
- printk("ERROR: adding device failed.\n");
+ pr_err("dnbd3_blk_add_device failed\n");
return -EIO; // TODO: delete all devices added so far. it could happen that it's not the first one that fails. also call unregister_blkdev and free memory
}
}
- printk("INFO: dnbd3 init successful (%i devices).\n", max_devs);
+ pr_info("init successful (%i devices)\n", max_devs);
+
return 0;
}
@@ -63,16 +72,17 @@ static void __exit dnbd3_exit(void)
for (i = 0; i < max_devs; i++)
{
- dnbd3_blk_del_device(&dnbd3_device[i]);
+ dnbd3_blk_del_device(&dnbd3_devices[i]);
}
unregister_blkdev(major, "dnbd3");
- kfree(dnbd3_device);
- printk("INFO: dnbd3 exit.\n");
+ kfree(dnbd3_devices);
+
+ pr_info("exit kernel module\n");
}
-module_init( dnbd3_init);
-module_exit( dnbd3_exit);
+module_init(dnbd3_init);
+module_exit(dnbd3_exit);
MODULE_DESCRIPTION("Distributed Network Block Device 3");
MODULE_LICENSE("GPL");