• James Smart's avatar
    nvmet-fc: track hostport handle for associations · 58ab8ff9
    James Smart authored
    In preparation for sending LS requests for an association that
    terminates, save and track the hosthandle that is part of the
    LS's that are received to create associations.
    
    Support consists of:
    - Create a hostport structure that will be 1:1 mapped to a
      host port handle. The hostport structure is specific to
      a targetport.
    - Whenever an association is created, create a host port for
      the hosthandle the Create Association LS was received from.
      There will be only 1 hostport structure created, with all
      associations that have the same hosthandle sharing the
      hostport structure.
    - When the association is terminated, the hostport reference
      will be removed. After the last association for the host
      port is removed, the hostport will be deleted.
    - Add support for the new nvmet_fc_invalidate_host() interface.
      In the past, the LLDD didn't notify loss of connectivity to
      host ports - the LLD would simply reject new requests and wait
      for the kato timeout to kill the association. Now, when host
      port connectivity is lost, the LLDD can notify the transport.
      The transport will initiate the termination of all associations
      for that host port. When the last association has been terminated
      and the hosthandle will no longer be referenced, the new
      host_release callback will be made to the lldd.
    - For compatibility with prior behavior which didn't report the
      hosthandle:  the LLDD must set hosthandle to NULL. In these
      cases, not LS request will be made, and no host_release callbacks
      will be made either.
    Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    58ab8ff9
fc.c 70.8 KB