libnvme_mi_mi_xfer(9) libnvme API manual libnvme_mi_mi_xfer(9)

libnvme_mi_mi_xfer - Raw mi transfer interface.

int libnvme_mi_mi_xfer (struct libnvme_mi_ep *ep , struct nvme_mi_mi_req_hdr *mi_req , size_t req_data_size , struct nvme_mi_mi_resp_hdr *mi_resp , size_t *resp_data_size );

endpoint to send the MI command to
request data
size of request data payload
buffer for response data
size of response data buffer, updated to received size

Performs an arbitrary NVMe MI command, using the provided request data, in mi_req. The size of the request data *payload* is specified in req_data_size - this does not include the standard header length (so a header-only request would have a size of 0). Note that the Management Request Doublewords are considered part of the header data.

On success, response data is stored in mi_resp, which has an optional appended payload buffer of resp_data_size bytes. The actual payload size transferred will be stored in resp_data_size. This size does not include the MI response header, so 0 represents no payload.

See: struct nvme_mi_mi_req_hdr and struct nvme_mi_mi_resp_hdr.

The nvme command status if a response was received (see enum nvme_status_field) or negative error code otherwise.

libnvme_mi_mi_xfer September 2026