sd: Convert to new IDA API
Allows us to remove an explicit spinlock. Signed-off-by: Matthew Wilcox <willy@infradead.org>
This commit is contained in:
parent
0f0a0e54a2
commit
9401508012
@ -123,7 +123,6 @@ static void scsi_disk_release(struct device *cdev);
|
||||
static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *);
|
||||
static void sd_print_result(const struct scsi_disk *, const char *, int);
|
||||
|
||||
static DEFINE_SPINLOCK(sd_index_lock);
|
||||
static DEFINE_IDA(sd_index_ida);
|
||||
|
||||
/* This semaphore is used to mediate the 0->1 reference get in the
|
||||
@ -3339,16 +3338,8 @@ static int sd_probe(struct device *dev)
|
||||
if (!gd)
|
||||
goto out_free;
|
||||
|
||||
do {
|
||||
if (!ida_pre_get(&sd_index_ida, GFP_KERNEL))
|
||||
goto out_put;
|
||||
|
||||
spin_lock(&sd_index_lock);
|
||||
error = ida_get_new(&sd_index_ida, &index);
|
||||
spin_unlock(&sd_index_lock);
|
||||
} while (error == -EAGAIN);
|
||||
|
||||
if (error) {
|
||||
index = ida_alloc(&sd_index_ida, GFP_KERNEL);
|
||||
if (index < 0) {
|
||||
sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n");
|
||||
goto out_put;
|
||||
}
|
||||
@ -3392,9 +3383,7 @@ static int sd_probe(struct device *dev)
|
||||
return 0;
|
||||
|
||||
out_free_index:
|
||||
spin_lock(&sd_index_lock);
|
||||
ida_remove(&sd_index_ida, index);
|
||||
spin_unlock(&sd_index_lock);
|
||||
ida_free(&sd_index_ida, index);
|
||||
out_put:
|
||||
put_disk(gd);
|
||||
out_free:
|
||||
@ -3459,9 +3448,7 @@ static void scsi_disk_release(struct device *dev)
|
||||
struct scsi_disk *sdkp = to_scsi_disk(dev);
|
||||
struct gendisk *disk = sdkp->disk;
|
||||
|
||||
spin_lock(&sd_index_lock);
|
||||
ida_remove(&sd_index_ida, sdkp->index);
|
||||
spin_unlock(&sd_index_lock);
|
||||
ida_free(&sd_index_ida, sdkp->index);
|
||||
|
||||
disk->private_data = NULL;
|
||||
put_disk(disk);
|
||||
|
Loading…
Reference in New Issue
Block a user