]> www.infradead.org Git - users/willy/xarray.git/commitdiff
ubiblock: Convert ubiblock_minor_idr to IDA
authorMatthew Wilcox <willy@infradead.org>
Mon, 18 Feb 2019 20:30:42 +0000 (15:30 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 9 Aug 2019 01:38:17 +0000 (21:38 -0400)
Signed-off-by: Matthew Wilcox <willy@infradead.org>
drivers/mtd/ubi/block.c

index 6025398955a21728b0740659c986287c4549e12d..4702ba7dcc7f96daac7c74660ba979f238ea59c1 100644 (file)
@@ -90,9 +90,10 @@ struct ubiblock {
 };
 
 /* Linked list of all ubiblock instances */
+/* These two should probably be combined into an XArray */
 static LIST_HEAD(ubiblock_devices);
-static DEFINE_IDR(ubiblock_minor_idr);
-/* Protects ubiblock_devices and ubiblock_minor_idr */
+static DEFINE_IDA(ubiblock_minor_ids);
+/* Protects ubiblock_devices and ubiblock_minor_ids */
 static DEFINE_MUTEX(devices_mutex);
 static int ubiblock_major;
 
@@ -383,7 +384,7 @@ int ubiblock_create(struct ubi_volume_info *vi)
 
        gd->fops = &ubiblock_ops;
        gd->major = ubiblock_major;
-       gd->first_minor = idr_alloc(&ubiblock_minor_idr, dev, 0, 0, GFP_KERNEL);
+       gd->first_minor = ida_alloc(&ubiblock_minor_ids, GFP_KERNEL);
        if (gd->first_minor < 0) {
                dev_err(disk_to_dev(gd),
                        "block: dynamic minor allocation failed");
@@ -444,7 +445,7 @@ out_free_queue:
 out_free_tags:
        blk_mq_free_tag_set(&dev->tag_set);
 out_remove_minor:
-       idr_remove(&ubiblock_minor_idr, gd->first_minor);
+       ida_free(&ubiblock_minor_ids, gd->first_minor);
 out_put_disk:
        put_disk(dev->gd);
 out_free_dev:
@@ -465,7 +466,7 @@ static void ubiblock_cleanup(struct ubiblock *dev)
        blk_cleanup_queue(dev->rq);
        blk_mq_free_tag_set(&dev->tag_set);
        dev_info(disk_to_dev(dev->gd), "released");
-       idr_remove(&ubiblock_minor_idr, dev->gd->first_minor);
+       ida_free(&ubiblock_minor_ids, dev->gd->first_minor);
        put_disk(dev->gd);
 }