case FIO_Q_COMPLETED:
if (io_u->error) {
ret = -io_u->error;
+ unlog_io_piece(td, io_u);
clear_io_u(td, io_u);
} else if (io_u->resid) {
int bytes = io_u->xfer_buflen - io_u->resid;
struct fio_file *f = io_u->file;
bytes_issued += bytes;
+
+ trim_io_piece(td, io_u);
+
/*
* zero read, fail
*/
if (!bytes) {
+ unlog_io_piece(td, io_u);
td_verror(td, EIO, "full resid");
put_io_u(td, io_u);
break;
bytes_issued += io_u->xfer_buflen;
break;
case FIO_Q_BUSY:
+ unlog_io_piece(td, io_u);
requeue_io_u(td, &io_u);
ret2 = td_io_commit(td);
if (ret2 < 0)
#ifdef CONFIG_LIBNUMA
/* numa node setup */
if (o->numa_cpumask_set || o->numa_memmask_set) {
+ struct bitmask *mask;
int ret;
if (numa_available() < 0) {
}
if (o->numa_cpumask_set) {
- ret = numa_run_on_node_mask(o->numa_cpunodesmask);
+ mask = numa_parse_nodestring(o->numa_cpunodes);
+ ret = numa_run_on_node_mask(mask);
+ numa_free_nodemask(mask);
if (ret == -1) {
td_verror(td, errno, \
"numa_run_on_node_mask failed\n");
if (o->numa_memmask_set) {
+ mask = NULL;
+ if (o->numa_memnodes)
+ mask = numa_parse_nodestring(o->numa_memnodes);
+
switch (o->numa_mem_mode) {
case MPOL_INTERLEAVE:
- numa_set_interleave_mask(o->numa_memnodesmask);
+ numa_set_interleave_mask(mask);
break;
case MPOL_BIND:
- numa_set_membind(o->numa_memnodesmask);
+ numa_set_membind(mask);
break;
case MPOL_LOCAL:
numa_set_localalloc();
break;
}
+ if (mask)
+ numa_free_nodemask(mask);
+
}
}
#endif