From: Matthew Wilcox Date: Mon, 11 Feb 2019 21:12:20 +0000 (-0500) Subject: ms_block: Convert disk IDR to IDA X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0ac4941676aa9d8511119eed701c55406108cc4f;p=users%2Fwilly%2Fxarray.git ms_block: Convert disk IDR to IDA Signed-off-by: Matthew Wilcox --- diff --git a/drivers/memstick/core/ms_block.c b/drivers/memstick/core/ms_block.c index 384927ebde74..36575de0ca13 100644 --- a/drivers/memstick/core/ms_block.c +++ b/drivers/memstick/core/ms_block.c @@ -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);