From 8c21fd00c98582703f1d0f701cd5bbfca2644b40 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 19 Feb 2024 11:37:58 +0100 Subject: Adding upstream version 1.8. Signed-off-by: Daniel Baumann --- src/nvme/nbft.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/nvme/nbft.c') diff --git a/src/nvme/nbft.c b/src/nvme/nbft.c index 2c87088..f2ffc21 100644 --- a/src/nvme/nbft.c +++ b/src/nvme/nbft.c @@ -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, -- cgit v1.2.3