From c738d415af2d154ba58f387d59766bd28de39c6d Mon Sep 17 00:00:00 2001 From: Martin Belanger Date: Wed, 11 Mar 2026 10:50:04 -0400 Subject: [PATCH 1/2] libnvme: replace manual accessor functions with auto-generated ones Remove hand-written getter/setter implementations from tree.c and tree.h for nvme_host, nvme_subsystem, and nvme_ctrl structs, replacing them with automatically generated equivalents produced by generate-accessors. Supporting changes: - Rename structs-to-include.txt to generate-accessors-include.list for clarity and consistency with the new generate-accessors-exclude.list - Add generate-accessors-exclude.list to suppress generation for members that have custom accessor logic (pdc_enabled, state, address, etc.) - Introduce SET_FMT/GET_FMT macros in generate-accessors.c to make the naming convention (nvme_foo_get/nvme_foo_set) configurable in one place - Wire accessors_dep into libnvme_dep and libnvme_test_dep, and add ccan_dep into accessors_dep, so dependents get the correct include paths - Include from libnvme.h to expose the generated API Signed-off-by: Martin Belanger --- libnvme/src/libnvme.h | 1 + libnvme/src/meson.build | 4 + .../src/nvme/generate-accessors-exclude.list | 10 + ...de.txt => generate-accessors-include.list} | 0 libnvme/src/nvme/generate-accessors.c | 57 ++- libnvme/src/nvme/meson.build | 6 +- libnvme/src/nvme/tree.c | 277 ------------ libnvme/src/nvme/tree.h | 404 ------------------ 8 files changed, 54 insertions(+), 705 deletions(-) create mode 100644 libnvme/src/nvme/generate-accessors-exclude.list rename libnvme/src/nvme/{structs-to-include.txt => generate-accessors-include.list} (100%) diff --git a/libnvme/src/libnvme.h b/libnvme/src/libnvme.h index e7ed221685..56416dcd6e 100644 --- a/libnvme/src/libnvme.h +++ b/libnvme/src/libnvme.h @@ -25,6 +25,7 @@ extern "C" { #include #include #include +#include #ifdef __cplusplus } diff --git a/libnvme/src/meson.build b/libnvme/src/meson.build index 44a848e386..f17311681c 100644 --- a/libnvme/src/meson.build +++ b/libnvme/src/meson.build @@ -69,6 +69,7 @@ pkg.generate(libnvme, libnvme_dep = declare_dependency( dependencies: [ json_c_dep.partial_dependency(compile_args: true, includes: true), + accessors_dep, ], link_with: libnvme, include_directories: '.', @@ -86,6 +87,9 @@ libnvme_test = library( libnvme_test_dep = declare_dependency( link_with: libnvme_test, include_directories: '.', + dependencies: [ + accessors_dep, + ], ) mode = 'rw-r--r--' diff --git a/libnvme/src/nvme/generate-accessors-exclude.list b/libnvme/src/nvme/generate-accessors-exclude.list new file mode 100644 index 0000000000..6fbbf1228c --- /dev/null +++ b/libnvme/src/nvme/generate-accessors-exclude.list @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +nvme_ns::generic_name +nvme_ctrl::state +nvme_ctrl::address +nvme_ctrl::phy_slot +nvme_ctrl::subsysnqn +nvme_path::queue_depth +nvme_host::pdc_enabled + diff --git a/libnvme/src/nvme/structs-to-include.txt b/libnvme/src/nvme/generate-accessors-include.list similarity index 100% rename from libnvme/src/nvme/structs-to-include.txt rename to libnvme/src/nvme/generate-accessors-include.list diff --git a/libnvme/src/nvme/generate-accessors.c b/libnvme/src/nvme/generate-accessors.c index d3ef1485ef..22b85a44c0 100644 --- a/libnvme/src/nvme/generate-accessors.c +++ b/libnvme/src/nvme/generate-accessors.c @@ -58,6 +58,16 @@ #define SPACES " \t\n\r" #define streq(a, b) (strcmp((a), (b)) == 0) +/** + * Function naming convention: + * This controls whether to generate the functions as: + * nvme_foo_get() / nvme_foo_set() + * Or: + * nvme_get_foo() / nvme_set_foo() + */ +#define SET_FMT "%s_set_%s" /* alternate name: "%s_%s_set" */ +#define GET_FMT "%s_get_%s" /* alternate name: "%s_%s_get" */ + static const char *banner = "// SPDX-License-Identifier: LGPL-2.1-or-later\n" "/**\n" @@ -207,8 +217,8 @@ static char *to_uppercase(char *s) * Any character that violates these rules is replaced with an underscore ('_'). * The string is always modified in place; no new memory is allocated. * - * @param s Pointer to the NUL-terminated string to sanitize. - * If @p s is NULL or points to an empty string, the function does nothing. + * @param s Pointer to the NUL-terminated string to sanitize. If @s is NULL or + * points to an empty string, the function does nothing. * * @note This function does not check for C keywords or identifier length limits. * @@ -808,7 +818,7 @@ typedef struct Conf { bool verbose; const char *c_fname; /* Generated output *.c file name */ const char *h_fname; /* Generated output *.h file name */ - const char *l_fname; /* Generated ou5tput *.ld file name */ + const char *l_fname; /* Generated output *.ld file name */ const char *prefix; /* Prefix added to each functions */ StringList_t hdr_files; /* Input header file list */ StringList_t incl_list; /* Inclusion list (read from --incl) */ @@ -1269,19 +1279,20 @@ static void generate_hdr(FILE *generated_hdr, StructInfo_t *si, Conf_t *conf) if (!members->is_const) { /* No setter on const members */ if (members->is_char_array || streq(members->type, "const char *")) fprintf(generated_hdr, - "void %s%s_%s_set(struct %s *p, const char *%s);\n", - conf->prefix, si->name, - members->name, si->name, members->name); + "void %s" SET_FMT "(struct %s *p, const char *%s);\n", + conf->prefix, si->name, members->name, + si->name, members->name); else fprintf(generated_hdr, - "void %s%s_%s_set(struct %s *p, %s %s);\n", - conf->prefix, si->name, - members->name, si->name, members->type, members->name); + "void %s" SET_FMT "(struct %s *p, %s %s);\n", + conf->prefix, si->name, members->name, + si->name, members->type, members->name); } /* Getter method */ - fprintf(generated_hdr, "%s %s%s_%s_get(const struct %s *p);\n\n", - members->type, conf->prefix, si->name, members->name, si->name); + fprintf(generated_hdr, "%s %s" GET_FMT "(const struct %s *p);\n\n", + members->type, conf->prefix, si->name, members->name, + si->name); } } @@ -1309,7 +1320,7 @@ static void generate_src(FILE *generated_src, StructInfo_t *si, Conf_t *conf) if (!member->is_char_array && streq(member->type, "const char *")) { /* dynamic string */ fprintf(generated_src, - "void %s%s_%s_set(struct %s *p, const char *%s) {\n" + "void %s" SET_FMT "(struct %s *p, const char *%s) {\n" " free(p->%s);\n" " p->%s = %s ? strdup(%s) : NULL;\n" "}\n\n", @@ -1323,7 +1334,7 @@ static void generate_src(FILE *generated_src, StructInfo_t *si, Conf_t *conf) unsigned long sz = strtoul(member->array_size, NULL, 10); fprintf(generated_src, - "void %s%s_%s_set(struct %s *p, const char *%s) {\n" + "void %s" SET_FMT "(struct %s *p, const char *%s) {\n" " strncpy(p->%s, %s, %lu);\n" " p->%s[%lu] = '\\0';\n" "}\n\n", @@ -1333,7 +1344,7 @@ static void generate_src(FILE *generated_src, StructInfo_t *si, Conf_t *conf) member->name, sz - 1); } else { fprintf(generated_src, - "void %s%s_%s_set(struct %s *p, const char *%s) {\n" + "void %s" SET_FMT "(struct %s *p, const char *%s) {\n" " strncpy(p->%s, %s, %s);\n" " p->%s[%s - 1] = '\\0';\n" "}\n\n", @@ -1344,22 +1355,22 @@ static void generate_src(FILE *generated_src, StructInfo_t *si, Conf_t *conf) } } else { /* numeric or struct */ fprintf(generated_src, - "void %s%s_%s_set(struct %s *p, %s %s) {\n" + "void %s" SET_FMT "(struct %s *p, %s %s) {\n" " p->%s = %s;\n" "}\n\n", - conf->prefix, si->name, member->name, si->name, - member->type, member->name, + conf->prefix, si->name, member->name, + si->name, member->type, member->name, member->name, member->name); } } /* Getter method */ - fprintf(generated_src, "%s %s%s_%s_get(const struct %s *p) {\n" + fprintf(generated_src, "%s %s" GET_FMT "(const struct %s *p) {\n" " return p->%s;\n" "}\n\n", - member->type, conf->prefix, si->name, member->name, si->name, - member->name); + member->type, conf->prefix, si->name, member->name, + si->name, member->name); } } @@ -1368,7 +1379,7 @@ static void generate_src(FILE *generated_src, StructInfo_t *si, Conf_t *conf) * one struct. * * Writes linker entries for each member in @si to the provided output - * FILE (@generated_ld). Handles special + * FILE (@generated_ld). * * @param generated_ld: FILE* to write implementations to. * @param si: Pointer to the struct description. @@ -1380,8 +1391,8 @@ static void generate_ld(FILE *generated_ld, StructInfo_t *si, Conf_t *conf) Member_t *member = &si->members[m]; fprintf(generated_ld, - "\t\t%s%s_%s_get;\n" - "\t\t%s%s_%s_set;\n", + "\t\t%s" GET_FMT ";\n" + "\t\t%s" SET_FMT ";\n", conf->prefix, si->name, member->name, conf->prefix, si->name, member->name); } diff --git a/libnvme/src/nvme/meson.build b/libnvme/src/nvme/meson.build index 241f01a3d6..cb87d4a114 100644 --- a/libnvme/src/nvme/meson.build +++ b/libnvme/src/nvme/meson.build @@ -41,7 +41,8 @@ accessors_ch_custom_tgt = custom_target( '--h-out', '@OUTPUT0@', '--c-out', '@OUTPUT1@', '--ld-out', '@OUTPUT2@', - '--incl', join_paths(meson.current_source_dir(), 'structs-to-include.txt'), + '--incl', join_paths(meson.current_source_dir(), 'generate-accessors-include.list'), + '--excl', join_paths(meson.current_source_dir(), 'generate-accessors-exclude.list'), '@INPUT@', ], build_by_default: true, @@ -64,6 +65,9 @@ accessors_dep = declare_dependency( tgt_accessors_h, ], include_directories: '.', + dependencies: [ + ccan_dep, + ], ) if meson.version().version_compare('>=1.4.0') diff --git a/libnvme/src/nvme/tree.c b/libnvme/src/nvme/tree.c index ea9fb3a230..a041281b16 100644 --- a/libnvme/src/nvme/tree.c +++ b/libnvme/src/nvme/tree.c @@ -415,44 +415,6 @@ struct nvme_global_ctx *nvme_host_get_global_ctx(nvme_host_t h) return h->ctx; } -const char *nvme_host_get_hostnqn(nvme_host_t h) -{ - return h->hostnqn; -} - -const char *nvme_host_get_hostid(nvme_host_t h) -{ - return h->hostid; -} - -const char *nvme_host_get_hostsymname(nvme_host_t h) -{ - return h->hostsymname; -} - -void nvme_host_set_hostsymname(nvme_host_t h, const char *hostsymname) -{ - free(h->hostsymname); - h->hostsymname = NULL; - - if (hostsymname) - h->hostsymname = strdup(hostsymname); -} - -const char *nvme_host_get_dhchap_key(nvme_host_t h) -{ - return h->dhchap_key; -} - -void nvme_host_set_dhchap_key(nvme_host_t h, const char *key) -{ - free(h->dhchap_key); - h->dhchap_key = NULL; - - if (key) - h->dhchap_key = strdup(key); -} - void nvme_host_set_pdc_enabled(nvme_host_t h, bool enabled) { h->pdc_enabled_valid = true; @@ -498,50 +460,11 @@ const char *nvme_subsystem_get_nqn(nvme_subsystem_t s) return s->subsysnqn; } -const char *nvme_subsystem_get_sysfs_dir(nvme_subsystem_t s) -{ - return s->sysfs_dir; -} - -const char *nvme_subsystem_get_name(nvme_subsystem_t s) -{ - return s->name; -} - const char *nvme_subsystem_get_type(nvme_subsystem_t s) { return s->subsystype; } -const char *nvme_subsystem_get_application(nvme_subsystem_t s) -{ - return s->application; -} - -void nvme_subsystem_set_application(nvme_subsystem_t s, const char *a) -{ - free(s->application); - s->application = NULL; - - if (a) - s->application = strdup(a); -} - -const char *nvme_subsystem_get_iopolicy(nvme_subsystem_t s) -{ - return s->iopolicy; -} - -const char *nvme_subsystem_get_model(nvme_subsystem_t s) -{ - return s->model; -} - -const char *nvme_subsystem_get_serial(nvme_subsystem_t s) -{ - return s->serial; -} - const char *nvme_subsystem_get_fw_rev(nvme_subsystem_t s) { return s->firmware; @@ -909,16 +832,6 @@ nvme_ns_t nvme_path_get_ns(nvme_path_t p) return p->n; } -const char *nvme_path_get_sysfs_dir(nvme_path_t p) -{ - return p->sysfs_dir; -} - -const char *nvme_path_get_name(nvme_path_t p) -{ - return p->name; -} - int nvme_path_get_queue_depth(nvme_path_t p) { _cleanup_free_ char *queue_depth = NULL; @@ -931,16 +844,6 @@ int nvme_path_get_queue_depth(nvme_path_t p) return p->queue_depth; } -const char *nvme_path_get_ana_state(nvme_path_t p) -{ - return p->ana_state; -} - -const char *nvme_path_get_numa_nodes(nvme_path_t p) -{ - return p->numa_nodes; -} - void nvme_free_path(struct nvme_path *p) { list_del_init(&p->entry); @@ -1027,15 +930,6 @@ nvme_subsystem_t nvme_ctrl_get_subsystem(nvme_ctrl_t c) return c->s; } -const char *nvme_ctrl_get_name(nvme_ctrl_t c) -{ - return c->name; -} - -const char *nvme_ctrl_get_sysfs_dir(nvme_ctrl_t c) -{ - return c->sysfs_dir; -} const char *nvme_ctrl_get_subsysnqn(nvme_ctrl_t c) { @@ -1078,16 +972,6 @@ const char *nvme_ctrl_get_phy_slot(nvme_ctrl_t c) return c->phy_slot ? c->phy_slot : ""; } -const char *nvme_ctrl_get_firmware(nvme_ctrl_t c) -{ - return c->firmware; -} - -const char *nvme_ctrl_get_model(nvme_ctrl_t c) -{ - return c->model; -} - const char *nvme_ctrl_get_state(nvme_ctrl_t c) { char *state = c->state; @@ -1097,51 +981,6 @@ const char *nvme_ctrl_get_state(nvme_ctrl_t c) return c->state; } -const char *nvme_ctrl_get_numa_node(nvme_ctrl_t c) -{ - return c->numa_node; -} - -const char *nvme_ctrl_get_queue_count(nvme_ctrl_t c) -{ - return c->queue_count; -} - -const char *nvme_ctrl_get_serial(nvme_ctrl_t c) -{ - return c->serial; -} - -const char *nvme_ctrl_get_sqsize(nvme_ctrl_t c) -{ - return c->sqsize; -} - -const char *nvme_ctrl_get_transport(nvme_ctrl_t c) -{ - return c->transport; -} - -const char *nvme_ctrl_get_traddr(nvme_ctrl_t c) -{ - return c->traddr; -} - -const char *nvme_ctrl_get_trsvcid(nvme_ctrl_t c) -{ - return c->trsvcid; -} - -const char *nvme_ctrl_get_host_traddr(nvme_ctrl_t c) -{ - return c->host_traddr; -} - -const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c) -{ - return c->host_iface; -} - struct nvme_fabrics_config *nvme_ctrl_get_config(nvme_ctrl_t c) { return &c->cfg; @@ -1152,11 +991,6 @@ const char *nvme_ctrl_get_dhchap_host_key(nvme_ctrl_t c) return c->dhchap_key; } -const char *nvme_ctrl_get_cntlid(nvme_ctrl_t c) -{ - return c->cntlid; -} - void nvme_ctrl_set_dhchap_host_key(nvme_ctrl_t c, const char *key) { free(c->dhchap_key); @@ -1166,97 +1000,21 @@ void nvme_ctrl_set_dhchap_host_key(nvme_ctrl_t c, const char *key) c->dhchap_key = strdup(key); } -const char *nvme_ctrl_get_dhchap_key(nvme_ctrl_t c) -{ - return c->dhchap_ctrl_key; -} - -void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key) -{ - free(c->dhchap_ctrl_key); - c->dhchap_ctrl_key = NULL; - - if (key) - c->dhchap_ctrl_key = strdup(key); -} - -const char *nvme_ctrl_get_keyring(nvme_ctrl_t c) -{ - return c->keyring; -} - -void nvme_ctrl_set_keyring(nvme_ctrl_t c, const char *keyring) -{ - free(c->keyring); - c->keyring = NULL; - - if (keyring) - c->keyring = strdup(keyring); -} - -const char *nvme_ctrl_get_tls_key_identity(nvme_ctrl_t c) -{ - return c->tls_key_identity; -} - -void nvme_ctrl_set_tls_key_identity(nvme_ctrl_t c, const char *identity) -{ - free(c->tls_key_identity); - c->tls_key_identity = NULL; - - if (identity) - c->tls_key_identity = strdup(identity); -} - -const char *nvme_ctrl_get_tls_key(nvme_ctrl_t c) -{ - return c->tls_key; -} - -void nvme_ctrl_set_tls_key(nvme_ctrl_t c, const char *key) -{ - free(c->tls_key); - c->tls_key = NULL; - - if (key) - c->tls_key = strdup(key); -} - -void nvme_ctrl_set_discovered(nvme_ctrl_t c, bool discovered) -{ - c->discovered = discovered; -} - bool nvme_ctrl_is_discovered(nvme_ctrl_t c) { return c->discovered; } -void nvme_ctrl_set_persistent(nvme_ctrl_t c, bool persistent) -{ - c->persistent = persistent; -} - bool nvme_ctrl_is_persistent(nvme_ctrl_t c) { return c->persistent; } -void nvme_ctrl_set_discovery_ctrl(nvme_ctrl_t c, bool discovery) -{ - c->discovery_ctrl = discovery; -} - bool nvme_ctrl_is_discovery_ctrl(nvme_ctrl_t c) { return c->discovery_ctrl; } -void nvme_ctrl_set_unique_discovery_ctrl(nvme_ctrl_t c, bool unique) -{ - c->unique_discovery_ctrl = unique; -} - bool nvme_ctrl_is_unique_discovery_ctrl(nvme_ctrl_t c) { return c->unique_discovery_ctrl; @@ -2333,26 +2091,11 @@ nvme_ctrl_t nvme_ns_get_ctrl(nvme_ns_t n) return n->c; } -int nvme_ns_get_nsid(nvme_ns_t n) -{ - return n->nsid; -} - -const char *nvme_ns_get_sysfs_dir(nvme_ns_t n) -{ - return n->sysfs_dir; -} - const char *nvme_ns_head_get_sysfs_dir(nvme_ns_head_t head) { return head->sysfs_dir; } -const char *nvme_ns_get_name(nvme_ns_t n) -{ - return n->name; -} - const char *nvme_ns_get_generic_name(nvme_ns_t n) { return n->generic_name; @@ -2373,26 +2116,6 @@ const char *nvme_ns_get_firmware(nvme_ns_t n) return n->c ? n->c->firmware : n->s->firmware; } -int nvme_ns_get_lba_size(nvme_ns_t n) -{ - return n->lba_size; -} - -int nvme_ns_get_meta_size(nvme_ns_t n) -{ - return n->meta_size; -} - -uint64_t nvme_ns_get_lba_count(nvme_ns_t n) -{ - return n->lba_count; -} - -uint64_t nvme_ns_get_lba_util(nvme_ns_t n) -{ - return n->lba_util; -} - enum nvme_csi nvme_ns_get_csi(nvme_ns_t n) { return n->csi; diff --git a/libnvme/src/nvme/tree.h b/libnvme/src/nvme/tree.h index 91060943ce..5be32272be 100644 --- a/libnvme/src/nvme/tree.h +++ b/libnvme/src/nvme/tree.h @@ -91,21 +91,6 @@ nvme_host_t nvme_next_host(struct nvme_global_ctx *ctx, nvme_host_t h); */ struct nvme_global_ctx *nvme_host_get_global_ctx(nvme_host_t h); -/** - * nvme_host_get_dhchap_key() - Return host key - * @h: Host for which the key should be returned - * - * Return: DH-HMAC-CHAP host key or NULL if not set - */ -const char *nvme_host_get_dhchap_key(nvme_host_t h); - -/** - * nvme_host_set_dhchap_key() - set host key - * @h: Host for which the key should be set - * @key: DH-HMAC-CHAP Key to set or NULL to clear existing key - */ -void nvme_host_set_dhchap_key(nvme_host_t h, const char *key); - /** * nvme_host_set_pdc_enabled() - Set Persistent Discovery Controller flag * @h: Host for which the falg should be set @@ -502,46 +487,6 @@ nvme_ns_t nvme_subsystem_next_ns(nvme_subsystem_t s, nvme_ns_t n); for (p = nvme_namespace_first_path(n); p != NULL; \ p = nvme_namespace_next_path(n, p)) -/** - * nvme_ns_get_nsid() - NSID of a namespace - * @n: Namespace instance - * - * Return: NSID of @n - */ -int nvme_ns_get_nsid(nvme_ns_t n); - -/** - * nvme_ns_get_lba_size() - LBA size of a namespace - * @n: Namespace instance - * - * Return: LBA size of @n - */ -int nvme_ns_get_lba_size(nvme_ns_t n); - -/** - * nvme_ns_get_meta_size() - Metadata size of a namespace - * @n: Namespace instance - * - * Return: Metadata size of @n - */ -int nvme_ns_get_meta_size(nvme_ns_t n); - -/** - * nvme_ns_get_lba_count() - LBA count of a namespace - * @n: Namespace instance - * - * Return: LBA count of @n - */ -uint64_t nvme_ns_get_lba_count(nvme_ns_t n); - -/** - * nvme_ns_get_lba_util() - LBA utilization of a namespace - * @n: Namespace instance - * - * Return: LBA utilization of @n - */ -uint64_t nvme_ns_get_lba_util(nvme_ns_t n); - /** * nvme_ns_get_csi() - Command set identifier of a namespace * @n: Namespace instance @@ -575,22 +520,6 @@ const uint8_t *nvme_ns_get_nguid(nvme_ns_t n); */ void nvme_ns_get_uuid(nvme_ns_t n, unsigned char out[NVME_UUID_LEN]); -/** - * nvme_ns_get_sysfs_dir() - sysfs directory of a namespace - * @n: Namespace instance - * - * Return: sysfs directory name of @n - */ -const char *nvme_ns_get_sysfs_dir(nvme_ns_t n); - -/** - * nvme_ns_get_name() - sysfs name of a namespace - * @n: Namespace instance - * - * Return: sysfs name of @n - */ -const char *nvme_ns_get_name(nvme_ns_t n); - /** * nvme_ns_get_generic_name() - Returns name of generic namespace chardev. * @n: Namespace instance @@ -742,38 +671,6 @@ int nvme_ns_identify(nvme_ns_t n, struct nvme_id_ns *ns); */ int nvme_ns_identify_descs(nvme_ns_t n, struct nvme_ns_id_desc *descs); -/** - * nvme_path_get_name() - sysfs name of an &nvme_path_t object - * @p: &nvme_path_t object - * - * Return: sysfs name of @p - */ -const char *nvme_path_get_name(nvme_path_t p); - -/** - * nvme_path_get_sysfs_dir() - sysfs directory of an nvme_path_t object - * @p: &nvme_path_t object - * - * Return: sysfs directory of @p - */ -const char *nvme_path_get_sysfs_dir(nvme_path_t p); - -/** - * nvme_path_get_ana_state() - ANA state of an nvme_path_t object - * @p: &nvme_path_t object - * - * Return: ANA (Asynchronous Namespace Access) state of @p - */ -const char *nvme_path_get_ana_state(nvme_path_t p); - -/** - * nvme_path_get_numa_nodes() - NUMA nodes of an nvme_path_t object - * @p : &nvme_path_t object - * - * Return: NUMA nodes associated to @p - */ -const char *nvme_path_get_numa_nodes(nvme_path_t p); - /** * nvme_path_get_queue_depth() - Queue depth of an nvme_path_t object * @p: &nvme_path_t object @@ -819,22 +716,6 @@ struct nvme_transport_handle *nvme_ctrl_get_transport_handle(nvme_ctrl_t c); */ void nvme_ctrl_release_transport_handle(nvme_ctrl_t c); -/** - * nvme_ctrl_get_name() - sysfs name of a controller - * @c: Controller instance - * - * Return: sysfs name of @c - */ -const char *nvme_ctrl_get_name(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_sysfs_dir() - sysfs directory of a controller - * @c: Controller instance - * - * Return: sysfs directory name of @c - */ -const char *nvme_ctrl_get_sysfs_dir(nvme_ctrl_t c); - /** * nvme_ctrl_get_address() - Address string of a controller * @c: Controller instance @@ -863,22 +744,6 @@ char *nvme_ctrl_get_src_addr(nvme_ctrl_t c, char *src_addr, size_t src_addr_len) */ const char *nvme_ctrl_get_phy_slot(nvme_ctrl_t c); -/** - * nvme_ctrl_get_firmware() - Firmware string of a controller - * @c: Controller instance - * - * Return: Firmware string of @c - */ -const char *nvme_ctrl_get_firmware(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_model() - Model of a controller - * @c: Controller instance - * - * Return: Model string of @c - */ -const char *nvme_ctrl_get_model(nvme_ctrl_t c); - /** * nvme_ctrl_get_state() - Running state of a controller * @c: Controller instance @@ -887,46 +752,6 @@ const char *nvme_ctrl_get_model(nvme_ctrl_t c); */ const char *nvme_ctrl_get_state(nvme_ctrl_t c); -/** - * nvme_ctrl_get_numa_node() - NUMA node of a controller - * @c: Controller instance - * - * Return: String indicating the NUMA node - */ -const char *nvme_ctrl_get_numa_node(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_queue_count() - Queue count of a controller - * @c: Controller instance - * - * Return: Queue count of @c - */ -const char *nvme_ctrl_get_queue_count(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_serial() - Serial number of a controller - * @c: Controller instance - * - * Return: Serial number string of @c - */ -const char *nvme_ctrl_get_serial(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_sqsize() - SQ size of a controller - * @c: Controller instance - * - * Return: SQ size (as string) of @c - */ -const char *nvme_ctrl_get_sqsize(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_transport() - Transport type of a controller - * @c: Controller instance - * - * Return: Transport type of @c - */ -const char *nvme_ctrl_get_transport(nvme_ctrl_t c); - /** * nvme_ctrl_get_subsysnqn() - Subsystem NQN of a controller * @c: Controller instance @@ -943,38 +768,6 @@ const char *nvme_ctrl_get_subsysnqn(nvme_ctrl_t c); */ nvme_subsystem_t nvme_ctrl_get_subsystem(nvme_ctrl_t c); -/** - * nvme_ctrl_get_traddr() - Transport address of a controller - * @c: Controller instance - * - * Return: Transport address of @c - */ -const char *nvme_ctrl_get_traddr(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_trsvcid() - Transport service identifier of a controller - * @c: Controller instance - * - * Return: Transport service identifier of @c (if present) - */ -const char *nvme_ctrl_get_trsvcid(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_host_traddr() - Host transport address of a controller - * @c: Controller instance - * - * Return: Host transport address of @c (if present) - */ -const char *nvme_ctrl_get_host_traddr(nvme_ctrl_t c); - -/** - * nvme_ctrl_get_host_iface() - Host interface name of a controller - * @c: Controller instance - * - * Return: Host interface name of @c (if present) - */ -const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c); - /** * nvme_ctrl_get_dhchap_host_key() - Return host key * @c: Controller to be checked @@ -983,14 +776,6 @@ const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c); */ const char *nvme_ctrl_get_dhchap_host_key(nvme_ctrl_t c); -/** - * nvme_ctrl_get_cntlid() - Controller id - * @c: Controller to be checked - * - * Return : Controller id of @c - */ -const char *nvme_ctrl_get_cntlid(nvme_ctrl_t c); - /** * nvme_ctrl_set_dhchap_host_key() - Set host key * @c: Host for which the key should be set @@ -998,14 +783,6 @@ const char *nvme_ctrl_get_cntlid(nvme_ctrl_t c); */ void nvme_ctrl_set_dhchap_host_key(nvme_ctrl_t c, const char *key); -/** - * nvme_ctrl_get_dhchap_key() - Return controller key - * @c: Controller for which the key should be set - * - * Return: DH-HMAC-CHAP controller key or NULL if not set - */ -const char *nvme_ctrl_get_dhchap_key(nvme_ctrl_t c); - /** * nvme_ns_head_get_sysfs_dir() - sysfs dir of namespave head * @head: namespace head instance @@ -1014,58 +791,6 @@ const char *nvme_ctrl_get_dhchap_key(nvme_ctrl_t c); */ const char *nvme_ns_head_get_sysfs_dir(nvme_ns_head_t head); -/** - * nvme_ctrl_set_dhchap_key() - Set controller key - * @c: Controller for which the key should be set - * @key: DH-HMAC-CHAP Key to set or NULL to clear existing key - */ -void nvme_ctrl_set_dhchap_key(nvme_ctrl_t c, const char *key); - -/** - * nvme_ctrl_get_keyring() - Return keyring - * @c: Controller to be used for the lookup - * - * Return: Keyring or NULL if not set - */ -const char *nvme_ctrl_get_keyring(nvme_ctrl_t c); - -/** - * nvme_ctrl_set_keyring() - Set keyring - * @c: Controller for which the keyring should be set - * @keyring: Keyring name - */ -void nvme_ctrl_set_keyring(nvme_ctrl_t c, const char *keyring); - -/** - * nvme_ctrl_get_tls_key_identity() - Return Derive TLS Identity - * @c: Controller to be used for the lookup - * - * Return: Derive TLS Identity or NULL if not set - */ -const char *nvme_ctrl_get_tls_key_identity(nvme_ctrl_t c); - -/** - * nvme_ctrl_set_tls_key_identity() - Set Derive TLS Identity - * @c: Controller for which the key should be set - * @identity: Derive TLS identity or NULL to clear existing key - */ -void nvme_ctrl_set_tls_key_identity(nvme_ctrl_t c, const char *identity); - -/** - * nvme_ctrl_get_tls_key() - Return Derive TLS PSK - * @c: Controller to be used for the lookup - * - * Return: Key in PSK interchange format or NULL if not set - */ -const char *nvme_ctrl_get_tls_key(nvme_ctrl_t c); - -/** - * nvme_ctrl_set_tls_key() - Set Derive TLS PSK - * @c: Controller for which the key should be set - * @key: Key in interchange format or NULL to clear existing key - */ -void nvme_ctrl_set_tls_key(nvme_ctrl_t c, const char *key); - /** * nvme_ctrl_get_config() - Fabrics configuration of a controller * @c: Controller instance @@ -1074,15 +799,6 @@ void nvme_ctrl_set_tls_key(nvme_ctrl_t c, const char *key); */ struct nvme_fabrics_config *nvme_ctrl_get_config(nvme_ctrl_t c); -/** - * nvme_ctrl_set_discovered() - Set the 'discovered' flag - * @c: nvme_ctrl_t object - * @discovered: Value of the 'discovered' flag - * - * Set the 'discovered' flag of @c to @discovered - */ -void nvme_ctrl_set_discovered(nvme_ctrl_t c, bool discovered); - /** * nvme_ctrl_is_discovered() - Returns the value of the 'discovered' flag * @c: Controller instance @@ -1091,15 +807,6 @@ void nvme_ctrl_set_discovered(nvme_ctrl_t c, bool discovered); */ bool nvme_ctrl_is_discovered(nvme_ctrl_t c); -/** - * nvme_ctrl_set_persistent() - Set the 'persistent' flag - * @c: Controller instance - * @persistent: value of the 'persistent' flag - * - * Set the 'persistent' flag of @c to @persistent - */ -void nvme_ctrl_set_persistent(nvme_ctrl_t c, bool persistent); - /** * nvme_ctrl_is_persistent() - Returns the value of the 'persistent' flag * @c: Controller instance @@ -1108,17 +815,6 @@ void nvme_ctrl_set_persistent(nvme_ctrl_t c, bool persistent); */ bool nvme_ctrl_is_persistent(nvme_ctrl_t c); -/** - * nvme_ctrl_set_discovery_ctrl() - Set the 'discovery_ctrl' flag - * @c: Controller to be modified - * @discovery: value of the discovery_ctrl flag - * - * Sets the 'discovery_ctrl' flag in @c to specify whether - * @c connects to a discovery subsystem. - * - */ -void nvme_ctrl_set_discovery_ctrl(nvme_ctrl_t c, bool discovery); - /** * nvme_ctrl_is_discovery_ctrl() - Check the 'discovery_ctrl' flag * @c: Controller to be checked @@ -1130,17 +826,6 @@ void nvme_ctrl_set_discovery_ctrl(nvme_ctrl_t c, bool discovery); */ bool nvme_ctrl_is_discovery_ctrl(nvme_ctrl_t c); -/** - * nvme_ctrl_set_unique_discovery_ctrl() - Set the 'unique_discovery_ctrl' flag - * @c: Controller to be modified - * @unique: value of the unique_disc_ctrl flag - * - * Sets the 'unique_discovery_ctrl' flag in @c to specify wheter - * @c is a unique discovery controller - * - */ -void nvme_ctrl_set_unique_discovery_ctrl(nvme_ctrl_t c, bool unique); - /** * nvme_ctrl_is_unique_discovery_ctrl() - Check the 'unique_discovery_ctrl' flag * @c: Controller to be checked @@ -1219,22 +904,6 @@ void nvme_unlink_ctrl(struct nvme_ctrl *c); */ const char *nvme_subsystem_get_nqn(nvme_subsystem_t s); -/** - * nvme_subsystem_get_sysfs_dir() - sysfs directory of an nvme_subsystem_t object - * @s: nvme_subsystem_t object - * - * Return: sysfs directory name of @s - */ -const char *nvme_subsystem_get_sysfs_dir(nvme_subsystem_t s); - -/** - * nvme_subsystem_get_name() - sysfs name of an nvme_subsystem_t object - * @s: nvme_subsystem_t object - * - * Return: sysfs name of @s - */ -const char *nvme_subsystem_get_name(nvme_subsystem_t s); - /** * nvme_subsystem_get_type() - Returns the type of a subsystem * @s: nvme_subsystem_t object @@ -1245,47 +914,6 @@ const char *nvme_subsystem_get_name(nvme_subsystem_t s); */ const char *nvme_subsystem_get_type(nvme_subsystem_t s); -/** - * nvme_subsystem_get_application() - Return the application string - * @s: nvme_subsystem_t object - * - * Return: Managing application string or NULL if not set. - */ -const char *nvme_subsystem_get_application(nvme_subsystem_t s); - -/** - * nvme_subsystem_set_application() - Set the application string - * @s: nvme_subsystem_t object - * @a: application string - * - * Sets the managing application string for @s. - */ -void nvme_subsystem_set_application(nvme_subsystem_t s, const char *a); - -/** - * nvme_subsystem_get_iopolicy() - Return the IO policy of subsytem - * @s: nvme_subsystem_t object - * - * Return: IO policy used by current subsystem - */ -const char *nvme_subsystem_get_iopolicy(nvme_subsystem_t s); - -/** - * nvme_subsystem_get_model() - Return the model of subsystem - * @s: nvme_subsystem_t object - * - * Return: Model of the current subsystem - */ -const char *nvme_subsystem_get_model(nvme_subsystem_t s); - -/** - * nvme_subsystem_get_serial() - Return the serial number of subsystem - * @s: nvme_subsystem_t object - * - * Return: Serial number of the current subsystem - */ -const char *nvme_subsystem_get_serial(nvme_subsystem_t s); - /** * nvme_subsystem_get_fw_rev() - Return the firmware rev of subsystem * @s: nvme_subsystem_t object @@ -1307,22 +935,6 @@ const char *nvme_subsystem_get_fw_rev(nvme_subsystem_t s); */ int nvme_scan_topology(struct nvme_global_ctx *ctx, nvme_scan_filter_t f, void *f_args); -/** - * nvme_host_get_hostnqn() - Host NQN of an nvme_host_t object - * @h: nvme_host_t object - * - * Return: Host NQN of @h - */ -const char *nvme_host_get_hostnqn(nvme_host_t h); - -/** - * nvme_host_get_hostid() - Host ID of an nvme_host_t object - * @h: nvme_host_t object - * - * Return: Host ID of @h - */ -const char *nvme_host_get_hostid(nvme_host_t h); - /** * nvme_host_release_fds() - Close all opened file descriptors under host * @h: nvme_host_t object @@ -1473,19 +1085,3 @@ char *nvme_get_path_attr(nvme_path_t p, const char *attr); */ int nvme_scan_namespace(struct nvme_global_ctx *ctx, const char *name, nvme_ns_t *ns); - -/** - * nvme_host_get_hostsymname() - Get the host's symbolic name - * @h: Host for which the symbolic name should be returned. - * - * Return: The symbolic name or NULL if a symbolic name hasn't been - * configure. - */ -const char *nvme_host_get_hostsymname(nvme_host_t h); - -/** - * nvme_host_set_hostsymname() - Set the host's symbolic name - * @h: Host for which the symbolic name should be set. - * @hostsymname: Symbolic name - */ -void nvme_host_set_hostsymname(nvme_host_t h, const char *hostsymname); From 9d6516cf1743d8b3722976c204259d893bb83edf Mon Sep 17 00:00:00 2001 From: Martin Belanger Date: Wed, 11 Mar 2026 11:11:44 -0400 Subject: [PATCH 2/2] test: fix config tests (missing dhchap_ctrl_key) Signed-off-by: Martin Belanger --- .../config/data/config-pcie-with-tcp-config.json | 12 ++++++++---- .../test/config/data/config-pcie-with-tcp-config.out | 12 ++++++++---- libnvme/test/config/data/tls_key-1.json | 1 + libnvme/test/config/data/tls_key-1.out | 1 + libnvme/test/config/data/tls_key-2.json | 1 + libnvme/test/config/data/tls_key-2.out | 1 + 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/libnvme/test/config/data/config-pcie-with-tcp-config.json b/libnvme/test/config/data/config-pcie-with-tcp-config.json index 6810f75462..981bd77c6a 100644 --- a/libnvme/test/config/data/config-pcie-with-tcp-config.json +++ b/libnvme/test/config/data/config-pcie-with-tcp-config.json @@ -10,13 +10,15 @@ "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4420", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" }, { "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4421", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" } ] } @@ -33,13 +35,15 @@ "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4420", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" }, { "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4421", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" } ] } diff --git a/libnvme/test/config/data/config-pcie-with-tcp-config.out b/libnvme/test/config/data/config-pcie-with-tcp-config.out index 6810f75462..981bd77c6a 100644 --- a/libnvme/test/config/data/config-pcie-with-tcp-config.out +++ b/libnvme/test/config/data/config-pcie-with-tcp-config.out @@ -10,13 +10,15 @@ "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4420", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" }, { "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4421", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" } ] } @@ -33,13 +35,15 @@ "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4420", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" }, { "transport":"tcp", "traddr":"192.168.154.144", "trsvcid":"4421", - "dhchap_key":"none" + "dhchap_key":"none", + "dhchap_ctrl_key":"none" } ] } diff --git a/libnvme/test/config/data/tls_key-1.json b/libnvme/test/config/data/tls_key-1.json index 5bba948d97..3edd1730e8 100644 --- a/libnvme/test/config/data/tls_key-1.json +++ b/libnvme/test/config/data/tls_key-1.json @@ -11,6 +11,7 @@ "traddr":"192.168.154.148", "trsvcid":"4420", "dhchap_key":"none", + "dhchap_ctrl_key":"none", "tls":true, "tls_key":"NVMeTLSkey-1:01:Hhc5sFjwSZ6w5hPY19tqprajYtuYci3tN+Z2wGViDk3rpSR+:" } diff --git a/libnvme/test/config/data/tls_key-1.out b/libnvme/test/config/data/tls_key-1.out index 5bba948d97..3edd1730e8 100644 --- a/libnvme/test/config/data/tls_key-1.out +++ b/libnvme/test/config/data/tls_key-1.out @@ -11,6 +11,7 @@ "traddr":"192.168.154.148", "trsvcid":"4420", "dhchap_key":"none", + "dhchap_ctrl_key":"none", "tls":true, "tls_key":"NVMeTLSkey-1:01:Hhc5sFjwSZ6w5hPY19tqprajYtuYci3tN+Z2wGViDk3rpSR+:" } diff --git a/libnvme/test/config/data/tls_key-2.json b/libnvme/test/config/data/tls_key-2.json index 9d6ce626e6..1a289580d3 100644 --- a/libnvme/test/config/data/tls_key-2.json +++ b/libnvme/test/config/data/tls_key-2.json @@ -11,6 +11,7 @@ "traddr":"192.168.154.148", "trsvcid":"4420", "dhchap_key":"none", + "dhchap_ctrl_key":"none", "tls":true, "tls_psk_identity":"NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:befdec4c-2234-11b2-a85c-ca77c773af36 nqn.io-1 QMFIifx2SCVnlE2hc4MQb0r+2g56x3G7P6jJtDiYK+I=", "tls_key":"NVMeTLSkey-1:01:Hhc5sFjwSZ6w5hPY19tqprajYtuYci3tN+Z2wGViDk3rpSR+:" diff --git a/libnvme/test/config/data/tls_key-2.out b/libnvme/test/config/data/tls_key-2.out index 5bba948d97..3edd1730e8 100644 --- a/libnvme/test/config/data/tls_key-2.out +++ b/libnvme/test/config/data/tls_key-2.out @@ -11,6 +11,7 @@ "traddr":"192.168.154.148", "trsvcid":"4420", "dhchap_key":"none", + "dhchap_ctrl_key":"none", "tls":true, "tls_key":"NVMeTLSkey-1:01:Hhc5sFjwSZ6w5hPY19tqprajYtuYci3tN+Z2wGViDk3rpSR+:" }