X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=backend.c;h=d1d55718b32ecb76009c6adc3484decee2f3a626;hb=b29c813fc632d486d8c9c7858c26ab31e0b89e8d;hp=e0f8aa76f584dc8f978c1f2649fae5292f563718;hpb=77731b29c35286a43ca6109ebf13389169ec20e9;p=fio.git diff --git a/backend.c b/backend.c index e0f8aa76..d1d55718 100644 --- a/backend.c +++ b/backend.c @@ -780,16 +780,21 @@ static uint64_t do_io(struct thread_data *td) 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; @@ -830,6 +835,7 @@ sync_done: 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) @@ -1339,6 +1345,7 @@ static void *thread_main(void *data) #ifdef CONFIG_LIBNUMA /* numa node setup */ if (o->numa_cpumask_set || o->numa_memmask_set) { + struct bitmask *mask; int ret; if (numa_available() < 0) { @@ -1347,7 +1354,9 @@ static void *thread_main(void *data) } 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"); @@ -1357,12 +1366,16 @@ static void *thread_main(void *data) 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(); @@ -1375,6 +1388,9 @@ static void *thread_main(void *data) break; } + if (mask) + numa_free_nodemask(mask); + } } #endif