From 042b7ca9932f05ed7c69efc7b15fa58e42c6eb3c Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Fri, 28 Aug 2020 14:50:51 +0200 Subject: [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. --- src/kernel/core.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'src/kernel/core.c') 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"); -- cgit v1.2.3-55-g7522