diff options
author | Johann Latocha | 2012-06-14 19:12:00 +0200 |
---|---|---|
committer | Johann Latocha | 2012-06-14 19:12:00 +0200 |
commit | 2fbc77fab78fed7a292dffca153081757e04152d (patch) | |
tree | 46f23ef33c70c48c44c8b841ecea26ae4c7c3527 | |
parent | [ALL] Some cleanup (diff) | |
download | dnbd3-2fbc77fab78fed7a292dffca153081757e04152d.tar.gz dnbd3-2fbc77fab78fed7a292dffca153081757e04152d.tar.xz dnbd3-2fbc77fab78fed7a292dffca153081757e04152d.zip |
[KERNEL] set dev number on module load
-rw-r--r-- | src/kernel/core.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/kernel/core.c b/src/kernel/core.c index 167c591..d87bccf 100644 --- a/src/kernel/core.c +++ b/src/kernel/core.c @@ -22,12 +22,17 @@ #include "blk.h" int major; -dnbd3_device_t dnbd3_device[NUMBER_DEVICES]; +static unsigned int max_devs = NUMBER_DEVICES; +static dnbd3_device_t *dnbd3_device; static int __init dnbd3_init(void) { int i; + dnbd3_device = kcalloc(max_devs, sizeof(*dnbd3_device), GFP_KERNEL); + if (!dnbd3_device) + return -ENOMEM; + // initialize block device if ((major = register_blkdev(0, "dnbd3")) == 0) { @@ -36,7 +41,7 @@ static int __init dnbd3_init(void) } // add MAX_NUMBER_DEVICES devices - for (i = 0; i < NUMBER_DEVICES; i++) + for (i = 0; i < max_devs; i++) { if (dnbd3_blk_add_device(&dnbd3_device[i], i) != 0) { @@ -45,7 +50,7 @@ static int __init dnbd3_init(void) } } - printk("INFO: dnbd3 init successful.\n"); + printk("INFO: dnbd3 init successful (%i devices).\n", max_devs); return 0; } @@ -53,12 +58,13 @@ static void __exit dnbd3_exit(void) { int i; - for (i = 0; i < NUMBER_DEVICES; i++) + for (i = 0; i < max_devs; i++) { dnbd3_blk_del_device(&dnbd3_device[i]); } unregister_blkdev(major, "dnbd3"); + kfree(dnbd3_device); printk("INFO: dnbd3 exit.\n"); } @@ -67,3 +73,6 @@ module_exit( dnbd3_exit); MODULE_DESCRIPTION("Distributed Network Block Device 3"); MODULE_LICENSE("GPL"); + +module_param(max_devs, int, 0444); +MODULE_PARM_DESC(max_devs, "number of network block devices to initialize (default: 8)"); |