fio_ro_check(td, io_u);
- if (ld->queued == ld->iodepth)
+ /* should not hit... */
+ if (ld->queued == td->o.iodepth)
return FIO_Q_BUSY;
/* if async trim has been tried and failed, punt to sync */
{
struct ioring_data *ld = td->io_ops_data;
struct ioring_options *o = td->eo;
- int depth = td->o.iodepth;
+ int depth = ld->iodepth;
struct io_uring_params p;
int ret;
{
struct ioring_data *ld = td->io_ops_data;
struct ioring_options *o = td->eo;
- int depth = td->o.iodepth;
+ int depth = ld->iodepth;
struct io_uring_params p;
int ret;
return 1;
}
- for (i = 0; i < td->o.iodepth; i++) {
+ for (i = 0; i < ld->iodepth; i++) {
struct io_uring_sqe *sqe;
sqe = &ld->sqes[i];
return 1;
}
- for (i = 0; i < td->o.iodepth; i++) {
+ for (i = 0; i < ld->iodepth; i++) {
struct io_uring_sqe *sqe;
if (o->cmd_type == FIO_URING_CMD_NVME) {
ld = calloc(1, sizeof(*ld));
- /* ring depth must be a power-of-2 */
- ld->iodepth = td->o.iodepth;
- td->o.iodepth = roundup_pow2(td->o.iodepth);
+ /*
+ * The internal io_uring queue depth must be a power-of-2, as that's
+ * how the ring interface works. So round that up, in case the user
+ * set iodepth isn't a power-of-2. Leave the fio depth the same, as
+ * not to be driving too much of an iodepth, if we did round up.
+ */
+ ld->iodepth = roundup_pow2(td->o.iodepth);
/* io_u index */
ld->io_u_index = calloc(td->o.iodepth, sizeof(struct io_u *));
}
parse_prchk_flags(o);
- ld->iovecs = calloc(td->o.iodepth, sizeof(struct iovec));
+ ld->iovecs = calloc(ld->iodepth, sizeof(struct iovec));
td->io_ops_data = ld;