]> www.infradead.org Git - users/willy/xarray.git/commitdiff
ms_block: Convert disk IDR to IDA
authorMatthew Wilcox <willy@infradead.org>
Mon, 11 Feb 2019 21:12:20 +0000 (16:12 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 9 Aug 2019 01:38:15 +0000 (21:38 -0400)
Signed-off-by: Matthew Wilcox <willy@infradead.org>
drivers/memstick/core/ms_block.c

index 384927ebde74f62b8ce365c5e2f20670b9167fa7..36575de0ca13e599eba5fd712e642c7fd589a575 100644 (file)
@@ -1931,7 +1931,7 @@ static void msb_io_work(struct work_struct *work)
        }
 }
 
-static DEFINE_IDR(msb_disk_idr); /*set of used disk numbers */
+static DEFINE_IDA(msb_disks); /*set of used disk numbers */
 static DEFINE_MUTEX(msb_disk_lock); /* protects against races in open/release */
 
 static int msb_bd_open(struct block_device *bdev, fmode_t mode)
@@ -1972,7 +1972,7 @@ static int msb_disk_release(struct gendisk *disk)
 
                if (!msb->usage_count) {
                        disk->private_data = NULL;
-                       idr_remove(&msb_disk_idr, msb->disk_id);
+                       ida_free(&msb_disks, msb->disk_id);
                        put_disk(disk);
                        kfree(msb);
                }
@@ -2103,9 +2103,7 @@ static int msb_init_disk(struct memstick_dev *card)
        int rc;
        unsigned long capacity;
 
-       mutex_lock(&msb_disk_lock);
-       msb->disk_id = idr_alloc(&msb_disk_idr, card, 0, 256, GFP_KERNEL);
-       mutex_unlock(&msb_disk_lock);
+       msb->disk_id = ida_alloc_max(&msb_disks, 255, GFP_KERNEL);
 
        if (msb->disk_id  < 0)
                return msb->disk_id;
@@ -2159,9 +2157,7 @@ static int msb_init_disk(struct memstick_dev *card)
 out_put_disk:
        put_disk(msb->disk);
 out_release_id:
-       mutex_lock(&msb_disk_lock);
-       idr_remove(&msb_disk_idr, msb->disk_id);
-       mutex_unlock(&msb_disk_lock);
+       ida_free(&msb_disks, msb->disk_id);
        return rc;
 }
 
@@ -2342,7 +2338,6 @@ static int __init msb_init(void)
 static void __exit msb_exit(void)
 {
        memstick_unregister_driver(&msb_driver);
-       idr_destroy(&msb_disk_idr);
 }
 
 module_init(msb_init);