]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
nbft: Add SSNS 'unavailable' flag
authorTomas Bzatek <tbzatek@redhat.com>
Fri, 9 Feb 2024 17:11:35 +0000 (18:11 +0100)
committerDaniel Wagner <wagi@monom.org>
Mon, 18 Mar 2024 17:34:23 +0000 (18:34 +0100)
Certain pre-OS driver implementations (i.e. UEFI) may opt
to include SSNS records that failed to connect, caused either
by a temporary target inaccessibility or an invalid
configuration. Such reason is further indicated by TP8029
extended information.

This commit adds a flag indicating namespace availability
so that clients (nvme-cli) may either decide to skip such
record or make another connection attempt.

Signed-off-by: Tomas Bzatek <tbzatek@redhat.com>
src/nvme/nbft.c
src/nvme/nbft.h

index f2ffc21e962f87d225efedcb5da10310ed70a619..3bdbeb1ba1bc1e6a805f50ea1406afb52aad12ef 100644 (file)
@@ -246,6 +246,10 @@ static int read_ssns(struct nbft_info *nbft,
        ssns->nid_type = raw_ssns->nidt;
        ssns->nid = raw_ssns->nid;
 
+       /* flags */
+       ssns->unavailable = !!(le16_to_cpu(raw_ssns->flags) &
+                              NBFT_SSNS_UNAVAIL_NAMESPACE_UNAVAIL);
+
        /* security profile */
        if (raw_ssns->security_desc_index) {
                ssns->security = security_from_index(nbft, raw_ssns->security_desc_index);
index 48aaecf420fa4f219fbcf7548a057fac03075591..8bd415b68c65dd0f210db25fb35e77426a62a8db 100644 (file)
@@ -1180,6 +1180,8 @@ enum nbft_info_nid_type {
  *                             Descriptor) or 0 if not supported.
  * @dhcp_root_path_string:     DHCP Root Path Override string (SSNS Extended
  *                             Information Descriptor).
+ * @unavailable:               Namespace is unavailable as indicated by
+ *                             the pre-OS driver.
  */
 struct nbft_info_subsystem_ns {
        int index;
@@ -1200,6 +1202,7 @@ struct nbft_info_subsystem_ns {
        int controller_id;
        int asqsz;
        char *dhcp_root_path_string;
+       bool unavailable;
 };
 
 /**