]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
NVMe: within nvme_free_queues(), delete RCU sychro/deferred free
authorkaoudis <kaoudis@colorado.edu>
Thu, 15 Jan 2015 04:01:58 +0000 (21:01 -0700)
committerJens Axboe <axboe@fb.com>
Thu, 22 Jan 2015 04:51:57 +0000 (21:51 -0700)
Converting from to blk-queue got rid of the driver's RCU
locking-on-queue, so removing unnecessary RCU locking-on-queue
artefacts.

Reviewed-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Kelly Nicole Kaoudis <kaoudis@colorado.edu>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/nvme-core.c

index f7d083bb3bd5c0e437e6ce8cb6f640b2c65b7dda..f4aa6416083889dfdac0d60c5d07a752deff7128 100644 (file)
@@ -1108,21 +1108,14 @@ static void nvme_free_queue(struct nvme_queue *nvmeq)
 
 static void nvme_free_queues(struct nvme_dev *dev, int lowest)
 {
-       LLIST_HEAD(q_list);
-       struct nvme_queue *nvmeq, *next;
-       struct llist_node *entry;
        int i;
 
        for (i = dev->queue_count - 1; i >= lowest; i--) {
                struct nvme_queue *nvmeq = dev->queues[i];
-               llist_add(&nvmeq->node, &q_list);
                dev->queue_count--;
                dev->queues[i] = NULL;
-       }
-       synchronize_rcu();
-       entry = llist_del_all(&q_list);
-       llist_for_each_entry_safe(nvmeq, next, entry, node)
                nvme_free_queue(nvmeq);
+       }
 }
 
 /**