From: kaoudis Date: Thu, 15 Jan 2015 04:01:58 +0000 (-0700) Subject: NVMe: within nvme_free_queues(), delete RCU sychro/deferred free X-Git-Tag: v4.0-rc1~100^2~11 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=121c7ad4ef3f3a9e697c4b8b78d74e4d6847d9e4;p=karo-tx-linux.git NVMe: within nvme_free_queues(), delete RCU sychro/deferred free 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 Signed-off-by: Kelly Nicole Kaoudis Signed-off-by: Jens Axboe --- diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c index f7d083bb3bd5..f4aa64160838 100644 --- a/drivers/block/nvme-core.c +++ b/drivers/block/nvme-core.c @@ -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); + } } /**