Comment 16 for bug 1828440

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/train)

Reviewed: https://review.opendev.org/694314
Committed: https://git.openstack.org/cgit/openstack/os-brick/commit/?id=c76b6dc514b8e17e1211e4a7465a7e2a635adea3
Submitter: Zuul
Branch: stable/train

commit c76b6dc514b8e17e1211e4a7465a7e2a635adea3
Author: Gorka Eguileor <email address hidden>
Date: Mon Oct 14 16:42:22 2019 +0200

    Fix FC scan too broad

    After some changes to the FC connector we have introduced a regression
    on the way we do the scans, and we end up scanning using wildcards even
    though we shouldn't.

    The targets in the "initiator_target_map" don't mean that they are all
    connected, so we must take that into account.

    With the current code, if we have the following connections:

    HBA host7 ---- SWITCH ---- port W (channel 0, target 2)
              \--- SWITCH ---- port X (channel 0, target 3)

    HBA host8 ---- SWITCH ---- port Y (channel 0, target 2)
              \--- SWITCH ---- port Z (channel 0, target 3)

    We will end up with the following scans 8 scans for LUN L:

      - - L > host7
      - - L > host7
      0 2 L > host7
      0 3 L > host7

      0 2 L > host8
      0 3 L > host8
      - - L > host8
      - - L > host8

    Which correspond to the responses from _get_hba_channel_scsi_target like
    this:

                   port Y port Z port W port X
      host7 ... ['-','-',L] ['-','-',L] ['0','2',L] ['0','3',L]
      host8 ... ['0','2',L] ['0','3',L] ['-','-',L] ['-','-',L]

    And we should only be doing 4 scans:

      0 2 L > host7
      0 3 L > host7
      0 2 L > host8
      0 3 L > host8

    Most storage arrays get their target ports automatically detected by the
    Linux FC initiator and sysfs gets populated with that information, but
    there are some that don't.

    We'll do a narrow scan using the channel, target, and LUN for the former
    and a wider scan for the latter.

    If all paths to a former type of array were down on the system boot the
    array could look like it's of the latter type and make us bring us
    unwanted volumes into the system by doing a broad scan.

    To prevent this from happening Cinder drivers can use the
    "enable_wildcard_scan" key in the connection information to let us know
    they don't want us to do broad scans even if no target ports are found
    (because they know the cause is there's no connection).

    Close-Bug: #1849504
    Related-Bug: #1765000
    Related-Bug: #1828440
    Change-Id: I5dbefaff43fb902b15117b443fc92f7b6a6ad8c9
    (cherry picked from commit 708733e49598145eb8e898d486723dc3df00a52f)