lkml.org 
[lkml]   [2018]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/26] sd: Convert to new IDA interface
    Date
    Allows us to remove an explicit spinlock.

    Signed-off-by: Matthew Wilcox <willy@infradead.org>
    ---
    drivers/scsi/sd.c | 21 ++++-----------------
    1 file changed, 4 insertions(+), 17 deletions(-)

    diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
    index 9421d9877730..8a493e64856c 100644
    --- a/drivers/scsi/sd.c
    +++ b/drivers/scsi/sd.c
    @@ -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);
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-06-21 23:31    [W:2.659 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site