I think we need the NVME_CTRL_SCHED_RESET state. In fact I'm pretty sure some time in the past I already had it in a local tree as a generalization of rdma and loop already use NVME_CTRL_RESETTING (they set it before queueing the reset work).
I don't remember having it, but I might be wrong... Can you explain again why you think we need it? Sorry for being difficult, but I'm not exactly sure why it makes things better or simpler.