Hi Jianchao,
ctrl.tagset maybe NULL due to failure of io queue setup or blk-mq tagset allocation in nvme_reset_work. Then panic would come up. To fix this, just add ctrl.tagset check in nvme_scan_work.
This came up before (and forgotten...) I think we should not have state indicators other than ctrl->state. How about instead we add a new state NVME_CTRL_ADMIN_LIVE when we have no I/O queues.