nvme\_init\_read(9) libnvme API manual nvme\_init\_read(9)

# [NAME](#NAME)

nvme\_init\_read - Initialize passthru command for a user read command

# [SYNOPSIS](#SYNOPSIS)

**void nvme\_init\_read** **(struct libnvme\_passthru\_cmd \*cmd ,** **\_\_u32 nsid ,** **\_\_u64 slba ,** **\_\_u16 nlb ,** **\_\_u16 control ,** **\_\_u8 dsm ,** **\_\_u16 cev ,** **void \*data ,** **\_\_u32 data\_len ,** **void \*metadata ,** **\_\_u32 metadata\_len );**

# [ARGUMENTS](#ARGUMENTS)

[cmd](#cmd)

Passthru command to use

[nsid](#nsid)

Namespace ID

[slba](#slba)

Starting logical block

[nlb](#nlb)

Number of logical blocks (0-based)

[control](#control)

Upper 16 bits of cdw12

[dsm](#dsm)

Data set management attributes (CETYPE is zero), see *enum nvme\_io\_dsm\_flags*

[cev](#cev)

Command Extension Value (CETYPE is non-zero)

[data](#data)

Pointer to user address of the data buffer

[data\_len](#data_len)

Length of user buffer, *data*, in bytes

[metadata](#metadata)

Pointer to user address of the metadata buffer

[metadata\_len](#metadata_len)

Length of user buffer, *metadata*, in bytes

# [DESCRIPTION](#DESCRIPTION)

Initializes the passthru command buffer for the Read command.

# [NOTE](#NOTE)

Assumes a macro or separate function exists to translate the combined NLB/control/prinfo fields into cdw12/cdw13. This transformation assumes the parameters are used for a generic nvme\_init\_io wrapper.

nvme\_init\_read October 2026

---

Document: nvme_init_read-libnvme3(2) from nvme-cli 3.2-r0 (Chainguard OS)
Source: https://github.com/linux-nvme/nvme-cli
