Re: [PATCH v5 0/3] Handle update hardware queues and queue freeze more carefully
From: Daniel Wagner <hidden>
Date: 2021-08-20 11:55:24
Also in:
lkml
On Fri, Aug 20, 2021 at 10:48:32AM +0200, Daniel Wagner wrote:
Then we try to do the same thing again which fails, thus we never make progress. So clearly we need to update number of queues at one point. What would be the right thing to do here? As I understood we need to be careful with frozen requests. Can we abort them (is this even possible in this state?) and requeue them before we update the queue numbers?
After starring a bit longer at the reset path, I think there is no
pending request in any queue. nvme_fc_delete_association() calls
__nvme_fc_abort_outstanding_ios() which makes sure all queues are
drained (usage counter is 0). Also it clears the NVME_FC_Q_LIVE bit,
which prevents further request added to queues.
I start wonder why we have to do the nvme_start_freeze() in the first
place and why we want to wait for the freeze. 88e837ed0f1f ("nvme-fc:
wait for queues to freeze before calling update_hr_hw_queues") doesn't
really tell why we need wait for the freeze.
Given we know the usage counter of the queues is 0, I think we are
safe to move the blk_mq_update_nr_hw_queues() before the start queue
code. Also note nvme_fc_create_hw_io_queues() calls
blk_mq_freeze_queue() but it wont block as we are sure there is no
pending request.
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme