Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[platform/kernel/linux-starfive.git] / drivers / block / rnbd / rnbd-clt.c
index dc192d2..b66e884 100644 (file)
@@ -23,7 +23,6 @@ MODULE_LICENSE("GPL");
 
 static int rnbd_client_major;
 static DEFINE_IDA(index_ida);
-static DEFINE_MUTEX(ida_lock);
 static DEFINE_MUTEX(sess_lock);
 static LIST_HEAD(sess_list);
 
@@ -55,9 +54,7 @@ static void rnbd_clt_put_dev(struct rnbd_clt_dev *dev)
        if (!refcount_dec_and_test(&dev->refcount))
                return;
 
-       mutex_lock(&ida_lock);
-       ida_simple_remove(&index_ida, dev->clt_device_id);
-       mutex_unlock(&ida_lock);
+       ida_free(&index_ida, dev->clt_device_id);
        kfree(dev->hw_queues);
        kfree(dev->pathname);
        rnbd_clt_put_sess(dev->sess);
@@ -86,7 +83,6 @@ static int rnbd_clt_set_dev_attr(struct rnbd_clt_dev *dev,
        dev->discard_granularity    = le32_to_cpu(rsp->discard_granularity);
        dev->discard_alignment      = le32_to_cpu(rsp->discard_alignment);
        dev->secure_discard         = le16_to_cpu(rsp->secure_discard);
-       dev->rotational             = rsp->rotational;
        dev->wc                     = !!(rsp->cache_policy & RNBD_WRITEBACK);
        dev->fua                    = !!(rsp->cache_policy & RNBD_FUA);
 
@@ -1261,9 +1257,9 @@ find_and_get_or_create_sess(const char *sessname,
        struct rtrs_clt_ops rtrs_ops;
 
        sess = find_or_create_sess(sessname, &first);
-       if (sess == ERR_PTR(-ENOMEM))
+       if (sess == ERR_PTR(-ENOMEM)) {
                return ERR_PTR(-ENOMEM);
-       else if ((nr_poll_queues && !first) ||  (!nr_poll_queues && sess->nr_poll_queues)) {
+       else if ((nr_poll_queues && !first) ||  (!nr_poll_queues && sess->nr_poll_queues)) {
                /*
                 * A device MUST have its own session to use the polling-mode.
                 * It must fail to map new device with the same session.
@@ -1342,7 +1338,7 @@ static inline void rnbd_init_hw_queue(struct rnbd_clt_dev *dev,
 
 static void rnbd_init_mq_hw_queues(struct rnbd_clt_dev *dev)
 {
-       int i;
+       unsigned long i;
        struct blk_mq_hw_ctx *hctx;
        struct rnbd_queue *q;
 
@@ -1407,8 +1403,10 @@ static int rnbd_clt_setup_gen_disk(struct rnbd_clt_dev *dev, int idx)
                dev->read_only = false;
        }
 
-       if (!dev->rotational)
-               blk_queue_flag_set(QUEUE_FLAG_NONROT, dev->queue);
+       /*
+        * Network device does not need rotational
+        */
+       blk_queue_flag_set(QUEUE_FLAG_NONROT, dev->queue);
        err = add_disk(dev->gd);
        if (err)
                blk_cleanup_disk(dev->gd);
@@ -1456,10 +1454,8 @@ static struct rnbd_clt_dev *init_dev(struct rnbd_clt_session *sess,
                goto out_alloc;
        }
 
-       mutex_lock(&ida_lock);
-       ret = ida_simple_get(&index_ida, 0, 1 << (MINORBITS - RNBD_PART_BITS),
-                            GFP_KERNEL);
-       mutex_unlock(&ida_lock);
+       ret = ida_alloc_max(&index_ida, 1 << (MINORBITS - RNBD_PART_BITS),
+                           GFP_KERNEL);
        if (ret < 0) {
                pr_err("Failed to initialize device '%s' from session %s, allocating idr failed, err: %d\n",
                       pathname, sess->sessname, ret);
@@ -1607,13 +1603,13 @@ struct rnbd_clt_dev *rnbd_clt_map_device(const char *sessname,
        }
 
        rnbd_clt_info(dev,
-                      "map_device: Device mapped as %s (nsectors: %zu, logical_block_size: %d, physical_block_size: %d, max_discard_sectors: %d, discard_granularity: %d, discard_alignment: %d, secure_discard: %d, max_segments: %d, max_hw_sectors: %d, rotational: %d, wc: %d, fua: %d)\n",
+                      "map_device: Device mapped as %s (nsectors: %zu, logical_block_size: %d, physical_block_size: %d, max_discard_sectors: %d, discard_granularity: %d, discard_alignment: %d, secure_discard: %d, max_segments: %d, max_hw_sectors: %d, wc: %d, fua: %d)\n",
                       dev->gd->disk_name, dev->nsectors,
                       dev->logical_block_size, dev->physical_block_size,
                       dev->max_discard_sectors,
                       dev->discard_granularity, dev->discard_alignment,
                       dev->secure_discard, dev->max_segments,
-                      dev->max_hw_sectors, dev->rotational, dev->wc, dev->fua);
+                      dev->max_hw_sectors, dev->wc, dev->fua);
 
        mutex_unlock(&dev->lock);
        rnbd_clt_put_sess(sess);