[PATCH 1/2] nvme_fc: fix localport resume using stale values
James Smart
james.smart at broadcom.com
Sun Oct 29 21:43:46 PDT 2017
On 10/29/2017 5:28 AM, Sagi Grimberg wrote:
>
>> The localport resume was not updating the lldd ops structure. If the
>> lldd is unloaded and reloaded, the ops pointers will differ.
>
> Question, why is the lport kept around if the lldd unloaded?
It's kept around due to ref counting of the attached rports and
controllers who have not timed out and torn down. The fact that the
lldd could be unloaded is an artifact of supporting the reg/unreg and
the fact that the transport doesn't care what the driver does after the
unreg is done, and the re-reg only cares that it's done quickly enough
that there are still references so the device and it can revive the old
structures. The reg/unreg/re-reg support is mainly there to support the
lldd performing an adapter reset for some type of error recovery (could
come from the SCSI stack requesting it for error escalation). Thus the
lldd can reset the adapter, perform it's normal init steps again an
re-reg the lport and rports, and the controllers resume under their
ctlr_loss_tmo/dev_loss_tmo timers and consumers of the nvme devices are
not affected other than a short pause.
-- james
More information about the Linux-nvme
mailing list