if (o->cmd_type == FIO_URING_CMD_NVME) {
struct nvme_data *data = NULL;
- unsigned int nsid, lba_size = 0;
- __u32 ms = 0;
+ unsigned int lba_size = 0;
__u64 nlba = 0;
int ret;
/* Store the namespace-id and lba size. */
data = FILE_ENG_DATA(f);
if (data == NULL) {
- ret = fio_nvme_get_info(f, &nsid, &lba_size, &ms, &nlba);
- if (ret)
- return ret;
-
data = calloc(1, sizeof(struct nvme_data));
- data->nsid = nsid;
- if (ms)
- data->lba_ext = lba_size + ms;
- else
- data->lba_shift = ilog2(lba_size);
+ ret = fio_nvme_get_info(f, &nlba, data);
+ if (ret) {
+ free(data);
+ return ret;
+ }
FILE_SET_ENG_DATA(f, data);
}
- assert(data->lba_shift < 32);
- lba_size = data->lba_ext ? data->lba_ext : (1U << data->lba_shift);
+ lba_size = data->lba_ext ? data->lba_ext : data->lba_size;
for_each_rw_ddir(ddir) {
if (td->o.min_bs[ddir] % lba_size ||
if (o->cmd_type == FIO_URING_CMD_NVME) {
struct nvme_data *data = NULL;
- unsigned int nsid, lba_size = 0;
- __u32 ms = 0;
__u64 nlba = 0;
int ret;
- ret = fio_nvme_get_info(f, &nsid, &lba_size, &ms, &nlba);
- if (ret)
- return ret;
-
data = calloc(1, sizeof(struct nvme_data));
- data->nsid = nsid;
- if (ms)
- data->lba_ext = lba_size + ms;
- else
- data->lba_shift = ilog2(lba_size);
+ ret = fio_nvme_get_info(f, &nlba, data);
+ if (ret) {
+ free(data);
+ return ret;
+ }
- f->real_file_size = lba_size * nlba;
+ f->real_file_size = data->lba_size * nlba;
fio_file_set_size_known(f);
FILE_SET_ENG_DATA(f, data);