Hi James and Sagi Thanks for your kindly response and directive.
On 01/18/2018 05:08 AM, James Smart wrote: > On 1/17/2018 2:37 AM, Sagi Grimberg wrote: >> >>> After Sagi's nvme-rdma: fix concurrent reset and reconnect, the rdma ctrl >>> state is changed to RECONNECTING state >>> after some clearing and shutdown work, then some initializing procedure, >>> no matter reset work path or error recovery path. >>> The fc reset work also does the same thing. >>> So if we define the range that RESET_PREPARE includes scheduling gap and >>> disable and clear work, RESETTING includes initializing >>> procedure, RECONNECTING is very similar with RESETTING. >>> >>> Maybe we could do like this; >>> In nvme fc/rdma >>> - set state to RESET_PREPARE, queue reset_work/err_work >>> - clear/shutdown works, set state to RECONNECTING >> >> Should be fine. >> >>> In nvme pci >>> - set state to RESET_PREPARE, queue reset_work >>> - clear/shutdown works, set state to RESETTING >>> - initialization, set state to LIVE >> >> Given that we split reset state and we have a clear symmetry between >> the transports, do we want to maybe come up with a unique state that is >> coherent across all transports? >> >> Maybe we rename them to NVME_CTRL_SHUTTING_DOWN and >> NVME_CTRL_ESTABLISHING? I'm open for better names.. > > I'm leaning toward this latter suggestion - we need to define the states and > the actions they take. It seems to me, that RESETTING became the "init > controller" part in Jainchao's model. So maybe it's not the shutting down > that needs a new state, but rather the REINIT part. In fact, it is the nvme-pci need a new state. The "shutdown" part and "reinit" part in nvme-pci are both in RESETTING state. But in nvme-fc/rdma, they have a RECONNECTING state to mark the "reinit" part. So we have a SHUTTING_DOWN state to mark the "shutdown" part in nvme-pci and nvme-fc/rdma, but as James pointed out, there is a big difference in "reinit" part between nvme-pci and nvme-fc/rdma, we use a coherent name ESTABLISHING ? or separate names REINIT and RECONNECTING, for the "reinit" part. Thanks Jianchao