path: root/configure
AgeCommit message (Collapse)Author
2023-02-20configure: restore dev-dax and libpmemVincent Fu
The commit removing pmemblk inadvertently removed dev-dax and libpmem ioengines as well. Tested-by: Yi Zhang Fixes: 04c1cdc4c108c6537681ab7c50daaed6d2fb4c93 ("pmemblk: remove pmemblk engine") Fixes: Signed-off-by: Vincent Fu <>
2023-02-17pmemblk: remove pmemblk engineosalyk
No further support or maintenance of the libpmemblk library is planned. Signed-off-by: osalyk <>
2023-01-25Enable crc32c accelleration for arm64 on OSXJens Axboe
Before: jensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c crc32c: 440.18 MiB/sec After: ensaxboe@Jenss-MacBook-Pro fio % ./fio --crctest=crc32c crc32c: 23923.00 MiB/sec We know we have it on osx on arm hardware, enabling it is pretty straightforward with that assumption. Signed-off-by: Jens Axboe <>
2023-01-24Makefile: add -Wno-stringop-truncation for Axboe
This file is auto-generated, and it currently spews the following warning for me: In function ‘setup_to_parse_string’, inlined from ‘evaluate_arithmetic_expression’ at warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-truncation] 1559 | strncpy(lexer_input_buffer, string, len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note: length computed here 1556 | if (len > strlen(string)) | ^~~~~~~~~~~~~~ when compiled with: gcc (Debian 12.2.0-14) 12.2.0 Just set -Wno-stringop-truncation unconditionally in the Makefile for this file, don't think there's any point in checking if this warning has been enabled manually. Signed-off-by: Jens Axboe <>
2022-12-02Add a libblkio engineAlberto Faria
The libblkio library provides a unified API for efficiently accessing block devices using modern high-performance block I/O interfaces like io_uring and vhost-user-blk. Using libblkio reduces the amount of code needed for interfacing with storage devices and allows developers to focus on their applcations. Add a libblkio engine that uses libblkio to perform I/O. This is useful to benchmark the library itself, and also adds support for storage interfaces and devices otherwise not supported by fio, such as virtio-blk PCI, vhost-user, and vhost-vDPA devices. See the libblkio documentation [2] or KVM Forum 2022 [3] presentation for more information on the library itself. [1] [2] [3] Signed-off-by: Alberto Faria <> Signed-off-by: Vincent Fu <>
2022-11-13configure: Fix the struct nvme_uring_cmd detectionBart Van Assche
Prevent that struct nvme_uring_cmd detection fails as follows: error: unused variable 'cmd' [-Werror=unused-variable] Signed-off-by: Bart Van Assche <>
2022-11-13configure: Fix clock_gettime() detectionBart Van Assche
Prevent that the clock_gettime() and CLOCK_MONOTONIC tests fail as follows: error: argument 2 null where non-null expected [-Werror=nonnull] Signed-off-by: Bart Van Assche <>
2022-11-07Android: Enable zoned block device supportBart Van Assche
Enable support for --zonemode=zbd on Android. Signed-off-by: Bart Van Assche <>
2022-10-18fix configure probe for libcufileBrian T. Smith
The libcufile probe now requires -ldl passsed to the linker. Signed-off-by: Brian T. Smith <>
2022-09-19configure: change grep -P to grep -EVincent Fu
grep -P is not supported on FreeBSD. So use grep -E when we check whether the value provided for --seed-buckets is a number or not. Reported-by: Rebecca Cran <> Link: Signed-off-by: Vincent Fu <>
2022-09-06rpma: add support for libpmem2 to librpma engine in APM modeKacper Stefanski
Add support for libpmem2 to librpma fio engine in the APM mode. Signed-off-by: Kacper Stefanski <>
2022-08-10lib/rand: Enhance __fill_random_buf using the multi random seedSungup Moon
The __fill_random_buf fills a buffer using the random 8byte integer to write. But, this mechanism is depend on the CPU performance and could not reach the max performance on the PCIe Gen5 devices. I have tested 128KB single worker sequential write on PCIe Gen5 NVMe, but it cannot reach write throughput 6.0GB/s. So, I have reviewed the __fill_random_buf and focused the multiplier dependency to generate the random number. So, I have changed __fill_random_buf using the multiple-random-seed to reduce the dependencies in the small data filling loop. I'll attach detail analysis result in the PR of this branch. Signed-off-by: Sungup Moon <>
2022-07-22configure: cleanups for nfs ioengineVincent Fu
By default, build the nfs ioengine if configure can find libnfs. Add a --disable-libnfs to avoid building the nfs ionegine even if support could be found on the system. Change the --enable-libnfs option to abort the build if libnfs cannot be found. Also use pkg-config to find the libnfs path instead of hard coding the path. Finally, drop CONFIG_NFS and use CONFIG_LIBNFS everywhere. There's no reason to have two separate symbols. Signed-off-by: Vincent Fu <>
2022-07-05configure: revert NFS configure changeJens Axboe
It's broken and nobody seems to be stepping up to fix it, revert the known problematic change. Fixes: 165b8a70f919 ("NFS configure fixes") Link: Signed-off-by: Jens Axboe <>
2022-06-22configure: add option to disable xnvme buildAnkit Kumar
Add option to disable xnvme build even if found. Remove enable xnvme build option, as xnvme support is already being probed. Signed-off-by: Ankit Kumar <> Link: Signed-off-by: Jens Axboe <>
2022-06-13configure: Fix libzbc detection on SUSE LinuxBart Van Assche
The path of the libzbc header file is /usr/include/libzbc/libzbc/zbc.h instead of /usr/include/libzbc/zbc.h on SUSE Linux systems. Add support for the SUSE libzbc include path. Signed-off-by: Bart Van Assche <>
2022-06-13configure: Support gcc 12Bart Van Assche
Fix the following classes of errors reported by gcc 12: * ${variable} may be used uninitialized. * ${variable} is set but not used. * argument 2 is null but the corresponding size argument 3 value is 1 [-Werror=nonnull] Signed-off-by: Bart Van Assche <>
2022-06-02configure: check nvme uring command supportAnkit Kumar
Modify configure to check availability of nvme_uring_cmd, but only when the target OS is Linux. This way in the follow up patch we can define the missing structure to prevent compilation errors. Signed-off-by: Ankit Kumar <> Link: Signed-off-by: Jens Axboe <>
2022-05-27configure: refer to zlib1g-dev package for zlib supportVincent Fu
Recent Debian-based distributions provide zlib support in the zlib1g-dev package. Signed-off-by: Vincent Fu <> Link: Signed-off-by: Jens Axboe <>
2022-05-12engines/xnvme: add xnvme engineAnkit Kumar
This patch introduces a new fio engine to work with xNVMe >= 0.2.0. xNVMe provides a user space library (libxnvme) to work with NVMe devices. The NVMe driver being used by libxnvme is re-targetable and can be any one of the GNU/Linux Kernel NVMe driver via libaio, IOCTLs, io_uring, the SPDK NVMe driver, or your own custom NVMe driver. For more info visit Co-Authored-By: Ankit Kumar <> Co-Authored-By: Simon A. F. Lund <> Co-Authored-By: Mads Ynddal <> Co-Authored-By: Michael Bang <> Co-Authored-By: Karl Bonde Torp <> Co-Authored-By: Gurmeet Singh <> Co-Authored-By: Pierre Labat <> Link: Signed-off-by: Jens Axboe <>
2022-03-10Merge branch 'improvement/enable-asan' of Axboe
* 'improvement/enable-asan' of ASAN enabling when configuring Signed-off-by: Jens Axboe <>
2022-03-10ASAN enabling when configuringDenis Pronin
introduced opportunity for a user to enable ASAN for the compiler when calling 'configure' script using '--enable-asan' option Signed-off-by: Denis Pronin <>
2022-03-10configure script refactoringDenis Pronin
tabs are replaced by whitespaces in help page Signed-off-by: Denis Pronin <>
2022-03-08- fixed typo in configure scriptDenis Pronin
Signed-off-by: Denis Pronin <>
2022-02-18Merge branch 'rpma-update-RPMA-engines-with-new-librpma-completions-API' of ↵Jens Axboe * 'rpma-update-RPMA-engines-with-new-librpma-completions-API' of rpma: update RPMA engines with new librpma completions API rpma: RPMA engines require librpma>=v0.11.0 with rpma_cq_get_wc()
2022-02-18rpma: RPMA engines require librpma>=v0.11.0 with rpma_cq_get_wc()Lukasz Dorau
Signed-off-by: Lukasz Dorau <>
2022-02-17Correct F_FULLSYNC -> F_FULLFSYNCJens Axboe
Apparently used a mix of the two, inconsistently. Fixes: a04e0665cb5d ("Use fcntl(..., F_FULLSYNC) if available") Signed-off-by: Jens Axboe <>
2022-02-17Use fcntl(..., F_FULLSYNC) if availableJens Axboe
Some operating systems don't perform a data integrity flush when fsync() is done, but provide fcntl(fd, F_FULLSYNC) to provide that kind of guarantee. To ensure that comparisons between operating systems is fair, use fcntl() to do a proper sync if available. Signed-off-by: Jens Axboe <>
2022-01-25rpma: RPMA engine requires librpma>=v0.10.0 with rpma_mr_advise()Lukasz Dorau
Signed-off-by: Lukasz Dorau <>
2021-06-09configure: silence "pkg-config: not found"Tomohiro Kusumi
Do what check_min_lib_version() does to not print the error message when pkg-config doesn't exist. -- DAOS File System (dfs) Engine no ./configure: pkg-config: not found NFS engine no Signed-off-by: Tomohiro Kusumi <>
2021-05-18Merge branch 'taras/nfs-upstream' of Axboe
* 'taras/nfs-upstream' of clean up nfs example skip skeleton comments single line bodies C-style comments NFS configure fixes NFS engine
2021-05-06configure: fix check_min_lib_version() evalStefan Hajnoczi
The following shell statement: if eval "echo \$$_feature" = "yes" ; then executes: echo $... = "yes" It does not actually compare the variable named by $_feature to the string "yes". Add the missing "test" call so the comparison happens as intended and wrap the eval so it doesn't include the = "yes". Fixes: 3e48f7c9de61 ("configure: fix syntax error with NetBSD") Cc: Dmitry Fomichev <> Signed-off-by: Stefan Hajnoczi <> Signed-off-by: Jens Axboe <>
2021-04-20NFS configure fixesTaras Glek
2021-04-12NFS engineTaras Glek
2021-03-30configure: add test case for pthread_getaffinity_np()Jens Axboe
Signed-off-by: Jens Axboe <>
2021-03-18Merge branch 'add-librpma-engines' of Axboe
* 'add-librpma-engines' of rpma: add librpma_apm_* and librpma_gpspm_* engines
2021-03-17engines/dfs: add DAOS File System (dfs) engineJohann Lombardi
DAOS is a new scale-out open-source object store. See for more information. This patch adds a new fio engine to support the filesystem layer built on top of DAOS called DFS (DAOS File System). It supports asynchronous read/write operations. Signed-off-by: Johann Lombardi <> Co-authored-by: Mohamad Chaarawi <> Co-authored-by: Vishwanath Venkatesan <> Co-authored-by: Ioannis Galanis <>
2021-03-17Disable pthread_condattr_setclock on cygwinJohann Lombardi
Signed-off-by: Johann Lombardi <>
2021-03-13rpma: add librpma_apm_* and librpma_gpspm_* enginesJan Michalski
The Remote Persistent Memory Access (RPMA) Library is a C library created to simplify accessing persistent memory on remote hosts over Remote Direct Memory Access (RDMA). The librpma_apm_client and librpma_apm_server is a pair of engines which allows benchmarking persistent writes achieved via the Appliance Persistency Method (APM; natively supported by the librpma library) and regular reads (a part of the RDMA standard). The librpma_gpspm_client and librpma_gpspm_server is a pair of engines which allows benchmarking persistent writes achieved via the General Purpose Persistency Method (GPSPM; build on top of the librpma API). The librpma library is available here: along with the set of scripts using the newly introduced engines to construct miscellaneous benchmarking scenarios: The full history of the development of the librpma fio engines is available at: Co-Authored-By: Lukasz Dorau <> Co-Authored-By: Tomasz Gromadzki <> Co-Authored-By: Jan Michalski <> Co-Authored-By: Oksana Salyk <>
2021-03-06configure: remove unused CLOCK_MONOTONIC_* symbolsFotis Xenakis
The symbols are not used in the code and the respective probes were removed in commits 187f39063e1b0a7baeda20a9f4f2406327ec0d41 and 69212fc41c0420f8caf272a0cc270194edbddfe7. Signed-off-by: Fotis Xenakis <>
2021-01-27fio: fix detecting libpmemLukasz Dorau
The current test for libpmem in 'configure' fails in the following way: $ gcc test.c -lpmem test.c: In function ‘main’: test.c:6:27: warning: passing argument 2 of ‘pmem_is_pmem’ \ makes integer from pointer \ without a cast [-Wint-conversion] 6 | rc = pmem_is_pmem(NULL, NULL); | ^~~~ | | | void * In file included from test.c:1: /usr/include/libpmem.h:92:43: note: expected ‘size_t’ \ {aka ‘long unsigned int’} but argument \ is of type ‘void *’ 92 | int pmem_is_pmem(const void *addr, size_t len); | ~~~~~~~^~~ Fix it.
2021-01-21configure: ESX does not have timerfd supportBrian 'Redbeard' Harrington
Running fio on an ESX host fails due to the lack of support for file descriptor based notifications of timer expiration. This change bypasses patch 696378af added to increase timer accuracy. Signed-off-by: Brian 'Redbeard' Harrington <>
2021-01-12Merge branch 'osx_fix' of Axboe
* 'osx_fix' of configure: fix compilation on recent macOS Xcode versions
2020-12-26configure: fix compilation on recent macOS Xcode versionsSitsofe Wheeler
Back in ccf2d89d39b21bc8c7b497b40be5b82eadb80863 ("configure: try to disable weak linking on OSX") disabling weak symbols was done to prevent depending on features when building on a newer macOS but targeting an older one. Fast-forward to Xcode 11.4 and it turns out Apple have broken this by depending on weak symbols for critical symbols like FD_SET leading to compilation errors like the following ld: weak import of symbol '___darwin_check_fd_set_overflow' not supported because of option: -no_weak_imports for architecture x86_64 Other people/projects have been hit by this issue: - - but Apple have kept this behaviour into XCode 12 so we should adapt. - Introduce the concept of configure only CFLAGS - Switch to using -Werror=partial-availability with the above - Stop logging a message about disabling weak linking The above should avoid finding features the target platform doesn't have while allowing weak linking. The name CONFIGURE_CFLAGS is used to remain similar to QEMU's configure. Fingers crossed this approach stays supported by Apple... Fixes Signed-off-by: Sitsofe Wheeler <>
2020-12-26windows: drop XP supportSitsofe Wheeler
Windows 2003 has been EOL since 2015 and Windows XP has been EOL since 2014. Technically fio hasn't been properly targetting XP anyway - (see 16d40a15783f9181d64082fc00a970dff485798f 'configure: be explicit about "XP" Windows API version'). - Strip out support for XP and change the documentation to no longer mention it - Stop targetting XP in the CI 32 bit build Next stop, Windows 7... Signed-off-by: Sitsofe Wheeler <>
2020-12-05ioengine: Add libcufile I/O engineBrian T. Smith
The libcufile I/O engine uses NVIDIA GPUDirect Storage (GDS) cuFile API to perform synchronous I/O directly against GPU buffers via nvidia-fs and a GDS-supported filesystem. 'configure --enable-libcufile' enables the libcufile engine. CFLAGS must specify the location of CUDA and cuFile headers. e.g. CFLAGS="-I/usr/local/cuda/include -I/usr/local/cuda/lib64" LDFLAGS must specify the location of CUDA and cuFile libraries. e.g. LDFLAGS="-L/usr/local/cuda/lib64" The paths used in CFLAGS and LDFLAGS depend upon the build host's CUDA installation. libcufile adds the following optons: gpu_dev_ids, cuda_io Usage is documented in HOWTO, fio.1, examples/libcufile-cufile.fio and examples/libcufile-posix.fio. Note that enabling verify when cuda_io=cufile necessitates cudaMemcpy() to populate the GPU buffer on a write and populate the CPU buffer on a read. The primary goal of GDS is to not copy data between CPU and GPU buffers. Signed-off-by: Brian T. Smith <>
2020-11-09configure: remove libaio-uring remnantJens Axboe
This was missed in the previous patch. Fixes: d4946e79e833 ("Remove the "libaio over io_uring" mode") Signed-off-by: Jens Axboe <>
2020-11-09Remove the "libaio over io_uring" modeJens Axboe
Not going to maintain this mode in liburing, so just get rid of it. It's also caused some confusion where users think they need this enabled to run io_uring, which isn't the case. Signed-off-by: Jens Axboe <>
2020-09-25helper_thread: Increase timer accuracyBart Van Assche
The helper_thread uses select() to wait for the next event. select() rounds up its timeout argument to 1 / HZ. Increase timer accuracy by using a high-res timer if possible. This patch has been tested by running the following fio command and by verifying that the next_log and msec_to_next_event were always above 100 ms: ./fio --debug=helperthread --bandwidth-log --write_bw_log=log --log_avg_msec=1000 --ioengine=null --name=null --size=1G --rw=randwrite --loops=999999 --runtime=60 Signed-off-by: Bart Van Assche <>
2020-09-20gettime: Introduce fio_get_mono_time()Bart Van Assche
Introduce a new function for querying the monotonic clock, something that is necessary in every context where relative time is measured and where wall clock time jumps should have no effect. Remove fill_clock_gettime() since the only contexts where CLOCK_MONOTONIC_RAW are used are get_cycles_per_msec() and --clocksource=clock_gettime. I think both contexts should use CLOCK_MONOTONIC instead of its raw variant such that the values read from the clock are frequency adjusted (a computer clock crystal can deviate up to 500 ppm from its nominal frequency). This patch improves accuracy of the helper_thread code on Darwin. Darwin supports CLOCK_MONOTONIC but not pthread_condattr_setclock(). In other words, this patch causes the helper thread code to switch from the real-time clock to the monotonic clock on Darwin. Signed-off-by: Bart Van Assche <>