Re: [PATCH 12/19] md: use __register_blkdev to allocate devices on demand

2020-09-04 Thread Hannes Reinecke

On 9/3/20 10:01 AM, Christoph Hellwig wrote:

Use the simpler mechanism attached to major_name to allocate a brd device


md device? Maybe?


when a currently unregistered minor is accessed.

Signed-off-by: Christoph Hellwig 
Acked-by: Song Liu 
---
  drivers/md/md.c | 21 -
  1 file changed, 8 insertions(+), 13 deletions(-)


Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
--
Dr. Hannes ReineckeKernel Storage Architect
h...@suse.de  +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer


[PATCH 12/19] md: use __register_blkdev to allocate devices on demand

2020-09-03 Thread Christoph Hellwig
Use the simpler mechanism attached to major_name to allocate a brd device
when a currently unregistered minor is accessed.

Signed-off-by: Christoph Hellwig 
Acked-by: Song Liu 
---
 drivers/md/md.c | 21 -
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 9562ef598ae1f4..be3625acf67d7e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5766,11 +5766,12 @@ static int md_alloc(dev_t dev, char *name)
return error;
 }
 
-static struct kobject *md_probe(dev_t dev, int *part, void *data)
+static void md_probe(dev_t dev)
 {
+   if (MAJOR(dev) == MD_MAJOR && MINOR(dev) >= 512)
+   return;
if (create_on_open)
md_alloc(dev, NULL);
-   return NULL;
 }
 
 static int add_named_array(const char *val, const struct kernel_param *kp)
@@ -6536,7 +6537,7 @@ static void autorun_devices(int part)
break;
}
 
-   md_probe(dev, NULL, NULL);
+   md_probe(dev);
mddev = mddev_find(dev);
if (!mddev || !mddev->gendisk) {
if (mddev)
@@ -9548,18 +9549,15 @@ static int __init md_init(void)
if (!md_misc_wq)
goto err_rdev_misc_wq;
 
-   if ((ret = register_blkdev(MD_MAJOR, "md")) < 0)
+   ret = __register_blkdev(MD_MAJOR, "md", md_probe);
+   if (ret < 0)
goto err_md;
 
-   if ((ret = register_blkdev(0, "mdp")) < 0)
+   ret = __register_blkdev(0, "mdp", md_probe);
+   if (ret < 0)
goto err_mdp;
mdp_major = ret;
 
-   blk_register_region(MKDEV(MD_MAJOR, 0), 512, THIS_MODULE,
-   md_probe, NULL, NULL);
-   blk_register_region(MKDEV(mdp_major, 0), 1UL<

[PATCH 12/19] md: use __register_blkdev to allocate devices on demand

2020-08-30 Thread Christoph Hellwig
Use the simpler mechanism attached to major_name to allocate a brd device
when a currently unregistered minor is accessed.

Signed-off-by: Christoph Hellwig 
Acked-by: Song Liu 
---
 drivers/md/md.c | 21 -
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 60727820702300..3c4ef862ac5fb0 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5766,11 +5766,12 @@ static int md_alloc(dev_t dev, char *name)
return error;
 }
 
-static struct kobject *md_probe(dev_t dev, int *part, void *data)
+static void md_probe(dev_t dev)
 {
+   if (MAJOR(dev) == MD_MAJOR && MINOR(dev) >= 512)
+   return;
if (create_on_open)
md_alloc(dev, NULL);
-   return NULL;
 }
 
 static int add_named_array(const char *val, const struct kernel_param *kp)
@@ -6536,7 +6537,7 @@ static void autorun_devices(int part)
break;
}
 
-   md_probe(dev, NULL, NULL);
+   md_probe(dev);
mddev = mddev_find(dev);
if (!mddev || !mddev->gendisk) {
if (mddev)
@@ -9548,18 +9549,15 @@ static int __init md_init(void)
if (!md_misc_wq)
goto err_rdev_misc_wq;
 
-   if ((ret = register_blkdev(MD_MAJOR, "md")) < 0)
+   ret = __register_blkdev(MD_MAJOR, "md", md_probe);
+   if (ret < 0)
goto err_md;
 
-   if ((ret = register_blkdev(0, "mdp")) < 0)
+   ret = __register_blkdev(0, "mdp", md_probe);
+   if (ret < 0)
goto err_mdp;
mdp_major = ret;
 
-   blk_register_region(MKDEV(MD_MAJOR, 0), 512, THIS_MODULE,
-   md_probe, NULL, NULL);
-   blk_register_region(MKDEV(mdp_major, 0), 1UL<

Re: [PATCH 12/19] md: use __register_blkdev to allocate devices on demand

2020-08-28 Thread Song Liu
On Tue, Aug 25, 2020 at 11:53 PM Christoph Hellwig  wrote:
>
> Use the simpler mechanism attached to major_name to allocate a brd device
> when a currently unregistered minor is accessed.
>
> Signed-off-by: Christoph Hellwig 

Acked-by: Song Liu 


[PATCH 12/19] md: use __register_blkdev to allocate devices on demand

2020-08-26 Thread Christoph Hellwig
Use the simpler mechanism attached to major_name to allocate a brd device
when a currently unregistered minor is accessed.

Signed-off-by: Christoph Hellwig 
---
 drivers/md/md.c | 21 -
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 60727820702300..3c4ef862ac5fb0 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5766,11 +5766,12 @@ static int md_alloc(dev_t dev, char *name)
return error;
 }
 
-static struct kobject *md_probe(dev_t dev, int *part, void *data)
+static void md_probe(dev_t dev)
 {
+   if (MAJOR(dev) == MD_MAJOR && MINOR(dev) >= 512)
+   return;
if (create_on_open)
md_alloc(dev, NULL);
-   return NULL;
 }
 
 static int add_named_array(const char *val, const struct kernel_param *kp)
@@ -6536,7 +6537,7 @@ static void autorun_devices(int part)
break;
}
 
-   md_probe(dev, NULL, NULL);
+   md_probe(dev);
mddev = mddev_find(dev);
if (!mddev || !mddev->gendisk) {
if (mddev)
@@ -9548,18 +9549,15 @@ static int __init md_init(void)
if (!md_misc_wq)
goto err_rdev_misc_wq;
 
-   if ((ret = register_blkdev(MD_MAJOR, "md")) < 0)
+   ret = __register_blkdev(MD_MAJOR, "md", md_probe);
+   if (ret < 0)
goto err_md;
 
-   if ((ret = register_blkdev(0, "mdp")) < 0)
+   ret = __register_blkdev(0, "mdp", md_probe);
+   if (ret < 0)
goto err_mdp;
mdp_major = ret;
 
-   blk_register_region(MKDEV(MD_MAJOR, 0), 512, THIS_MODULE,
-   md_probe, NULL, NULL);
-   blk_register_region(MKDEV(mdp_major, 0), 1UL<