Hi ming On 05/04/2018 04:02 PM, Ming Lei wrote: >> nvme_error_handler should invoke nvme_reset_ctrl instead of introducing another interface. >> Then it is more convenient to ensure that there will be only one resetting instance running. >> > But as you mentioned above, reset_work has to be splitted into two > contexts for handling IO timeout during wait_freeze in reset_work, > so single instance of nvme_reset_ctrl() may not work well. I mean the EH kthread and the reset_work which both could reset the ctrl instead of the pre and post rest context. Honestly, I suspect a bit that whether it is worthy to try to recover from [1]. The Eh kthread solution could make things easier, but the codes for recovery from [1] has made code really complicated. It is more difficult to unify the nvme-pci, rdma and fc. How about just fail the resetting as the Keith's solution ? [1] io timeout when nvme_reset_work or the new nvme_post_reset_dev invoke nvme_wait_freeze. Thanks Jianchao