#include "../crc/crc-t10dif.h"
#include "../crc/crc64.h"
-static inline __u64 get_slba(struct nvme_data *data, struct io_u *io_u)
+static inline __u64 get_slba(struct nvme_data *data, __u64 offset)
{
if (data->lba_ext)
- return io_u->offset / data->lba_ext;
- else
- return io_u->offset >> data->lba_shift;
+ return offset / data->lba_ext;
+
+ return offset >> data->lba_shift;
}
-static inline __u32 get_nlb(struct nvme_data *data, struct io_u *io_u)
+static inline __u32 get_nlb(struct nvme_data *data, __u64 len)
{
if (data->lba_ext)
- return io_u->xfer_buflen / data->lba_ext - 1;
- else
- return (io_u->xfer_buflen >> data->lba_shift) - 1;
+ return len / data->lba_ext - 1;
+
+ return (len >> data->lba_shift) - 1;
}
static void fio_nvme_generate_pi_16b_guard(struct nvme_data *data,
struct nvme_16b_guard_pif *pi;
unsigned char *buf = io_u->xfer_buf;
unsigned char *md_buf = io_u->mmap_data;
- __u64 slba = get_slba(data, io_u);
- __u32 nlb = get_nlb(data, io_u) + 1;
+ __u64 slba = get_slba(data, io_u->offset);
+ __u32 nlb = get_nlb(data, io_u->xfer_buflen) + 1;
__u32 lba_num = 0;
__u16 guard = 0;
struct fio_file *f = io_u->file;
unsigned char *buf = io_u->xfer_buf;
unsigned char *md_buf = io_u->mmap_data;
- __u64 slba = get_slba(data, io_u);
- __u32 nlb = get_nlb(data, io_u) + 1;
+ __u64 slba = get_slba(data, io_u->offset);
+ __u32 nlb = get_nlb(data, io_u->xfer_buflen) + 1;
__u32 lba_num = 0;
__u16 unmask_app, unmask_app_exp, guard = 0;
unsigned char *buf = io_u->xfer_buf;
unsigned char *md_buf = io_u->mmap_data;
uint64_t guard = 0;
- __u64 slba = get_slba(data, io_u);
- __u32 nlb = get_nlb(data, io_u) + 1;
+ __u64 slba = get_slba(data, io_u->offset);
+ __u32 nlb = get_nlb(data, io_u->xfer_buflen) + 1;
__u32 lba_num = 0;
if (data->pi_loc) {
struct fio_file *f = io_u->file;
unsigned char *buf = io_u->xfer_buf;
unsigned char *md_buf = io_u->mmap_data;
- __u64 slba = get_slba(data, io_u);
+ __u64 slba = get_slba(data, io_u->offset);
__u64 ref, ref_exp, guard = 0;
- __u32 nlb = get_nlb(data, io_u) + 1;
+ __u32 nlb = get_nlb(data, io_u->xfer_buflen) + 1;
__u32 lba_num = 0;
__u16 unmask_app, unmask_app_exp;
return -ENOTSUP;
}
- slba = get_slba(data, io_u);
- nlb = get_nlb(data, io_u);
+ slba = get_slba(data, io_u->offset);
+ nlb = get_nlb(data, io_u->xfer_buflen);
/* cdw10 and cdw11 represent starting lba */
cmd->cdw10 = slba & 0xffffffff;
struct nvme_data *data = FILE_ENG_DATA(io_u->file);
__u64 slba;
- slba = get_slba(data, io_u);
+ slba = get_slba(data, io_u->offset);
cmd->cdw12 |= opts->io_flags;
if (data->pi_type && !(opts->io_flags & NVME_IO_PRINFO_PRACT)) {