Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 121c7ad4 authored by kaoudis's avatar kaoudis Committed by Jens Axboe
Browse files

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: default avatarKeith Busch <keith.busch@intel.com>

Signed-off-by: default avatarKelly Nicole Kaoudis <kaoudis@colorado.edu>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 227290b4
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -1108,22 +1108,15 @@ 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);
	}
}

/**
 * nvme_suspend_queue - put queue into suspended state