FC scan tries to find devices using unconnected HBAs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
os-brick |
Fix Released
|
Undecided
|
Gorka Eguileor |
Bug Description
Current OS-Brick FC code always scans all present HBAs, which could unintentionally add unwanted devices, for example in the following environment:
+-------+ +------+ +-----------------+
| host5 +-----+ +---+ Port.A VNX |
| | | FCSW +---+ Port.B |
| host6 +-----+ | +-----------------+
| | +------+
| | +------+
| host7 +-----+ | +-----------------+
| | | FCSW +---+ Port.C XtremIO |
| host8 +-----+ +---+ Port.D |
+-------+ +------+ +-----------------+
We should limit the HBAs where we scan as much as possible:
- If we have an initiator map, we should only scan on the HBAs that are there
- If we are in the single WWNN for all ports case we should only scan HBAs that are connected
- If we can't do any better we scan all HBAs with wildcards
Changed in os-brick: | |
assignee: | nobody → Gorka Eguileor (gorka) |
OpenStack Infra (hudson-openstack) wrote : Fix proposed to os-brick (master) | #1 |
Changed in os-brick: | |
status: | New → In Progress |
OpenStack Infra (hudson-openstack) wrote : Fix merged to os-brick (master) | #2 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: master
commit db40d980440ef6c
Author: Gorka Eguileor <email address hidden>
Date: Wed Apr 18 12:34:37 2018 +0200
Fix FC: Only scan connected HBAs
Current OS-Brick FC code always scans all present HBAs, which could
unintentionally add unwanted devices, for example in the following
environment:
+-------+ +------+ +-----------------+
| host5 +-----+ +---+ Port.A VNX |
| | | FCSW +---+ Port.B |
| host6 +-----+ | +-----------------+
| | +------+
| | +------+
| host7 +-----+ | +-----------------+
| | | FCSW +---+ Port.C XtremIO |
| host8 +-----+ +---+ Port.D |
+-------+ +------+ +-----------------+
This patch limits what HBAs get scanned:
- If we have an initiator map, we only scan on the HBAs that are there
- If we are in the single WWNN for all ports case we only scan HBAs that
are connected
- If we can't do any better we scan all HBAs with wildcards
Closes-Bug: #1765000
Change-Id: I3ba8f9683211d5
Changed in os-brick: | |
status: | In Progress → Fix Released |
OpenStack Infra (hudson-openstack) wrote : Fix proposed to os-brick (stable/queens) | #3 |
Fix proposed to branch: stable/queens
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Fix merged to os-brick (stable/queens) | #4 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/queens
commit 8fab1a01cb03155
Author: Gorka Eguileor <email address hidden>
Date: Wed Apr 18 12:34:37 2018 +0200
Fix FC: Only scan connected HBAs
Current OS-Brick FC code always scans all present HBAs, which could
unintentionally add unwanted devices, for example in the following
environment:
+-------+ +------+ +-----------------+
| host5 +-----+ +---+ Port.A VNX |
| | | FCSW +---+ Port.B |
| host6 +-----+ | +-----------------+
| | +------+
| | +------+
| host7 +-----+ | +-----------------+
| | | FCSW +---+ Port.C XtremIO |
| host8 +-----+ +---+ Port.D |
+-------+ +------+ +-----------------+
This patch limits what HBAs get scanned:
- If we have an initiator map, we only scan on the HBAs that are there
- If we are in the single WWNN for all ports case we only scan HBAs that
are connected
- If we can't do any better we scan all HBAs with wildcards
Closes-Bug: #1765000
Change-Id: I3ba8f9683211d5
(cherry picked from commit db40d980440ef6c
tags: | added: in-stable-queens |
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/os-brick 2.5.0 | #5 |
This issue was fixed in the openstack/os-brick 2.5.0 release.
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/os-brick 2.3.2 | #6 |
This issue was fixed in the openstack/os-brick 2.3.2 release.
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (master) | #7 |
Related fix proposed to branch: master
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (master) | #8 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: master
commit 70899a9aa3e4bdd
Author: Gorka Eguileor <email address hidden>
Date: Thu May 9 17:25:03 2019 +0200
FC: Ignore some HBAs from map for single WWNN
Current FC OS-Brick code only checks for single WWNN to exclude some
HBAs from scanning when we don't receive an initiator_
the backend.
There are storage arrays,like XtremIO, that due to their architecture
and design have all target ports automatically mapped to LUNs and are
returning the initiator_
connected to our HBAs, so we end up with another case of bug #1765000.
This patch makes sure that we always check if the target implements
single WWNN, not only when we don't receive the initiator_
With this we decrease the likelihood of ending with unexpected devices
in our system, because now we will ignore unconnected HBAs (even if
reported in the initiator_
target.
Related-Bug: #1765000
Closes-Bug: #1828440
Change-Id: I02c208142f5b34
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/stein) | #9 |
Related fix proposed to branch: stable/stein
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/stein) | #10 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/stein
commit 1ee6acb509910d7
Author: Gorka Eguileor <email address hidden>
Date: Thu May 9 17:25:03 2019 +0200
FC: Ignore some HBAs from map for single WWNN
Current FC OS-Brick code only checks for single WWNN to exclude some
HBAs from scanning when we don't receive an initiator_
the backend.
There are storage arrays,like XtremIO, that due to their architecture
and design have all target ports automatically mapped to LUNs and are
returning the initiator_
connected to our HBAs, so we end up with another case of bug #1765000.
This patch makes sure that we always check if the target implements
single WWNN, not only when we don't receive the initiator_
With this we decrease the likelihood of ending with unexpected devices
in our system, because now we will ignore unconnected HBAs (even if
reported in the initiator_
target.
Related-Bug: #1765000
Closes-Bug: #1828440
Change-Id: I02c208142f5b34
(cherry picked from commit 70899a9aa3e4bdd
tags: | added: in-stable-stein |
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/rocky) | #11 |
Related fix proposed to branch: stable/rocky
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/queens) | #12 |
Related fix proposed to branch: stable/queens
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/rocky) | #13 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/rocky
commit 64cbaaea47822df
Author: Gorka Eguileor <email address hidden>
Date: Thu May 9 17:25:03 2019 +0200
FC: Ignore some HBAs from map for single WWNN
Current FC OS-Brick code only checks for single WWNN to exclude some
HBAs from scanning when we don't receive an initiator_
the backend.
There are storage arrays,like XtremIO, that due to their architecture
and design have all target ports automatically mapped to LUNs and are
returning the initiator_
connected to our HBAs, so we end up with another case of bug #1765000.
This patch makes sure that we always check if the target implements
single WWNN, not only when we don't receive the initiator_
With this we decrease the likelihood of ending with unexpected devices
in our system, because now we will ignore unconnected HBAs (even if
reported in the initiator_
target.
Related-Bug: #1765000
Closes-Bug: #1828440
Change-Id: I02c208142f5b34
(cherry picked from commit 70899a9aa3e4bdd
(cherry picked from commit 1ee6acb509910d7
tags: | added: in-stable-rocky |
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/queens) | #14 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/queens
commit 66d9d2a908e9bae
Author: Gorka Eguileor <email address hidden>
Date: Thu May 9 17:25:03 2019 +0200
FC: Ignore some HBAs from map for single WWNN
Current FC OS-Brick code only checks for single WWNN to exclude some
HBAs from scanning when we don't receive an initiator_
the backend.
There are storage arrays,like XtremIO, that due to their architecture
and design have all target ports automatically mapped to LUNs and are
returning the initiator_
connected to our HBAs, so we end up with another case of bug #1765000.
This patch makes sure that we always check if the target implements
single WWNN, not only when we don't receive the initiator_
With this we decrease the likelihood of ending with unexpected devices
in our system, because now we will ignore unconnected HBAs (even if
reported in the initiator_
target.
Related-Bug: #1765000
Closes-Bug: #1828440
Change-Id: I02c208142f5b34
(cherry picked from commit 70899a9aa3e4bdd
(cherry picked from commit 1ee6acb509910d7
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (master) | #15 |
Related fix proposed to branch: master
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (master) | #16 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: master
commit 708733e49598145
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_
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_
this:
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_
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: I5dbefaff43fb90
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/train) | #17 |
Related fix proposed to branch: stable/train
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/train) | #18 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/train
commit c76b6dc514b8e17
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_
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_
this:
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_
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: I5dbefaff43fb90
(cherry picked from commit 708733e49598145
tags: | added: in-stable-train |
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/stein) | #19 |
Related fix proposed to branch: stable/stein
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/stein) | #20 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/stein
commit 893350304152997
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_
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_
this:
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_
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: I5dbefaff43fb90
(cherry picked from commit 708733e49598145
(cherry picked from commit c76b6dc514b8e17
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/queens) | #21 |
Related fix proposed to branch: stable/queens
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to os-brick (stable/rocky) | #22 |
Related fix proposed to branch: stable/rocky
Review: https:/
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/rocky) | #23 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/rocky
commit 34a3ca23b3184e9
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_
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_
this:
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_
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: I5dbefaff43fb90
(cherry picked from commit 708733e49598145
(cherry picked from commit c76b6dc514b8e17
(cherry picked from commit 893350304152997
OpenStack Infra (hudson-openstack) wrote : Related fix merged to os-brick (stable/queens) | #24 |
Reviewed: https:/
Committed: https:/
Submitter: Zuul
Branch: stable/queens
commit 2e46deeaa109f46
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_
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_
this:
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_
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: I5dbefaff43fb90
(cherry picked from commit 708733e49598145
(cherry picked from commit c76b6dc514b8e17
(cherry picked from commit 893350304152997
Fix proposed to branch: master /review. openstack. org/562219
Review: https:/