And add the kernel-doc style comments in all exported functions.
This is just a capture of what currently exists and may change prior to tagging
as a stable release.
Signed-off-by: Keith Busch <kbusch@kernel.org>
{
global:
- nvme_submit_passthru;
+ nvme_submit_admin_passthru64;
+ nvme_submit_admin_passthru;
+ nvme_submit_io_passthru64;
+ nvme_submit_io_passthru;
+ nvme_admin_passthru64;
+ nvme_admin_passthru;
+ nvme_io_passthru64;
+ nvme_io_passthru;
+ nvme_subsystem_reset;
+ nvme_ctrl_reset;
+ nvme_ns_rescan;
+ nvme_get_nsid;
+ nvme_identify;
+ nvme_identify_ctrl;
+ nvme_identify_ns;
+ nvme_identify_allocated_ns;
+ nvme_identify_active_ns_list;
+ nvme_identify_allocated_ns_list;
+ nvme_identify_nsid_ctrl_list;
+ nvme_identify_ns_descs;
+ nvme_identify_nvmset_list;
+ nvme_identify_primary_ctrl;
+ nvme_identify_secondary_ctrl_list;
+ nvme_identify_ns_granularity;
+ nvme_identify_uuid;
+ nvme_get_log;
+ nvme_get_log_error;
+ nvme_get_log_smart;
+ nvme_get_log_fw_slot;
+ nvme_get_log_changed_ns_list;
+ nvme_get_log_cmd_effects;
+ nvme_get_log_device_self_test;
+ nvme_get_log_create_telemetry_host;
+ nvme_get_log_telemetry_host;
+ nvme_get_log_telemetry_ctrl;
+ nvme_get_log_endurance_group;
+ nvme_get_log_predictable_lat_nvmset;
+ nvme_get_log_predictable_lat_event;
+ nvme_get_log_ana;
+ nvme_get_log_ana_groups;
+ nvme_get_log_lba_status;
+ nvme_get_log_endurance_grp_evt;
+ nvme_get_log_discovery;
+ nvme_get_log_reservation;
+ nvme_get_log_sanitize;
+ nvme_set_feature;
+ nvme_set_features_arbitration;
+ nvme_set_features_power_mgmt;
+ nvme_set_features_lba_range;
+ nvme_set_features_temp_thresh;
+ nvme_set_features_err_recovery;
+ nvme_set_features_volatile_wc;
+ nvme_set_features_irq_coalesce;
+ nvme_set_features_irq_config;
+ nvme_set_features_write_atomic;
+ nvme_set_features_async_event;
+ nvme_set_features_auto_pst;
+ nvme_set_features_timestamp;
+ nvme_set_features_hctm;
+ nvme_set_features_nopsc;
+ nvme_set_features_rrl;
+ nvme_set_features_plm_config;
+ nvme_set_features_plm_window;
+ nvme_set_features_lba_sts_interval;
+ nvme_set_features_host_behavior;
+ nvme_set_features_sanitize;
+ nvme_set_features_endurance_evt_cfg;
+ nvme_set_features_sw_progress;
+ nvme_set_features_host_id;
+ nvme_set_features_resv_mask;
+ nvme_set_features_resv_persist;
+ nvme_set_features_write_protect;
+ nvme_get_features;
+ nvme_get_features_arbitration;
+ nvme_get_features_power_mgmt;
+ nvme_get_features_lba_range;
+ nvme_get_features_temp_thresh;
+ nvme_get_features_err_recovery;
+ nvme_get_features_volatile_wc;
+ nvme_get_features_num_queues;
+ nvme_get_features_irq_coalesce;
+ nvme_get_features_irq_config;
+ nvme_get_features_write_atomic;
+ nvme_get_features_async_event;
+ nvme_get_features_auto_pst;
+ nvme_get_features_host_mem_buf;
+ nvme_get_features_timestamp;
+ nvme_get_features_kato;
+ nvme_get_features_hctm;
+ nvme_get_features_nopsc;
+ nvme_get_features_rrl;
+ nvme_get_features_plm_config;
+ nvme_get_features_plm_window;
+ nvme_get_features_lba_sts_interval;
+ nvme_get_features_host_behavior;
+ nvme_get_features_sanitize;
+ nvme_get_features_endurance_event_cfg;
+ nvme_get_features_sw_progress;
+ nvme_get_features_host_id;
+ nvme_get_features_resv_mask;
+ nvme_get_features_resv_persist;
+ nvme_get_features_write_protect;
+ nvme_format_nvm;
+ nvme_ns_mgmt;
+ nvme_ns_mgmt_create;
+ nvme_ns_mgmt_delete;
+ nvme_ns_attach;
+ nvme_ns_attach_ctrls;
+ nvme_ns_dettach_ctrls;
+ nvme_fw_download;
+ nvme_fw_commit;
+ nvme_security_receive;
+ nvme_security_receive;
+ nvme_get_lba_status;
+ nvme_directive_send;
+ nvme_directive_send_id_endir;
+ nvme_directive_send_stream_release_identifier;
+ nvme_directive_send_stream_release_resource;
+ nvme_directive_recv;
+ nvme_directive_recv_identify_parameters;
+ nvme_directive_recv_stream_parameters;
+ nvme_directive_recv_stream_status;
+ nvme_directive_recv_stream_allocate;
+ nvme_set_property;
+ nvme_get_property;
+ nvme_sanitize;
+ nvme_dev_self_test;
+ nvme_virtual_mgmt;
+ nvme_flush;
+ nvme_read;
+ nvme_write;
+ nvme_compare;
+ nvme_write_zeros;
+ nvme_write_uncorrectable;
+ nvme_verify;
+ nvme_dsm;
+ nvme_resv_acquire;
+ nvme_resv_register;
+ nvme_resv_release;
+ nvme_resv_report;
+ nvmf_add_ctrl_opts;
+ nvmf_add_ctrl;
+ nvme_first_subsystem;
+ nvme_next_subsystem;
+ nvme_ctrl_first_ns;
+ nvme_ctrl_next_ns;
+ nvme_ctrl_first_path;
+ nvme_ctrl_next_path;
+ nvme_subsystem_first_ctrl;
+ nvme_subsystem_next_ctrl;
+ nvme_subsystem_first_ns;
+ nvme_subsystem_next_ns;
+ nvme_ns_get_fd;
+ nvme_ns_get_nsid;
+ nvme_ns_get_lba_size;
+ nvme_ns_get_lba_count;
+ nvme_ns_get_lba_util;
+ nvme_ns_get_subsystem;
+ nvme_ns_get_ctrl;
+ nvme_ns_read;
+ nvme_ns_write;
+ nvme_ns_verify;
+ nvme_ns_compare;
+ nvme_ns_write_zeros;
+ nvme_ns_write_uncorrectable;
+ nvme_ns_flush;
+ nvme_ns_identify;
+ nvme_path_get_subsystem;
+ nvme_path_get_ns;
+ nvme_ctrl_get_subsystem;
+ nvme_ctrl_identify;
+ nvme_ctrl_disconnect;
+ nvme_scan_ctrl;
+ nvme_free_ctrl;
+ nvme_unlink_ctrl;
+ nvme_scan_filter;
+ nvme_scan;
+ nvme_refresh_topology;
+ nvme_reset_topology;
+ nvme_free_tree;
+ nvme_get_subsys_attr;
+ nvme_get_ctrl_attr;
+ nvme_get_ns_attr;
+ nvme_get_path_attr;
+ nvme_subsystem_get_nqn;
+ nvme_subsystem_get_sysfs_dir;
+ nvme_subsystem_get_name;
+ nvme_subsystem_get_nqn;
+ nvme_ctrl_get_fd;
+ nvme_ctrl_get_name;
+ nvme_ctrl_get_sysfs_dir;
+ nvme_ctrl_get_address;
+ nvme_ctrl_get_firmware;
+ nvme_ctrl_get_model;
+ nvme_ctrl_get_state;
+ nvme_ctrl_get_numa_node;
+ nvme_ctrl_get_queue_count;
+ nvme_ctrl_get_serial;
+ nvme_ctrl_get_sqsize;
+ nvme_ctrl_get_transport;
+ nvme_ctrl_get_nqn;
+ nvme_ctrl_get_subsysnqn;
+ nvme_path_get_name;
+ nvme_path_get_sysfs_dir;
+ nvme_path_get_ana_state;
+ nvme_ns_get_sysfs_dir;
+ nvme_ns_get_name;
+ nvme_status_type;
+ nvme_status_to_string;
+ nvme_status_to_errno;
+ nvme_fw_download_seq;
+ nvme_get_telemetry_log;
+ nvme_setup_id_ns;
+ nvme_setup_ctrl_list;
+ nvme_dsm_range;
+ nvme_get_log_page;
+ nvme_get_ana_log_len;
+ nvme_namespace_attach_ctrls;
+ nvme_namespace_detach_ctrls;
+ nvme_get_feature_length;
+ nvme_get_directive_receive_length;
+ nvme_open;
+ nvme_scan_ctrl_namespaces;
+ nvme_scan_ctrl_namespace_paths;
+ nvme_scan_subsystem_namespaces;
+ nvme_scan_subsystem_ctrls;
+ nvme_scan_subsystems;
+ nvme_subsys_filter;
+ nvme_ctrls_filter;
+ nvme_paths_filter;
+ nvme_namespace_filter;
+ nvmf_get_discovery_log;
+ nvmf_hostnqn_generate;
+ nvmf_hostnqn_from_file;
+ nvmf_hostid_from_file;
+ nvmf_trtype_str;
+ nvmf_adrfam_str;
+ nvmf_subtype_str;
+ nvmf_treq_str;
+ nvmf_sectype_str;
+ nvmf_prtype_str;
+ nvmf_qptype_str;
+ nvmf_cms_str;
+ nvmf_connect_disc_entry;
local:
*;
};
* nvme_get_log_create_telemetry_host() -
*/
int nvme_get_log_create_telemetry_host(int fd, struct nvme_telemetry_log *log);
-/** * nvme_get_log_telemetry_host() -
+
+/**
+ * nvme_get_log_telemetry_host() -
* @fd: File descriptor of nvme device
* @offset: Offset into the telemetry data
* @len: Length of provided user buffer to hold the log data in bytes
__u32 *result);
/**
- * nvme_admin_set_features_nopsc() -
+ * nvme_set_features_nopsc() -
*/
-int nvme_admin_set_features_nopsc(int fd, bool noppme, bool save,
- __u32 *result);
+int nvme_set_features_nopsc(int fd, bool noppme, bool save, __u32 *result);
/**
* nvme_set_features_rrl() -
* metadata_len:Length of user buffer, @metadata, in bytes
* @metadata: Pointer to user address of the metadata buffer
*
- * Calls nvme_io() with nvme_cmd_read for the opcode.
- *
* Return: The nvme command status if a response was received or -1 with errno
* set otherwise.
*/
* metadata_len:Length of user buffer, @metadata, in bytes
* @metadata: Pointer to user address of the metadata buffer
*
- * Calls nvme_io() with nvme_cmd_write for the opcode.
- *
* Return: The nvme command status if a response was received or -1 with errno
* set otherwise.
*/
* metadata_len:Length of user buffer, @metadata, in bytes
* @metadata: Pointer to user address of the metadata buffer
*
- * Calls nvme_io() with nvme_cmd_compare for the opcode.
- *
* Return: The nvme command status if a response was received or -1 with errno
* set otherwise.
*/
#include <stdbool.h>
#include <stdint.h>
-
#include "tree.h"
+/**
+ * struct nvme_fabrics_config -
+ * @transport:
+ * @traddr:
+ * @trsvcid:
+ * @nqn:
+ * @hostnqn:
+ * @host_traddr:
+ * @hostid:
+ * @queue_size:
+ * @nr_io_queues:
+ * @reconnect_delay:
+ * @ctrl_loss_tmo:
+ * @keep_alive_tmo:
+ * @nr_write_queues:
+ * @nr_poll_queues:
+ * @tos:
+ * @duplicate_connect:
+ * @disable_sqflow:
+ * @hdr_digest:
+ * @data_digest:
+ * @rsvd:
+ */
struct nvme_fabrics_config {
const char *transport;
const char *traddr;
uint8_t rsvd[0x200];
};
+/**
+ * nvmf_add_ctrl_opts() -
+ */
int nvmf_add_ctrl_opts(struct nvme_fabrics_config *cfg);
+
+/**
+ * nvmf_add_ctrl() -
+ */
nvme_ctrl_t nvmf_add_ctrl(struct nvme_fabrics_config *cfg);
-int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp, int max_retries);
+
+/**
+ * nvmf_get_discovery_log() -
+ */
+int nvmf_get_discovery_log(nvme_ctrl_t c, struct nvmf_discovery_log **logp,
+ int max_retries);
+
+/**
+ * nvmf_hostnqn_generate() -
+ */
char *nvmf_hostnqn_generate();
+
+/**
+ * nvmf_hostnqn_from_file() -
+ */
char *nvmf_hostnqn_from_file();
-char *nvmf_hostid_from_file();
+/**
+ * nvmf_hostid_from_file() -
+ */
+char *nvmf_hostid_from_file();
+/**
+ * nvmf_trtype_str() -
+ */
const char *nvmf_trtype_str(__u8 trtype);
+
+/**
+ * nvmf_adrfam_str() -
+ */
const char *nvmf_adrfam_str(__u8 adrfam);
+
+/**
+ * nvmf_subtype_str() -
+ */
const char *nvmf_subtype_str(__u8 subtype);
+
+/**
+ * nvmf_treq_str() -
+ */
const char *nvmf_treq_str(__u8 treq);
+
+/**
+ * nvmf_sectype_str() -
+ */
const char *nvmf_sectype_str(__u8 sectype);
+
+/**
+ * nvmf_prtype_str() -
+ */
const char *nvmf_prtype_str(__u8 prtype);
+
+/**
+ * nvmf_qptype_str() -
+ */
const char *nvmf_qptype_str(__u8 qptype);
+
+/**
+ * nvmf_cms_str() -
+ */
const char *nvmf_cms_str(__u8 cm);
+
+/**
+ * nvmf_connect_disc_entry() -
+ */
nvme_ctrl_t nvmf_connect_disc_entry(struct nvmf_disc_log_entry *e,
const struct nvme_fabrics_config *defcfg, bool *discover);
+
#endif /* _LIBNVME_FABRICS_H */
#include <dirent.h>
#include "tree.h"
-
+/**
+ * nvme_namespace_filter() -
+ */
int nvme_namespace_filter(const struct dirent *d);
+
+/**
+ * nvme_paths_filter() -
+ */
int nvme_paths_filter(const struct dirent *d);
+
+/**
+ * nvme_ctrls_filter() -
+ */
int nvme_ctrls_filter(const struct dirent *d);
+
+/**
+ * nvme_subsys_filter() -
+ */
int nvme_subsys_filter(const struct dirent *d);
+/**
+ * nvme_scan_subsystems() -
+ */
int nvme_scan_subsystems(struct dirent ***subsys);
+
+/**
+ * nvme_scan_subsystem_ctrls() -
+ */
int nvme_scan_subsystem_ctrls(nvme_subsystem_t s, struct dirent ***ctrls);
+
+/**
+ * nvme_scan_subsystem_namespaces() -
+ */
int nvme_scan_subsystem_namespaces(nvme_subsystem_t s, struct dirent ***namespaces);
+
+/**
+ * nvme_scan_ctrl_namespace_paths() -
+ */
int nvme_scan_ctrl_namespace_paths(nvme_ctrl_t c, struct dirent ***namespaces);
+
+/**
+ * nvme_scan_ctrl_namespaces() -
+ */
int nvme_scan_ctrl_namespaces(nvme_ctrl_t c, struct dirent ***namespaces);
#endif /* _LIBNVME_FILTERS_H */
return ioctl(fd, NVME_IOCTL_SUBSYS_RESET);
}
-int nvme_reset_controller(int fd)
+int nvme_ctrl_reset(int fd)
{
int ret;
__u32 timeout_ms, __u32 *result);
/**
- * nvme_submit_passthru64() - Submit a 64-bit nvme passthrough command
+ * nvme_submit_io_passthru64() - Submit a 64-bit nvme passthrough command
* @fd: File descriptor of nvme device
* @cmd: The nvme io command to send
* @result: Optional field to return the result from the CQE DW0-1
__u32 timeout_ms, __u64 *result);
/**
- * nvme_submit_passthru() - Submit an nvme passthrough command
+ * nvme_submit_io_passthru() - Submit an nvme passthrough command
* @fd: File descriptor of nvme device
* @cmd: The nvme io command to send
* @result: Optional field to return the result from the CQE dword 0
int nvme_subsystem_reset(int fd);
/**
- * nvme_reset_ctrl() - Initiate a controller reset
+ * nvme_ctrl_reset() - Initiate a controller reset
* @fd: File descriptor of nvme device
*
* This should only be sent to controller handles, not to namespaces.
*
* Return: Zero if a reset was initiated or -1 with errno set otherwise.
*/
-int nvme_reset_ctrl(int fd);
+int nvme_ctrl_reset(int fd);
/**
* nvme_ns_rescan() - Initiate a controller rescan
nvme_ns_t nvme_subsystem_next_ns(nvme_subsystem_t s, nvme_ns_t n);
/**
- * ()
+ * nvme_for_each_subsystem_safe()
*/
#define nvme_for_each_subsystem_safe(r, s, _s) \
for (s = nvme_first_subsystem(r), \
s = _s, _s = nvme_next_subsystem(r, s))
/**
- * ()
+ * nvme_for_each_subsystem()
*/
#define nvme_for_each_subsystem(r, s) \
for (s = nvme_first_subsystem(r); s != NULL; \
s = nvme_next_subsystem(r, s))
/**
- * ()
+ * nvme_subsystem_for_each_ctrl_safe()
*/
#define nvme_subsystem_for_each_ctrl_safe(s, c, _c) \
for (c = nvme_subsystem_first_ctrl(s), \
c = _c, _c = nvme_subsystem_next_ctrl(s, c))
/**
- * ()
+ * nvme_subsystem_for_each_ctrl()
*/
#define nvme_subsystem_for_each_ctrl(s, c) \
for (c = nvme_subsystem_first_ctrl(s); c != NULL; \
c = nvme_subsystem_next_ctrl(s, c))
/**
- * ()
+ * nvme_ctrl_for_each_ns_safe()
*/
#define nvme_ctrl_for_each_ns_safe(c, n, _n) \
for (n = nvme_ctrl_first_ns(c), \
n = _n, _n = nvme_ctrl_next_ns(c, n))
/**
- * ()
+ * nvme_ctrl_for_each_ns()
*/
#define nvme_ctrl_for_each_ns(c, n) \
for (n = nvme_ctrl_first_ns(c); n != NULL; \
n = nvme_ctrl_next_ns(c, n))
/**
- * ()
+ * nvme_ctrl_for_each_path_safe()
*/
#define nvme_ctrl_for_each_path_safe(c, p, _p) \
for (p = nvme_ctrl_first_path(c), \
p = _p, _p = nvme_ctrl_next_path(c, p))
/**
- * ()
+ * nvme_ctrl_for_each_path()
*/
#define nvme_ctrl_for_each_path(c, p) \
for (p = nvme_ctrl_first_path(c); p != NULL; \
p = nvme_ctrl_next_path(c, p))
/**
- * ()
+ * nvme_subsystem_for_each_ns_safe()
*/
#define nvme_subsystem_for_each_ns_safe(s, n, _n) \
for (n = nvme_subsystem_first_ns(s), \
n = _n, _n = nvme_subsystem_next_ns(s, n))
/**
- * ()
+ * nvme_subsystem_for_each_ns()
*/
#define nvme_subsystem_for_each_ns(s, n) \
for (n = nvme_subsystem_first_ns(s); n != NULL; \
uint64_t nvme_ns_get_lba_util(nvme_ns_t n);
/**
- * char () -
+ * nvme_ns_get_sysfs_dir() -
*/
const char *nvme_ns_get_sysfs_dir(nvme_ns_t n);
/**
- * char () -
+ * nvme_ns_get_name() -
*/
const char *nvme_ns_get_name(nvme_ns_t n);
int nvme_ns_identify(nvme_ns_t n, struct nvme_id_ns *ns);
/**
- * char () -
+ * nvme_path_get_name() -
*/
const char *nvme_path_get_name(nvme_path_t p);
/**
- * char () -
+ * nvme_path_get_sysfs_dir() -
*/
const char *nvme_path_get_sysfs_dir(nvme_path_t p);
/**
- * char () -
+ * nvme_path_get_ana_state() -
*/
const char *nvme_path_get_ana_state(nvme_path_t p);
*/
nvme_ns_t nvme_path_get_ns(nvme_path_t p);
+/**
+ * nvme_ctrl_get_fd() -
+ */
int nvme_ctrl_get_fd(nvme_ctrl_t c);
+
/**
- * char () -
+ * nvme_ctrl_get_name() -
*/
const char *nvme_ctrl_get_name(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_sysfs_dir() -
*/
const char *nvme_ctrl_get_sysfs_dir(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_address() -
*/
const char *nvme_ctrl_get_address(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_firmware() -
*/
const char *nvme_ctrl_get_firmware(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_model() -
*/
const char *nvme_ctrl_get_model(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_state() -
*/
const char *nvme_ctrl_get_state(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_numa_node() -
*/
const char *nvme_ctrl_get_numa_node(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_queue_count() -
*/
const char *nvme_ctrl_get_queue_count(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_serial() -
*/
const char *nvme_ctrl_get_serial(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_sqsize() -
*/
const char *nvme_ctrl_get_sqsize(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_transport() -
*/
const char *nvme_ctrl_get_transport(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_nqn() -
*/
const char *nvme_ctrl_get_nqn(nvme_ctrl_t c);
/**
- * char () -
+ * nvme_ctrl_get_subsysnqn() -
*/
const char *nvme_ctrl_get_subsysnqn(nvme_ctrl_t c);
+
/**
* nvme_ctrl_get_subsystem() -
*/
* nvme_ctrl_identify() -
*/
int nvme_ctrl_identify(nvme_ctrl_t c, struct nvme_id_ctrl *id);
+
/**
* nvme_ctrl_disconnect() -
*/
int nvme_ctrl_disconnect(nvme_ctrl_t c);
+
/**
* nvme_scan_ctrl() -
*/
void nvme_unlink_ctrl(struct nvme_ctrl *c);
/**
- * char () -
+ * nvme_subsystem_get_nqn() -
*/
const char *nvme_subsystem_get_nqn(nvme_subsystem_t s);
+
/**
- * char () -
+ * nvme_subsystem_get_sysfs_dir() -
*/
const char *nvme_subsystem_get_sysfs_dir(nvme_subsystem_t s);
+
/**
- * char () -
+ * nvme_subsystem_get_name() -
*/
const char *nvme_subsystem_get_name(nvme_subsystem_t s);
void nvme_free_tree(nvme_root_t r);
/**
- * *() -
+ * nvme_get_subsys_attr() -
*/
char *nvme_get_subsys_attr(nvme_subsystem_t s, const char *attr);
/**
- * *() -
+ * nvme_get_ctrl_attr() -
*/
char *nvme_get_ctrl_attr(nvme_ctrl_t c, const char *attr);
/**
- * *() -
+ * nvme_get_ns_attr() -
*/
char *nvme_get_ns_attr(nvme_ns_t n, const char *attr);
/**
- * *() -
+ * nvme_get_path_attr() -
*/
char *nvme_get_path_attr(nvme_path_t p, const char *attr);
return -1;
}
-int nvme_fw_download_split(int fd, __u32 size, __u32 xfer, __u32 offset,
- void *buf)
+int nvme_fw_download_seq(int fd, __u32 size, __u32 xfer, __u32 offset,
+ void *buf)
{
int err = 0;
int nvme_get_telemetry_log(int fd, bool create, bool ctrl, int data_area,
void **buf, __u32 *log_size)
{
- struct nvme_telemetry_log *telem;
static const __u32 xfer = 512;
- __u32 size, offset = xfer;
+
+ __u8 lid = NVME_LOG_LID_TELEMETRY_HOST;
+ struct nvme_telemetry_log *telem;
+ __u32 size;
void *log;
int err;
return -1;
}
- if (ctrl)
+ if (ctrl) {
err = nvme_get_log_telemetry_ctrl(fd, true, 0, xfer, log);
- else if (create)
+ lid = NVME_LOG_LID_TELEMETRY_CTRL;
+ } else if (create)
err = nvme_get_log_create_telemetry_host(fd, log);
else
err = nvme_get_log_telemetry_host(fd, 0, xfer, log);
goto free;
}
- while (offset != size) {
- if (ctrl)
- err = nvme_get_log_telemetry_ctrl(fd, true, offset,
- xfer, log + offset);
- else
- err = nvme_get_log_telemetry_host(fd, offset, xfer,
- log + offset);
- if (err)
- goto free;
- offset += xfer;
- }
+ err = nvme_get_log_page(fd, NVME_NSID_NONE, lid, true, size, (void *)log);
+ if (err)
+ goto free;
done:
*log_size = size;
*buf = log;
__u8 nvme_status_to_errno(int status, bool fabrics);
/**
- * nvme_fw_download_split() -
+ * nvme_fw_download_seq() -
*/
-int nvme_fw_download_split(int fd, __u32 size, __u32 xfer, __u32 offset,
- void *buf);
+int nvme_fw_download_seq(int fd, __u32 size, __u32 xfer, __u32 offset,
+ void *buf);
/**
* nvme_get_telemetry_log() -