AgeCommit message (Collapse)Author
2019-08-02nbd: Document the NBD-specific uri parameterRichard W.M. Jones
Signed-off-by: Richard W.M. Jones <> Signed-off-by: Jens Axboe <>
2019-08-02parse: bump max value pairs supported from 24 to 32Jens Axboe
The recent addition of the nbd engine overflowed what we support. Fixes: d643a1e29d31 ("engines: Add Network Block Device (NBD) support using libnbd") Signed-off-by: Jens Axboe <>
2019-08-02engines: Add Network Block Device (NBD) support using libnbd.Richard W.M. Jones
This commit adds a new engine for testing Network Block Devices directly. It requires libnbd ( To see how to test nbdkit or qemu-nbd read examples/nbd.fio. Signed-off-by: Richard W.M. Jones <> Signed-off-by: Jens Axboe <>
2019-07-31smalloc: cleanup firstfree()Jens Axboe
Signed-off-by: Jens Axboe <>
2019-07-31smalloc: fix compiler warning on WindowsVincent Fu
firstfree() triggers a warning from the Windows compiler used by AppVeyor because it doesn't return a value if the for loop iterates to completion. This patch resolves the compiler warning. AppVeyor Windows build log: Signed-off-by: Jens Axboe <>
2019-07-31Remove unused fio_assert()Jens Axboe
Signed-off-by: Jens Axboe <>
2019-07-31Merge branch 'smalloc-gc' of Axboe
* 'smalloc-gc' of smalloc: fix garbage collection problem t/stest: make the test more challenging smalloc: print debug info on oom error
2019-07-31smalloc: fix garbage collection problemVincent Fu
If a large request arrives when pool->next_non_full points to empty space that is insufficient to satisfy the request, pool->next_non_full will be inappropriately advanced when the free space is followed by lines of fully allocated space. The free space originally pointed to by pool->next_non_full will be unavailable unless a subsequent sfree() call frees allocated space above it. Resolve this issue by advancing pool->next_non_full only outside the search loop and only when it points to fully allocated space.
2019-07-31t/stest: make the test more challengingVincent Fu
Add large smalloc requests to the sfree phase of the test. This exposes a smalloc garbage collection issue.
2019-07-31smalloc: print debug info on oom errorVincent Fu
Provide more details about the request and the state of the memory pools when smalloc encounters an oom situation.
2019-07-31Merge branch 'dev' of Axboe
* 'dev' of libiscsi: continue working when meets EINTR or EAGAIN
2019-07-31Merge branch 'gnuplot-tabs' of Axboe
* 'gnuplot-tabs' of fio2gnuplot: fix TabErrors when running with Python 3
2019-07-31bssplit: Fix handling of 0 percentageDamien Le Moal
If a block size percentage is ispecified as 0 in bssplit, the block size defined is not ignored by the loop in get_next_buflen(). In particular, if the first (smallest) block size specified has a 0 percentage, the loop is existed and that block size used as the next IO size, resulting in a behavior equivalent to specifying 100%. E.g. using --bssplit=64k/0,1024k/100 results in 100% of issued IOs to be 64KB instead of 1MB. Fix this by ignoring bssplit entries that have a 0 percentage. This is safe as the initialization of the bssplit array ensure that the sum of all percentages is always 100, guaranteeing that a block size will be chosen for the next IO size. Signed-off-by: Damien Le Moal <> Signed-off-by: Jens Axboe <>
2019-07-27fio2gnuplot: fix TabErrors when running with Python 3Alexander Kapshuna
Closes #804 Signed-off-by: Alexander Kapshuna <>
2019-07-26Document io_uring featureJens Axboe
This was released with Linux 5.1, so we can document it now as the API won't change. Signed-off-by: Jens Axboe <>
2019-07-26engines/libaio: remove remnants of abandoned aio featuresJens Axboe
Before we had io_uring, aio grew support for polled IO and setup through a new system call. As this never made it into Linux and was abandoned in favor of io_uring, kill it off. Signed-off-by: Jens Axboe <>
2019-07-19libiscsi: continue working when meets EINTR or EAGAINKyle Zhang
When poll meets EINTR or EAGAIN, it should continue working rather than return error. Signed-off-by: Kyle Zhang <>
2019-07-12Merge branch 'dev' of Axboe
* 'dev' of libiscsi: log reason of error when readcapacity failed
2019-07-12Fio 3.15fio-3.15Jens Axboe
Signed-off-by: Jens Axboe <>
2019-07-12libiscsi: log reason of error when readcapacity failedKyle Zhang
Signed-off-by: Kyle Zhang <>
2019-07-09engines/http: set FIO_SYNCIO flagVincent Fu
This ioengine carries out synchronous operations. So the FIO_SYNCIO flag needs to be set in order for latencies to be calculated correctly. Fixes: Signed-off-by: Jens Axboe <>
2019-07-09fio: fix aio trim completion latenciesVincent Fu
The io_uring, libaio, and posixaio ioengines actually carry out synchronous trim operations, but latency timestamps are recorded as if the trims were issued asynchronously. This patch fixes how timestamps are recorded for trim operations issued by these ioengines. Fixes: Signed-off-by: Jens Axboe <>
2019-07-01Merge branch 'optlenmax' of Axboe
* 'optlenmax' of Increase maximum length of line in jobs file to 8192
2019-07-01Increase maximum length of line in jobs file to 8192Nick Principe
Increase OPT_LEN_MAX to 8192, use OPT_LEN_MAX for string in __parse_jobs_ini(), and document line length limit for job files in man page. Signed-off-by: Nick Principe
2019-07-01engines/rbd: hide rbd_io_u_seen() if not usedJens Axboe
Signed-off-by: Jens Axboe <>
2019-06-04eta: Fix compiler warningDamien Le Moal
gcc 9 complains about directly referencing pointer values in the packed structure jobs_eta. E.g.: warning: taking address of packed member of ‘struct jobs_eta’ may result in an unaligned pointer value [-Waddress-of-packed-member] Remove this by using a local void pointer for the rate and iops array references that generate the warning. Signed-off-by: Damien Le Moal <> Signed-off-by: Jens Axboe <>
2019-06-04Fix string copy compilation warningsDamien Le Moal
Fix the many warnings that gcc 9 spits out. Signed-off-by: Damien Le Moal <> Signed-off-by: Jens Axboe <>
2019-05-31Merge branch 'wip-tcmalloc' of Axboe
* 'wip-tcmalloc' of configure: attempt to link against tcmalloc by default if available
2019-05-31configure: attempt to link against tcmalloc by default if availableJason Dillaman
librbd will run up to 20% faster under small IO workloads when fio is linked against tcmalloc. By automatically linking against tcmalloc, it avoids the need to use LD_PRELOAD to pull in a faster memory management toolset. Signed-off-by: Jason Dillaman <>
2019-05-30Fix assert error on blktrace replay containing trimskrisd
2019-05-27configure: check for gtk version using pkg-configHelmut Grohne
The previous way of running a program was incompatible with cross compilation. The program is still being compiled as a sanity check, but no longer run. Signed-off-by: Helmut Grohne <> Signed-off-by: Jens Axboe <>
2019-05-27configure: apply ${cross_prefix} to pkg-config callsHelmut Grohne
Otherwise, we're searching for build architecture libraries which is not what we want. Signed-off-by: Helmut Grohne <> Signed-off-by: Jens Axboe <>
2019-05-23glusterfs: update for new APIJens Axboe
Apparently glusterfs just changes their API as they see fit. Add a configure check for the newer version, which adds pre/post stat variables in a few random spots. This should fix compilation with v6.0 of the API. Fixes: Signed-off-by: Jens Axboe <>
2019-05-22configure: add gettid() testJens Axboe
Apparently some newer glibcs now have it, decades after the fact. Signed-off-by: Jens Axboe <>
2019-05-22Fio 3.14fio-3.14Jens Axboe
Signed-off-by: Jens Axboe <>
2019-05-20io_uring: sync with liburing/kernelJens Axboe
Signed-off-by: Jens Axboe <>
2019-05-16stat: remove terse v2 blank lines with description not setVincent Fu
The documentation says that the job description will appear on a second line if this is set. If it is not set there will be an empty line. Eliminate the empty line when the description is not set. Signed-off-by: Jens Axboe <>
2019-05-16docs: improve terse output format documentationVincent Fu
Fix up some details and note client/server mode differences. Signed-off-by: Jens Axboe <>
2019-05-16client: add a newline after terse disk utilVincent Fu
In client/server mode terse disk utilization output appears at the end of each blob of terse output. We need a newline so that the next blob of terse output starts at the beginning of a line. Signed-off-by: Jens Axboe <>
2019-05-16client: handle disk util for all output formatsVincent Fu
Since fio allows multiple output formats, it should process the disk utilization data for each output format that was requested by the user when it is run in client/server mode. Signed-off-by: Jens Axboe <>
2019-05-16client: do not print disk utilization for terse v2Vincent Fu
terse version 2 omits disk utilization data when fio is run locally. Make this behavior the same when fio is run in client/server mode. Signed-off-by: Jens Axboe <>
2019-05-09t/io_uring: improve EOPNOTSUPP messageJens Axboe
Put in one line and include kernel as well. Signed-off-by: Jens Axboe <>
2019-05-08t/io_uring: clarify polled support is fs + deviceJens Axboe
Signed-off-by: Jens Axboe <>
2019-05-06Update CFLAGS and LDFLAGS for FreeBSD buildsRebecca Cran
FreeBSD installs third-party headers into /usr/local/include and libraries into /usr/local/lib. Update CFLAGS and LDFLAGS to look there. Signed-off-by: Jens Axboe <>
2019-05-06Merge branch 'fix-infinite-loop-of-io_uring' of ↵Jens Axboe * 'fix-infinite-loop-of-io_uring' of io_uring: fix possible infinite loop
2019-05-06io_uring: fix possible infinite loopSatoru Takeuchi
When reaping some completed I/O before io_uring_enter(), it waits forever. Signed-off-by: Satoru Takeuchi <>
2019-04-25io_uring: remove cachehit informationJens Axboe
This patch never made it into the upstream kernel, remove knowledge of it from fio. Signed-off-by: Jens Axboe <>
2019-04-25Fix __FIO_OPT_G_ISCSI numberingJens Axboe
__FIO_OPT_G_NR must always be last, if it isn't then it doesn't denote the last used bit. Fixes: 247ef2aaf28a ("fio: add libiscsi engine") Signed-off-by: Jens Axboe <>
2019-04-25zbd random read conventional zonesPhillip Chen
Initialize conventional zone write pointers to full so zbd_find_zone will accept conventional zones when searching around a randomly chosen empty zone. Reviewed-by: Damien Le Moal <> Signed-off-by: Phillip Chen <> Signed-off-by: Jens Axboe <>
2019-04-22Merge branch 'libiscsi' of Axboe
* 'libiscsi' of fio: add libiscsi engine filesetup: don't call create_work_dirs() for ioengine with FIO_DISKLESSIO