提交 20a8143e 编写于 作者: P Paul Clements 提交者: Linus Torvalds

NBD: remove limit on max number of nbd devices

Remove the arbitrary 128 device limit for NBD.  nbds_max can now be set to
any number.  In certain scenarios where devices are used sparsely we have
run into the 128 device limit.
Signed-off-by: NPaul Clements <paul.clements@steeleye.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 53a7a1bb
...@@ -54,7 +54,7 @@ static unsigned int debugflags; ...@@ -54,7 +54,7 @@ static unsigned int debugflags;
#endif /* NDEBUG */ #endif /* NDEBUG */
static unsigned int nbds_max = 16; static unsigned int nbds_max = 16;
static struct nbd_device nbd_dev[MAX_NBD]; static struct nbd_device *nbd_dev;
/* /*
* Use just one lock (or at most 1 per NIC). Two arguments for this: * Use just one lock (or at most 1 per NIC). Two arguments for this:
...@@ -649,11 +649,9 @@ static int __init nbd_init(void) ...@@ -649,11 +649,9 @@ static int __init nbd_init(void)
BUILD_BUG_ON(sizeof(struct nbd_request) != 28); BUILD_BUG_ON(sizeof(struct nbd_request) != 28);
if (nbds_max > MAX_NBD) { nbd_dev = kcalloc(nbds_max, sizeof(*nbd_dev), GFP_KERNEL);
printk(KERN_CRIT "nbd: cannot allocate more than %u nbds; %u requested.\n", MAX_NBD, if (!nbd_dev)
nbds_max); return -ENOMEM;
return -EINVAL;
}
for (i = 0; i < nbds_max; i++) { for (i = 0; i < nbds_max; i++) {
struct gendisk *disk = alloc_disk(1); struct gendisk *disk = alloc_disk(1);
......
...@@ -35,7 +35,6 @@ enum { ...@@ -35,7 +35,6 @@ enum {
}; };
#define nbd_cmd(req) ((req)->cmd[0]) #define nbd_cmd(req) ((req)->cmd[0])
#define MAX_NBD 128
/* userspace doesn't need the nbd_device structure */ /* userspace doesn't need the nbd_device structure */
#ifdef __KERNEL__ #ifdef __KERNEL__
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册