aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaoudis <kaoudis@colorado.edu>2015-01-14 23:01:58 -0500
committerJens Axboe <axboe@fb.com>2015-01-21 23:51:57 -0500
commit121c7ad4ef3f3a9e697c4b8b78d74e4d6847d9e4 (patch)
tree147d73c726847fdf27b77e32bb3acf401200732d
parent227290b4690510148d1f40f277c6c3a181fcb440 (diff)
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 <keith.busch@intel.com> Signed-off-by: Kelly Nicole Kaoudis <kaoudis@colorado.edu> Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r--drivers/block/nvme-core.c9
1 files changed, 1 insertions, 8 deletions
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)
1108 1108
1109static void nvme_free_queues(struct nvme_dev *dev, int lowest) 1109static void nvme_free_queues(struct nvme_dev *dev, int lowest)
1110{ 1110{
1111 LLIST_HEAD(q_list);
1112 struct nvme_queue *nvmeq, *next;
1113 struct llist_node *entry;
1114 int i; 1111 int i;
1115 1112
1116 for (i = dev->queue_count - 1; i >= lowest; i--) { 1113 for (i = dev->queue_count - 1; i >= lowest; i--) {
1117 struct nvme_queue *nvmeq = dev->queues[i]; 1114 struct nvme_queue *nvmeq = dev->queues[i];
1118 llist_add(&nvmeq->node, &q_list);
1119 dev->queue_count--; 1115 dev->queue_count--;
1120 dev->queues[i] = NULL; 1116 dev->queues[i] = NULL;
1121 }
1122 synchronize_rcu();
1123 entry = llist_del_all(&q_list);
1124 llist_for_each_entry_safe(nvmeq, next, entry, node)
1125 nvme_free_queue(nvmeq); 1117 nvme_free_queue(nvmeq);
1118 }
1126} 1119}
1127 1120
1128/** 1121/**