]> www.infradead.org Git - users/willy/xarray.git/commitdiff
mspro_block: Convert disks IDR to IDA
authorMatthew Wilcox <willy@infradead.org>
Mon, 11 Feb 2019 21:13:59 +0000 (16:13 -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/mspro_block.c

index cd6b8d4f23350f1e9d9ea24446045b54eb2bd05d..4a81eb59bb89b7123af6188d2351f7ea75227151 100644 (file)
@@ -171,7 +171,7 @@ struct mspro_block_data {
        unsigned int          current_page;
 };
 
-static DEFINE_IDR(mspro_block_disk_idr);
+static DEFINE_IDA(mspro_block_disks);
 static DEFINE_MUTEX(mspro_block_disk_lock);
 
 static int mspro_block_complete_req(struct memstick_dev *card, int error);
@@ -214,7 +214,7 @@ static void mspro_block_disk_release(struct gendisk *disk)
                if (!msb->usage_count) {
                        kfree(msb);
                        disk->private_data = NULL;
-                       idr_remove(&mspro_block_disk_idr, disk_id);
+                       ida_free(&mspro_block_disks, disk_id);
                        put_disk(disk);
                }
        }
@@ -1199,9 +1199,7 @@ static int mspro_block_init_disk(struct memstick_dev *card)
 
        msb->page_size = be16_to_cpu(sys_info->unit_size);
 
-       mutex_lock(&mspro_block_disk_lock);
-       disk_id = idr_alloc(&mspro_block_disk_idr, card, 0, 256, GFP_KERNEL);
-       mutex_unlock(&mspro_block_disk_lock);
+       disk_id = ida_alloc_max(&mspro_block_disks, 255, GFP_KERNEL);
        if (disk_id < 0)
                return disk_id;
 
@@ -1250,9 +1248,7 @@ static int mspro_block_init_disk(struct memstick_dev *card)
 out_put_disk:
        put_disk(msb->disk);
 out_release_id:
-       mutex_lock(&mspro_block_disk_lock);
-       idr_remove(&mspro_block_disk_idr, disk_id);
-       mutex_unlock(&mspro_block_disk_lock);
+       ida_free(&mspro_block_disks, disk_id);
        return rc;
 }
 
@@ -1462,7 +1458,6 @@ static void __exit mspro_block_exit(void)
 {
        memstick_unregister_driver(&mspro_block_driver);
        unregister_blkdev(major, DRIVER_NAME);
-       idr_destroy(&mspro_block_disk_idr);
 }
 
 module_init(mspro_block_init);