Skip to content

Commit b71bcc4

Browse files
committed
linux: Add nvme_get_logical_block_size()
Add helper to retrieve logical block size using nvme_identify_ns(). Signed-off-by: Daniel Wagner <[email protected]>
1 parent 042f5ea commit b71bcc4

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

src/libnvme.map

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ LIBNVME_1_0 {
132132
nvme_get_log_telemetry_ctrl;
133133
nvme_get_log_telemetry_host;
134134
nvme_get_log_zns_changed_zones;
135+
nvme_get_logical_block_size;
135136
nvme_get_new_host_telemetry;
136137
nvme_get_ns_attr;
137138
nvme_get_nsid;

src/nvme/linux.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,22 @@ int nvme_get_ana_log_len(int fd, size_t *analen)
294294
return 0;
295295
}
296296

297+
int nvme_get_logical_block_size(int fd, __u32 nsid, int *blksize)
298+
{
299+
struct nvme_id_ns ns;
300+
int flbas;
301+
int ret;
302+
303+
ret = nvme_identify_ns(fd, nsid, &ns);
304+
if (ret)
305+
return ret;
306+
307+
flbas = ns.flbas & NVME_NS_FLBAS_LBA_MASK;
308+
*blksize = 1 << ns.lbaf[flbas].ds;
309+
310+
return 0;
311+
}
312+
297313
static int __nvme_set_attr(const char *path, const char *value)
298314
{
299315
int ret, fd;

src/nvme/linux.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ int nvme_get_log_page(int fd, __u32 nsid, __u8 log_id, bool rae,
109109
*/
110110
int nvme_get_ana_log_len(int fd, size_t *analen);
111111

112+
/**
113+
* nvme_get_logical_block_size() - Retrieve block size
114+
* @fd: File descriptor of nvme device
115+
* @blksize: Pointer to where the block size will be set on success
116+
*
117+
* Return: The nvme command status if a response was received (see
118+
* &enum nvme_status_field) or -1 with errno set otherwise.
119+
*/
120+
int nvme_get_logical_block_size(int fd, __u32 nsid, int *blksize);
121+
112122
/**
113123
* nvme_get_lba_status_log() - Retreive the LBA Status log page
114124
* @fd: File descriptor of the nvme device

0 commit comments

Comments
 (0)