Hi Bart, this looks great! Reviewed-by: Christoph Hellwig <hch@xxxxxx> Some minor nitpicks below: > void nvme_requeue_req(struct request *req) > { > + blk_mq_requeue_request(req, true); > } > EXPORT_SYMBOL_GPL(nvme_requeue_req); Please just remove the nvme_requeue_req wrapper. > > @@ -2074,11 +2068,14 @@ EXPORT_SYMBOL_GPL(nvme_kill_queues); > void nvme_stop_queues(struct nvme_ctrl *ctrl) > { > struct nvme_ns *ns; > + struct request_queue *q; > > mutex_lock(&ctrl->namespaces_mutex); > list_for_each_entry(ns, &ctrl->namespaces, list) { > + q = ns->queue; > + blk_mq_cancel_requeue_work(q); > + blk_mq_stop_hw_queues(q); > + blk_mq_quiesce_queue(q); > } I'd keep the q declaration in the minimal scope, e.g. list_for_each_entry(ns, &ctrl->namespaces, list) { struct request_queue *q = ns->queue; blk_mq_cancel_requeue_work(q); blk_mq_stop_hw_queues(q); blk_mq_quiesce_queue(q); } -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html