*/
int nvme_identify(struct nvme_identify_args *args);
-static inline int nvme_identify_cns_nsid(int fd, enum nvme_identify_cns cns,
- __u32 nsid, void *data)
+static inline int nvme_identify_cns_nsid(int fd,
+ enum nvme_identify_cns cns, __u32 nsid, void *data)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = data,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err < 0 && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_ctrl_list(int fd, __u16 cntid,
struct nvme_ctrl_list *cntlist)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
.result = NULL,
.data = cntlist,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* Return: The nvme command status if a response was received (see
* &enum nvme_status_field) or -1
*/
-static inline int nvme_identify_nsid_ctrl_list(int fd, __u32 nsid, __u16 cntid,
- struct nvme_ctrl_list *cntlist)
+static inline int nvme_identify_nsid_ctrl_list(int fd, __u32 nsid,
+ __u16 cntid, struct nvme_ctrl_list *cntlist)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = cntlist,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_nvmset_list(int fd, __u16 nvmsetid,
struct nvme_id_nvmset_list *nvmset)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = nvmset,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_primary_ctrl(int fd, __u16 cntid,
struct nvme_primary_ctrl_cap *cap)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = cap,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_secondary_ctrl_list(int fd,
__u16 cntid, struct nvme_secondary_ctrl_list *sc_list)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = sc_list,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_ns_csi(int fd, __u32 nsid, __u8 uuidx,
enum nvme_csi csi, void *data)
{
+ __u32 result;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = data,
.args_size = sizeof(args),
.fd = fd,
.uuidx = uuidx,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* Return: The nvme command status if a response was received (see
* &enum nvme_status_field) or -1 with errno set otherwise.
*/
-static inline int nvme_identify_ctrl_csi(int fd, enum nvme_csi csi, void *data)
+static inline int nvme_identify_ctrl_csi(int fd, enum nvme_csi csi,
+ void *data)
{
+ __u32 result;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = data,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_active_ns_list_csi(int fd, __u32 nsid,
enum nvme_csi csi, struct nvme_ns_list *ns_list)
{
+ __u32 result;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = ns_list,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_allocated_ns_list_csi(int fd, __u32 nsid,
enum nvme_csi csi, struct nvme_ns_list *ns_list)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = ns_list,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
__u16 user_data_format, __u8 uuidx,
enum nvme_csi csi, void *data)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = data,
.args_size = sizeof(args),
.fd = fd,
.uuidx = uuidx,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
__u16 user_data_format, __u8 uuidx,
enum nvme_csi csi, void *data)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = data,
.args_size = sizeof(args),
.fd = fd,
.uuidx = uuidx,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_domain_list(int fd, __u16 domid,
struct nvme_id_domain_list *list)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = list,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_endurance_group_list(int fd, __u16 endgrp_id,
struct nvme_id_endurance_group_list *list)
{
+ __u32 result = 0;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = list,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_identify_iocs(int fd, __u16 cntlid,
struct nvme_id_iocs *iocs)
{
+ __u32 result;
+ int err;
struct nvme_identify_args args = {
- .result = NULL,
+ .result = &result,
.data = iocs,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_identify(&args);
+ err = nvme_identify(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
enum nvme_cmd_get_log_lid lid,
__u32 nsid, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
-static inline int nvme_get_log_simple(int fd, enum nvme_cmd_get_log_lid lid,
- __u32 len, void *log)
+static inline int nvme_get_log_simple(int fd,
+ enum nvme_cmd_get_log_lid lid, __u32 len, void *log)
{
return nvme_get_nsid_log(fd, false, lid, NVME_NSID_ALL, len, log);
}
static inline int nvme_get_log_cmd_effects(int fd, enum nvme_csi csi,
struct nvme_cmd_effects_log *effects_log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = effects_log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_create_telemetry_host(int fd,
struct nvme_telemetry_log *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_telemetry_host(int fd, __u64 offset,
__u32 len, void *log)
{
+ __u32 result;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_telemetry_ctrl(int fd, bool rae,
__u64 offset, __u32 len, void *log)
{
+ __u32 result;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_endurance_group(int fd, __u16 endgid,
struct nvme_endurance_group_log *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_predictable_lat_nvmset(int fd, __u16 nvmsetid,
struct nvme_nvmset_predictable_lat_log *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_predictable_lat_event(int fd, bool rae,
__u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* @offset: Offset into log page
* @len: Length (in bytes) of provided user buffer to hold the log data
* @log: Log page data buffer
+ *
+ * Return: The nvme command status if a response was received (see
+ * &enum nvme_status_field) or -1 with errno set otherwise.
*/
static inline int nvme_get_log_fdp_configurations(int fd, __u16 egid,
__u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_get_log(&args);
+ err = nvme_get_log(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* @offset: Offset into log page
* @len: Length (in bytes) of provided user buffer to hold the log data
* @log: Log page data buffer
+ *
+ * Return: The nvme command status if a response was received (see
+ * &enum nvme_status_field) or -1 with errno set otherwise.
*/
static inline int nvme_get_log_reclaim_unit_handle_usage(int fd, __u16 egid,
__u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_get_log(&args);
+ err = nvme_get_log(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* @offset: Offset into log page
* @len: Length (in bytes) of provided user buffer to hold the log data
* @log: Log page data buffer
+ *
+ * Return: The nvme command status if a response was received (see
+ * &enum nvme_status_field) or -1 with errno set otherwise.
*/
-static inline int nvme_get_log_fdp_stats(int fd, __u16 egid, __u32 offset, __u32 len, void *log)
+static inline int nvme_get_log_fdp_stats(int fd, __u16 egid, __u32 offset,
+ __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_get_log(&args);
+ err = nvme_get_log(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
* @offset: Offset into log page
* @len: Length (in bytes) of provided user buffer to hold the log data
* @log: Log page data buffer
+ *
+ * Return: The nvme command status if a response was received (see
+ * &enum nvme_status_field) or -1 with errno set otherwise.
*/
-static inline int nvme_get_log_fdp_events(int fd, __u16 egid, bool host_events, __u32 offset,
- __u32 len, void *log)
+static inline int nvme_get_log_fdp_events(int fd, __u16 egid, bool host_events,
+ __u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.uuidx = NVME_UUID_NONE,
};
- return nvme_get_log(&args);
+ err = nvme_get_log(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_ana(int fd, enum nvme_log_ana_lsp lsp, bool rae,
__u64 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_lba_status(int fd, bool rae,
__u64 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_endurance_grp_evt(int fd, bool rae,
__u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_boot_partition(int fd, bool rae,
__u8 lsp, __u32 len, struct nvme_boot_partition *part)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = part,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_phy_rx_eom(int fd, __u8 lsp, __u16 controller,
__u32 len, struct nvme_phy_rx_eom_log *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_discovery(int fd, bool rae,
__u32 offset, __u32 len, void *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = offset,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_media_unit_stat(int fd, __u16 domid,
struct nvme_media_unit_stat_log *mus)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = mus,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_support_cap_config_list(int fd, __u16 domid,
struct nvme_supported_cap_config_list_log *cap)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = cap,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_get_log_zns_changed_zones(int fd, __u32 nsid, bool rae,
struct nvme_zns_changed_zone_log *log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = log,
.args_size = sizeof(args),
.fd = fd,
.rae = rae,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
enum nvme_pevent_log_action action,
__u32 size, void *pevent_log)
{
+ __u32 result = 0;
+ int err;
struct nvme_get_log_args args = {
.lpo = 0,
- .result = NULL,
+ .result = &result,
.log = pevent_log,
.args_size = sizeof(args),
.fd = fd,
.rae = false,
.ot = false,
};
- return nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ err = nvme_get_log_page(fd, NVME_LOG_PAGE_PDU_SIZE, &args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
__u32 *nsid, __u32 timeout, __u8 csi,
struct nvme_ns_mgmt_host_sw_specified *data)
{
+ __u32 result = 0;
+ int err;
struct nvme_ns_mgmt_args args = {
- .result = nsid,
+ .result = &result,
.ns = ns,
.args_size = sizeof(args),
.fd = fd,
.data = data,
};
- return nvme_ns_mgmt(&args);
+ err = nvme_ns_mgmt(&args);
+ if (!err)
+ *nsid = result;
+ else if (result)
+ err = result;
+ return err;
}
/**
*/
static inline int nvme_ns_mgmt_delete(int fd, __u32 nsid)
{
+ __u32 result = 0;
+ int err;
struct nvme_ns_mgmt_args args = {
- .result = NULL,
+ .result = &result,
.ns = NULL,
.args_size = sizeof(args),
.fd = fd,
.data = NULL,
};
- return nvme_ns_mgmt(&args);
+ err = nvme_ns_mgmt(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_ns_attach_ctrls(int fd, __u32 nsid,
struct nvme_ctrl_list *ctrlist)
{
+ __u32 result = 0;
+ int err;
struct nvme_ns_attach_args args = {
- .result = NULL,
+ .result = &result,
.ctrlist = ctrlist,
.args_size = sizeof(args),
.fd = fd,
.sel = NVME_NS_ATTACH_SEL_CTRL_ATTACH,
};
- return nvme_ns_attach(&args);
+ err = nvme_ns_attach(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_ns_detach_ctrls(int fd, __u32 nsid,
struct nvme_ctrl_list *ctrlist)
{
+ __u32 result = 0;
+ int err;
struct nvme_ns_attach_args args = {
- .result = NULL,
+ .result = &result,
.ctrlist = ctrlist,
.args_size = sizeof(args),
.fd = fd,
.sel = NVME_NS_ATTACH_SEL_CTRL_DEATTACH,
};
- return nvme_ns_attach(&args);
+ err = nvme_ns_attach(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_directive_send_stream_release_identifier(int fd,
__u32 nsid, __u16 stream_id)
{
+ __u32 result = 0;
+ int err;
struct nvme_directive_send_args args = {
- .result = NULL,
+ .result = &result,
.data = NULL,
.args_size = sizeof(args),
.fd = fd,
.dspec = stream_id,
};
- return nvme_directive_send(&args);
+ err = nvme_directive_send(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
*/
static inline int nvme_directive_send_stream_release_resource(int fd, __u32 nsid)
{
+ __u32 result = 0;
+ int err;
struct nvme_directive_send_args args = {
- .result = NULL,
+ .result = &result,
.data = NULL,
.args_size = sizeof(args),
.fd = fd,
.dspec = 0,
};
- return nvme_directive_send(&args);
+ err = nvme_directive_send(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_directive_recv_identify_parameters(int fd, __u32 nsid,
struct nvme_id_directives *id)
{
+ __u32 result = 0;
+ int err;
struct nvme_directive_recv_args args = {
- .result = NULL,
+ .result = &result,
.data = id,
.args_size = sizeof(args),
.fd = fd,
.dspec = 0,
};
- return nvme_directive_recv(&args);
+ err = nvme_directive_recv(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_directive_recv_stream_parameters(int fd, __u32 nsid,
struct nvme_streams_directive_params *parms)
{
+ __u32 result = 0;
+ int err;
struct nvme_directive_recv_args args = {
- .result = NULL,
+ .result = &result,
.data = parms,
.args_size = sizeof(args),
.fd = fd,
.dspec = 0,
};
- return nvme_directive_recv(&args);
+ err = nvme_directive_recv(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
unsigned int nr_entries,
struct nvme_streams_directive_status *id)
{
+ __u32 result = 0;
+ int err;
struct nvme_directive_recv_args args = {
- .result = NULL,
+ .result = &result,
.data = id,
.args_size = sizeof(args),
.fd = fd,
.dspec = 0,
};
- return nvme_directive_recv(&args);
+ err = nvme_directive_recv(&args);
+ if (err && result)
+ err = result;
+ return err;
}
/**
static inline int nvme_flush(int fd, __u32 nsid)
{
struct nvme_passthru_cmd cmd = {};
+ __u32 result = 0;
+ int err;
cmd.opcode = nvme_cmd_flush;
cmd.nsid = nsid;
- return nvme_submit_io_passthru(fd, &cmd, NULL);
+ err = nvme_submit_io_passthru(fd, &cmd, &result);
+ if (err && result)
+ err = result;
+ return err;
}
/**