Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nbft: Fix (struct nbft_info_subsystem_ns).num_hfis off-by-one #766

Merged
merged 5 commits into from
Feb 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/nvme/nbft.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,29 @@ static int read_ssns(struct nbft_info *nbft,
ret = -EINVAL;
goto fail;
}
ssns->num_hfis = 1;
for (i = 0; i < le16_to_cpu(raw_ssns->secondary_hfi_assoc_obj.length); i++) {
bool duplicate = false;
int j;

for (j = 0; j < i; j++) {
if (ss_hfi_indexes[i] == ss_hfi_indexes[j]) {
duplicate = true;
break;
}
}

if (!duplicate &&
ss_hfi_indexes[i] == raw_ssns->primary_hfi_desc_index)
duplicate = true;

if (duplicate) {
nvme_msg(NULL, LOG_DEBUG,
"file %s: SSNS %d skipping duplicate HFI index %d\n",
nbft->filename, ssns->index, ss_hfi_indexes[i]);
continue;
}

ssns->hfis[i + 1] = hfi_from_index(nbft, ss_hfi_indexes[i]);
if (ss_hfi_indexes[i] && !ssns->hfis[i + 1])
nvme_msg(NULL, LOG_DEBUG,
Expand Down
54 changes: 54 additions & 0 deletions test/nbft/diffs/NBFT-Dell.PowerEdge.R660-fw1.5.5-single
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
raw_nbft_size=930
host.id=44454c4c44010448030b8c04f445833
host.nqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0044-4410-8030-b8c04f445833
host.host_id_configured=1
host.host_nqn_configured=1
host.primary=0
hfi_list[0]->index=1
hfi_list[0]->transport=tcp
hfi_list[0]->tcp_info.pci_sbdf=27136
hfi_list[0]->tcp_info.mac_addr=062bcbeb70
hfi_list[0]->tcp_info.vlan=0
hfi_list[0]->tcp_info.ip_origin=94
hfi_list[0]->tcp_info.ipaddr=172.18.240.1
hfi_list[0]->tcp_info.subnet_mask_prefix=24
hfi_list[0]->tcp_info.gateway_ipaddr=0.0.0.0
hfi_list[0]->tcp_info.route_metric=500
hfi_list[0]->tcp_info.primary_dns_ipaddr=0.0.0.0
hfi_list[0]->tcp_info.secondary_dns_ipaddr=0.0.0.0
hfi_list[0]->tcp_info.dhcp_server_ipaddr=
hfi_list[0]->tcp_info.host_name=(null)
hfi_list[0]->tcp_info.this_hfi_is_default_route=1
hfi_list[0]->tcp_info.dhcp_override=0
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=172.18.240.60
subsystem_ns_list[0]->trsvcid=4420
subsystem_ns_list[0]->subsys_port_id=0
subsystem_ns_list[0]->nsid=270
subsystem_ns_list[0]->nid_type=2
subsystem_ns_list[0]->nid=5380b42fc0c5de718ccf9680be3ca7
subsystem_ns_list[0]->subsys_nqn=nqn.1988-11.com.dell:powerstore:00:88b402df2d762AA7AF94
subsystem_ns_list[0]->pdu_header_digest_required=0
subsystem_ns_list[0]->data_digest_required=0
subsystem_ns_list[0]->controller_id=4105
subsystem_ns_list[0]->asqsz=0
subsystem_ns_list[0]->dhcp_root_path_string=(null)
subsystem_ns_list[1]->index=2
subsystem_ns_list[1]->num_hfis=1
subsystem_ns_list[1]->hfis[0]->index=1
subsystem_ns_list[1]->transport=tcp
subsystem_ns_list[1]->traddr=172.18.240.60
subsystem_ns_list[1]->trsvcid=4420
subsystem_ns_list[1]->subsys_port_id=0
subsystem_ns_list[1]->nsid=1671
subsystem_ns_list[1]->nid_type=2
subsystem_ns_list[1]->nid=f4c66fce74afdb8ccf96807eaeae
subsystem_ns_list[1]->subsys_nqn=nqn.1988-11.com.dell:powerstore:00:88b402df2d762AA7AF94
subsystem_ns_list[1]->pdu_header_digest_required=0
subsystem_ns_list[1]->data_digest_required=0
subsystem_ns_list[1]->controller_id=4105
subsystem_ns_list[1]->asqsz=0
subsystem_ns_list[1]->dhcp_root_path_string=(null)
60 changes: 60 additions & 0 deletions test/nbft/diffs/NBFT-Dell.PowerEdge.R760
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
raw_nbft_size=1017
host.id=44454c4c34010368038b2c04f313233
host.nqn=nqn.1988-11.com.dell:PowerEdge.R760.1234567
host.host_id_configured=1
host.host_nqn_configured=1
host.primary=0
hfi_list[0]->index=1
hfi_list[0]->transport=tcp
hfi_list[0]->tcp_info.pci_sbdf=16384
hfi_list[0]->tcp_info.mac_addr=b02628e87ce
hfi_list[0]->tcp_info.vlan=0
hfi_list[0]->tcp_info.ip_origin=82
hfi_list[0]->tcp_info.ipaddr=100.71.245.232
hfi_list[0]->tcp_info.subnet_mask_prefix=24
hfi_list[0]->tcp_info.gateway_ipaddr=100.71.245.254
hfi_list[0]->tcp_info.route_metric=500
hfi_list[0]->tcp_info.primary_dns_ipaddr=100.64.0.5
hfi_list[0]->tcp_info.secondary_dns_ipaddr=100.64.0.6
hfi_list[0]->tcp_info.dhcp_server_ipaddr=100.71.245.254
hfi_list[0]->tcp_info.host_name=(null)
hfi_list[0]->tcp_info.this_hfi_is_default_route=1
hfi_list[0]->tcp_info.dhcp_override=1
discovery_list[0]->index=1
discovery_list[0]->hfi->index=1
discovery_list[0]->uri=nvme+tcp://100.71.103.50:8009/
discovery_list[0]->nqn=nqn.2014-08.org.nvmexpress.discovery
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->discovery->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=100.71.103.48
subsystem_ns_list[0]->trsvcid=4420
subsystem_ns_list[0]->subsys_port_id=0
subsystem_ns_list[0]->nsid=148
subsystem_ns_list[0]->nid_type=2
subsystem_ns_list[0]->nid=c8244ed9c15f53b8ccf96802efca
subsystem_ns_list[0]->subsys_nqn=nqn.1988-11.com.dell:powerstore:00:2a64abf1c5b81F6C4549
subsystem_ns_list[0]->pdu_header_digest_required=0
subsystem_ns_list[0]->data_digest_required=0
subsystem_ns_list[0]->controller_id=5
subsystem_ns_list[0]->asqsz=0
subsystem_ns_list[0]->dhcp_root_path_string=(null)
subsystem_ns_list[1]->index=2
subsystem_ns_list[1]->discovery->index=1
subsystem_ns_list[1]->num_hfis=1
subsystem_ns_list[1]->hfis[0]->index=1
subsystem_ns_list[1]->transport=tcp
subsystem_ns_list[1]->traddr=100.71.103.49
subsystem_ns_list[1]->trsvcid=4420
subsystem_ns_list[1]->subsys_port_id=0
subsystem_ns_list[1]->nsid=148
subsystem_ns_list[1]->nid_type=2
subsystem_ns_list[1]->nid=c8244ed9c15f53b8ccf96802efca
subsystem_ns_list[1]->subsys_nqn=nqn.1988-11.com.dell:powerstore:00:2a64abf1c5b81F6C4549
subsystem_ns_list[1]->pdu_header_digest_required=0
subsystem_ns_list[1]->data_digest_required=0
subsystem_ns_list[1]->controller_id=4166
subsystem_ns_list[1]->asqsz=0
subsystem_ns_list[1]->dhcp_root_path_string=(null)
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-auto-ipv6
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ hfi_list[0]->tcp_info.dhcp_override=0
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=fd09:9a46:b5c1:1ff:5054:ff:fefd:9e66
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-dhcp-ipv4
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->discovery->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=192.168.49.10
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-dhcp-ipv6
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ hfi_list[0]->tcp_info.dhcp_override=1
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=fddf:d:f:49::10
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-rhpoc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ hfi_list[0]->tcp_info.dhcp_override=0
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=192.168.101.20
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-static-ipv4
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ hfi_list[0]->tcp_info.dhcp_override=0
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=192.168.49.10
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-static-ipv4-discovery
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->discovery->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=192.168.49.10
subsystem_ns_list[0]->trsvcid=4420
Expand Down
1 change: 0 additions & 1 deletion test/nbft/diffs/NBFT-static-ipv6
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ hfi_list[0]->tcp_info.dhcp_override=0
subsystem_ns_list[0]->index=1
subsystem_ns_list[0]->num_hfis=1
subsystem_ns_list[0]->hfis[0]->index=1
subsystem_ns_list[0]->hfis[1]->index=1
subsystem_ns_list[0]->transport=tcp
subsystem_ns_list[0]->traddr=fd09:9a46:b5c1:1fe::13f
subsystem_ns_list[0]->trsvcid=4420
Expand Down
2 changes: 2 additions & 0 deletions test/nbft/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ tables = [
'NBFT-static-ipv4',
'NBFT-static-ipv4-discovery',
'NBFT-static-ipv6',
'NBFT-Dell.PowerEdge.R760',
'NBFT-Dell.PowerEdge.R660-fw1.5.5-single'
]

tables_bad = [
Expand Down
Binary file not shown.
1 change: 1 addition & 0 deletions test/nbft/tables/NBFT-Dell.PowerEdge.R760