summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-15Merge branch 'cmd-test-be' of https://github.com/tuan-hoang1/fioJens Axboe
* 'cmd-test-be' of https://github.com/tuan-hoang1/fio: server: fix missing le32_to_cpu conversion when opcode is FIO_NET_CMD_TEXT
2021-07-15server: fix missing le32_to_cpu conversion when opcode is FIO_NET_CMD_TEXTTuan Hoang
Reported-by: Manuel Gotin <manuel.gotin@ibm.com> Signed-off-by: Tuan Hoang <tmhoang@linux.ibm.com>
2021-07-07Makefile: use override directive on engine CFLAGSStefan Hajnoczi
The GNU Make documentation says the following about the override keyword: Subsequent assignments or appends to this variable which are not marked override will be ignored. https://www.gnu.org/software/make/manual/html_node/Override-Directive.html When the override CFLAGS line was moved in commit f4bd2c3d80bc35f76892205a7e50426711e3def3 it broke the engine template, which does not use the override directive. Since the engine template is now evaluated afterwards, the engine CFLAGS are ignored. Add the override keyword to the engine template so that engine CFLAGS are honored again. Note that the CONFIG_DYNAMIC_ENGINES case doesn't need the override directive. It seems that GNU Make assigns CFLAGS even without the override directive in this case: $$($(1)_OBJS): CFLAGS := -fPIC $$($(1)_CFLAGS) $(CFLAGS) Fixes: f4bd2c3d80bc35f76892205a7e50426711e3def3 ("fix dynamic engine build") Cc: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-07-01Merge branch 'dedupe_bugfix' of https://github.com/bardavid/fioJens Axboe
* 'dedupe_bugfix' of https://github.com/bardavid/fio: dedupe: fixing bug with subsequent dedupe buffer generation
2021-07-01dedupe: fixing bug with subsequent dedupe buffer generationBar David
When unique pages are generated onto the write buffer the seed used to generate the page is copied later to the buf_state_prev for future dedupe generation. However, the get_buf_state API returns pointer to the prev seed. Then when the caller uses it to re-generate the buffer it changes the internal seed and advances the PRNG. A subsequent intention to create another dedup might result in generating a unique page instead. Signed-off-by: Bar David <bardavvid@gmail.com>
2021-06-29zbd: ensure that global max open zones limit is respectedNiklas Cassel
Commit 219c662d3b12 ("zbd: introduce per job maximum open zones limit") Introduced a global max open zones limit stored in zbd_info->max_open_zones. This commit also changed checks against td->o.max_open_zones in zbd_open_zone() with checks against zbd_info->max_open_zones. It is obvious that zbd_info->max_open_zones was intended to replace td->o.max_open_zones in all code that is executed after zbd_setup_files(). The commit itself was needed since zbd_info is shared over different jobs, so it is important that the global limit of max open zones is the same, for different jobs targeting the same device. The problem with this commit is that in zbd_convert_to_open_zone(), instead of replacing td->o.max_open_zones with zbd_info->max_open_zones, it incorrectly just removed the references to td->o.max_open_zones. This caused commit 00ca8df5468e ("zbd: Fix max_open_zones checks") (written by another author) to incorrectly re-add the removed td->o.max_open_zones checks in zbd_convert_to_open_zone(). The proper fix here should have been to add checks against zbd_info->max_open_zones instead of td->o.max_open_zones, just like the original author did for zbd_open_zone(). Replace all td->o.max_open_zones uses past zbd_setup_files() with zbd_info->max_open_zones, and force set td->o.max_open_zones to zbd_info->max_open_zones in zbd_setup_files(), so that even if checks are introduced against the wrong limit, fio will still respect the global limit. Fixes: 00ca8df5468e ("zbd: Fix max_open_zones checks") Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-29zbd: allow an unlimited global max open zones limitNiklas Cassel
Commit 219c662d3b12 ("zbd: introduce per job maximum open zones limit") Introduced a global max open zones limit stored in zbd_info->max_open_zones. This commit also removed the following check from zbd_open_zone(): if (!td->o.max_open_zones) return true; Before the commit in question, if td->o.max_open_zones == 0, zbd_open_zone() would not track the zone as open in the zbd_info->open_zones array. After the commit in question, zbd_open_zone() would always track the zone as open in the zbd_info->open_zones array, regardless if a --max_open_zones limit was set or not. Change the initialization of zbd_info->max_open_zones to yet again allow unlimited max open zones. If zbd_info->max_open_zones is unlimited, we do not track the open zones in the zbd_info->open zone array. Not tracking open zones reduces fio overhead for testing the performance of zoned block devices that do not have a limit on the maximum number of open zones. Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-29zbd: create a local zbdi variable for f->zbd_infoNiklas Cassel
Create a local zbdi variable for f->zbd_info for the following functions: zbd_open_zone(), zbd_convert_to_open_zone(), and zbd_adjust_block(). This avoids unnecessary indirections. No functional change intended. Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-29Merge branch 'evelu-fiog' of https://github.com/ErwanAliasr1/fioJens Axboe
* 'evelu-fiog' of https://github.com/ErwanAliasr1/fio: examples: Avoid duplicated items tools: Adding fiograph
2021-06-27examples: Avoid duplicated itemsErwan Velu
Some jobs were defining variable twice, some jobs were defined twice. This commit ensure that examples are items are named only once. Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
2021-06-27tools: Adding fiographErwan Velu
This tool generates graphviz graphs of any fio job file. Reading a fio file can be sometimes tricky when : - you have lots of jobs - jobs override some options - jobs have dependencies Understanding which jobs are running at the same time, which one waits for which is sometimes difficult and could easily lead to mistakes. It's pretty common to find jobs where people think jobs are sequential while some run in parallel. For ease the understanding of the scheduling and what's the configuration status (local + global variables), this tool will use some graphical helpers to enlighten things. The configuration file can be used to adjust the rendering but by default : - jobs are defined in a blue rounded box - jobs running at the same time are inside the same gray background - time & size variables are shown as a self arrow - dependencies between jobs are shown by up->down black arrows - specific engines options are written in blue (top of the job box) - standard options are printed in green (bottom of the job box) - pre/post actions are printed in red (head/tail of the job box) - numjobs is replaced by a 'x' multiplicator on the job name Several output formats can be defined via --format : list can be found here https://graphviz.org/docs/outputs/ if --view option is used, the rendered file will be immediately shown. if --keep is used, the grapvhiz file will be kept. This commit also adds the rendering of the examples jobs. If a newcomer gets into the repository, they can immediately better understand what the jobs do. Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
2021-06-20Merge branch 'pkg_config_1' of https://github.com/kusumi/fioJens Axboe
* 'pkg_config_1' of https://github.com/kusumi/fio: configure: silence "pkg-config: not found"
2021-06-17filehash: ignore hashed file with fd == -1Jens Axboe
This can happen sporadically during setup, and it need not be a failure condition. Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-14t/zbd: update test case 42Niklas Cassel
Update test case 42 to grep for the new string printed by fio when --zonesize=0 is supplied. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-14zbd: change some f->zbd_info conditionals to assertsNiklas Cassel
Unfortunately, generic fio code calls some zbd_* functions unconditionally. These functions will be called regardless if zonemode == ZONE_MODE_NONE, ZONE_MODE_STRIDED or ZONE_MODE_ZBD, and cannot be optimized. However, some functions are only called when zonemode == ZONE_MODE_ZBD. Since f->zbd_info will always be non-NULL for a job with zonemode=zbd, these functions can be optimized to not check if f->zbd_info is set. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-14zbd: remove zbd_zoned_model ZBD_IGNORENiklas Cassel
For a job with zonemode=zbd, we do not want any file to be ignored. Each file's file type in that job should be supported by either zbd.c or the ioengine. If not, we should return an error. This way, ZBD_IGNORE becomes redundant and can be removed. By removing ZBD_IGNORE, we know that all files belonging to a job that has zonemode=zbd set, will either be a zoned block device, or emulate a zoned block device. This means that for jobs that have zonemode=zbd, f->zbd_info will always be non-NULL. This will make the zbd code slightly easier to reason about and to maintain. When removing zbd_zoned_model ZBD_IGNORE, define the new first enum value as 0x1, so that we avoid potential ABI problems with existing binaries. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-14zbd: allow zonemode=zbd with regular files by emulating zonesNiklas Cassel
Currently when using zonemode=zbd and running against a regular file, fio will fail with: fio: file hash not empty on exit Treat regular files just like how we treat regular (non-zoned) block devices: return ZBD_NONE and let zbd.c emulate zones inside the regular file/block device. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-14zbd: disallow pipes for zonemode=zbdNiklas Cassel
zoned block device support in fio cannot handle pipes, so simply reject them and give a clear error message. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-10io_uring: drop redundant IO_MODE_OFFLOAD checkStefan Hajnoczi
check_engine_ops() already returns an error if io_submit_mode is IO_MODE_OFFLOAD and the engine is marked FIO_NO_OFFLOAD. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-08t/zbd: Fix write target zones counting in test case #31Shin'ichiro Kawasaki
The test case #31 in t/zbd/test-zbd-support writes 128KB data to sequential write required zones as the preparation for the following random read test. The data write leaves the target zones in open status. The test case refers the variable 'nz', which has max_open_zones value, to decide how many zones to write the data. However, the end condition of the write target zone loop has a bug. The disk end offset is used as the loop end condition, which does not match the last target zone when number of sequential write required zones divided by nz has remainder. This results in write to more zones than nz=max_open_zones limit and the test case failure. To fix the bug and to simplify the script, avoid the loop and utilize zonemode strided to achieve the same data write pattern. Also specify size and io_size using nz to reliably count the write target zones. Even with the fix above, still the number of open zones may exceed max_open_zones since other test cases executed before the test case 31 may leave open zones on the test target device. To avoid this failure, reset all zones before the data write. The failures were observed with libzbc I/O engine after the commit e8267436fd7a ("engines/libzbc: add support for the get_max_open_zones io op"), which changed the max_open_zones value fio refers. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-08t/zbd: Add ignore_zone_limit option to test with special max_open_zonesShin'ichiro Kawasaki
Recent commit d2f442bc0bd5 ("ioengines: add get_max_open_zones zoned block device operation") modified fio to compare --max_open_zones option value and max_open_zones reported by the device. When the option --max_open_zones is larger than the device limit, fio exits with an error. However, sometimes it is useful to run fio with --max_open_zones larger than the device limit to check performance impact of implicit zone open and close by the zoned block devices. The test script t/zbd/test-zbd-support has an option -o so that users can specify such larger max_open_zones value. After the commit, such test runs fail with the fio error. To avoid the failure, modify the test script to specify another option --ignore_zone_limits to fio command, which was added by the commit 575686bb85fa (zbd: add a new --ignore_zone_limits option). This option is added to fio command only when users specify -o option and special max_open_zones value to the test script. This change does not affect default test conditions. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-06-08t/zbd: Use max_open_zones that fio fetched from deviceShin'ichiro Kawasaki
Recent commit d2f442bc0bd5 ("ioengines: add get_max_open_zones zoned block device operation") modified fio to compare --max_open_zones option value and max_open_zones reported by the device. The device limit is fetched through sysfs or through an ioengine specific implementation. The test script currently try to fetch the max open zones limit using libzbc tools or sg_inq. If either of these fail, default value 128 is supplied. This default value can be too high when the test script is run for certain zoned block devices, and can therefore result in fio error and test case failure. To avoid the failure, modify the default value used in the test script from 128 to 0. With this, --max_open_zones=0 is passed to fio, and it makes fio use the max_open_zones reported by the device. Also add comments to describe why the test script gets max_open_zones with tools. Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
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 <kusumi.tomohiro@gmail.com>
2021-06-03Merge branch 'fix/928' of https://github.com/larsks/fioJens Axboe
* 'fix/928' of https://github.com/larsks/fio: fix fio2gnuplot to work with new logging format
2021-06-03Merge branch 'evelu-test' of https://github.com/ErwanAliasr1/fioJens Axboe
* 'evelu-test' of https://github.com/ErwanAliasr1/fio: Makefile: Avoid using built-in stpcpy during clang build ci: Reporting installed msys2 packages ci: Installing missing toolchain
2021-06-02Makefile: Avoid using built-in stpcpy during clang buildErwan Velu
Since clang 12, during the clang build, noticed by the CI, the linking fails as clang optimize some string functions to stpcpy. LINK fio lld-link: error: undefined symbol: stpcpy >>> referenced by C:\projects\fio\options.c:5305 >>> options.o:(fio_options_parse) Two possible implementations : - Adding stpcpy in fio as the kernel did : https://lore.kernel.org/lkml/20200815002417.1512973-1-ndesaulniers@google.com/T/ - Disable the implicit stpcpy To avoid adding code into fio, the latter option was used. Signed-off-by: Erwan Velu <e.velu@criteo.com>
2021-06-02ci: Reporting installed msys2 packagesErwan Velu
When reproducing a build locally, it's important to be on the same release as the CI. So let's listi the installed packages so we can compare the two builds more easily. Signed-off-by: Erwan Velu <e.velu@criteo.com>
2021-06-02ci: Installing missing toolchainErwan Velu
When trying to rebuild a failed build on a real windows system, the toolchain is missing. Let's add the toolchain here so we can reuse the script locally too. Signed-off-by: Erwan Velu <e.velu@criteo.com>
2021-05-27zbd: add a new --ignore_zone_limits optionNiklas Cassel
In commit d2f442bc0bd5 ("ioengines: add get_max_open_zones zoned block device operation") we added a check that verifies that the specified --max_open_zones value is lower than the max value reported by the device. For ZNS devices there is a max open zones and a max active zones limit. For ZAC/ZBC devices there is only a max open zones limit. On ZAC/ZBC, there is thus no limit on the amount of zones that can be in zone state closed. When doing a write to an empty or closed zone, a ZAC/ZBC drive will close an arbitrary implicit open zone in order to handle the write. The ZNS specification has no requirement on closing a zone in order to handle a write to an empty or closed zone. The drive is free to return an error. Even on ZAC/ZBC, you do not want to exceed the max open zones limit, since it will lead to additional implicit close zone and implicit open zone operations, which may degrade performance. However, it seems that this is sometimes done on purpose, in order to measure the overhead of these additional operations. Therefore, add an option that allows the user to ignore the reported device limits. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-27zbd: add missing client/server support for option max_open_zonesNiklas Cassel
Ensure that we convert the max_open_zones option for client/server. Use __cpu_to_le32()/__le32_to_cpu() rather than cpu_to_le32()/le32_to_cpu(), since max_open_zones is defined as int rather than unsigned int in thread_options.h. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-27Merge branch 'fix-libpmem' of https://github.com/lukaszstolarczuk/fioJens Axboe
* 'fix-libpmem' of https://github.com/lukaszstolarczuk/fio: engines/libpmem: do not call drain on close engines/libpmem: cleanup a little code, comments and example engines/libpmem: set file open/create mode always to RW
2021-05-26Fio 3.27fio-3.27Jens Axboe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-25Merge branch 'master' of https://github.com/DevriesL/fioJens Axboe
* 'master' of https://github.com/DevriesL/fio: android: add support for NDK sharedmem
2021-05-26android: add support for NDK sharedmemDevriesL
Android add support for NDK sharedmem since API level 26 and prohibit the directly use of ashmem since API level 29, so we can use sharedmem if targeting API level is higher than 26. Signed-off-by: DevriesL <therkduan@gmail.com>
2021-05-18Merge branch 'taras/nfs-upstream' of https://github.com/tarasglek/fio-1Jens Axboe
* 'taras/nfs-upstream' of https://github.com/tarasglek/fio-1: clean up nfs example skip skeleton comments single line bodies C-style comments NFS configure fixes NFS engine
2021-05-14Merge branch '2021-05-13/stat-fix-integer-overflow' of ↵Jens Axboe
https://github.com/flx42/fio * '2021-05-13/stat-fix-integer-overflow' of https://github.com/flx42/fio: stat: fix integer overflow in convert_agg_kbytes_percent
2021-05-14engines/libzbc: add support for the get_max_open_zones io opNiklas Cassel
Add support for the new .get_max_open_zones io operation. zbc.c will only ever call this callback for host-managed devices. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-14ioengines: add get_max_open_zones zoned block device operationNiklas Cassel
Define a new IO engine operation to get the maximum number of open zones. Like the existing IO engine operations: .get_zoned_model, .report_zones, and .reset_wp, this new IO engine operation is only valid for zoned block devices. Similarly to the other zbd IO engine operations, also provide a default implementation inside oslib/linux-blkzoned.c that will be used if the ioengine does not override it. The default Linux oslib implementation is implemented similarly to blkzoned_get_zoned_model(), i.e. it will return a successful error code even when the sysfs attribute does not exist. This is because the sysfs max_open_zones attribute was introduced first in Linux v5.9. All error handling is still there, so an ioengine that provides its own implementation will still have its error code respected properly. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-14oslib/linux-blkzoned: move sysfs reading into its own functionNiklas Cassel
Move the sysfs reading into its own function so that it can be reused. This new function will be reused in a following patch. No functional change intended. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-14zbd: only put an upper limit on max open zones onceNiklas Cassel
There is an upper limit that is checked for each td, and for each file, even though a file has a pointer to a zoned_block_device_info that has already been created. Multiple files, from the same or from another td can point to the same zoned_block_device_info. All zoned_block_device_info:s have already been created earlier in the call chain. Simplify this by only checking the upper limit on max open zones when a zoned_block_device_info is created. This way, max_open_zones is handled from a single location, instead of potentially being reassigned from a completely different location. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-13stat: fix integer overflow in convert_agg_kbytes_percentFelix Abecassis
Assuming that "int" is 32-bit, for high bandwidth values (> 21.5 GB/s) the expression "mean * 100" will cause an integer overflow before the conversion to "double" happens. Signed-off-by: Felix Abecassis <fabecassis@nvidia.com>
2021-05-12fix fio2gnuplot to work with new logging formatLars Kellogg-Stedman
The logging format updates documented in 1a953d97 were never propagated to fio2gnuplot, which since then has been failing with a ValueError exception. This commit explicits limits fio2gnuplot to only reading the first 4 columns in the log file. Closes #928
2021-05-11os: define EDQUOT to EIO if the OS doesn't provide itJens Axboe
Fixes: 418f53993b07 ("Make fill_device to stop writing on EDQUOT") Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-11Make fill_device to stop writing on EDQUOTMartin Bukatovic
Option fill_device stops writing when we run out of quota as well. Signed-off-by: Martin Bukatovic <martin.bukatovic@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-10Merge branch 'z_unit_docs' of https://github.com/ahribeng/fioJens Axboe
* 'z_unit_docs' of https://github.com/ahribeng/fio: Add Documentation for z unit
2021-05-10oslib/linux-blkzoned: make sure that we always support zone capacityNiklas Cassel
A common problem is that users upgrade their kernel to support NVMe ZNS devices, however, they still use the kernel uapi headers provided by their distro. This means that even if the kernel will populate the zone capacity fields for each zone in the zone report returned by the ioctl, fio will not know how to interpret that data. This leads to fio writing past the zone capacity, which will lead to I/O errors. It is not trivial for a user to realize that the kernel uapi headers provided by their distro is the reason for these I/O errors. In order to make it easier for these users, provide a copy of the current zoned block device kernel uapi structs. If the kernel uapi headers installed on the system are too old to support zone capacity, use the locally defined structs instead. If the installed headers are new enough to support zone capacity, use the installed headers. This way, fio will always be able to handle zone capacity (if the kernel supports it). At the same time, we will not redefine any structs from the installed headers if they are newer than our locally defined structs. Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-08don't access dlclose'd dynamic ioengine object after closeEric Sandeen
Alexey reported this bug when using dynamically loaded IO engines; a segfault on the line where we set the dlhandle to NULL after the dlclose. I think this is because ops points to the thing we obtained from dlsym: ops = dlsym(dlhandle, engine_lib); and after the final dlclose, the object no longer exists and efforts to set the handle within it will fail for obvious reasons. I'm not sure why I hadn't seen this before. Fixes-RH-Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1956963 Reported-by: Alexey Dobriyan <adobriyan@gmail.com> Fixes: f6931a1 ("fio: move dynamic library handle to io_ops structure") Tested-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-06Add Documentation for z unitGonzalez
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 <dmitry.fomichev@wdc.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
2021-05-05clean up nfs exampleTaras Glek