Commits
copyoffload-3.…
Name already in use
Commits on Apr 12, 2023
-
This script tests options related to copy operations. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
This script collects copy performance data over a set of block sizes. Also included is a python script to create a CSV from JSON copy output. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
examples: configuration for copy workloads
Add an example that writes the first half of a file with a known pattern, copies the first half to the second half of the file, and then reads the entire file verifying the expected pattern. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
engines/sync: support copy in psync ioengine
Support copy operations via copy_file_range() in the psync ioengine. Also add an option to emulate copy commands with read and write operations. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
copy: add dest_offset_delta option
Add the dest_offset_delta option that sets the copy destination to be a fixed offset from the beginning of the source range for each copy command. This is intended for use with sequential copy operations. For example, dest_offset_delta=128M will copy blocks 128M forward in the LBA range. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
fio: add check for DDIR_COPY in fio_ro_check
Make sure that we only issue copy operations when rw=[rand]copy was specified. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
copy: implement basic support for copy operations
The source ranges for copy operation uses the existing offset generation algorithm. The data buffer will contain the destination offset. For generating the destination offset added a new function. Each successful copy operation will copy one block of data. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Commits on Apr 10, 2023
-
copy: update options to support dest_offset and rw=[rand]copy
The copy operation requires a new fio option, dest_offset. This specifies the starting destination offset for the copy operation. The existing fio offset option will be the starting source offset. Also update the 'rw' option to accept 'copy' and 'randcopy'. Data to be copied from source range can be random or sequential according to rw=copy or randcopy option. The destination location for the copy operation will be sequential. This patch only adds parsing for these options but does not implement the actual copy workload. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
stats: print stats and eta for copy operation
Update the code that prints live eta and final summary statistics to accommodate copy operations. In the eta per-job status map, use 'q' and 'Q' for running copy jobs since 'C' is already taken for TD_CREATED. To maintain backward compatibility no copy data is included in the terse output. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
options: update per data direction options for copy
Update parsing for blocksize, alignment, percent random, and rate thresholds to support copy operations. These options allow users to specify different values for different data directions and thus need updating to support copy operations. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Commits on Mar 28, 2023
-
ddir: ddir changes for copy operation
Add a new copy data direction and uppdate associated symbols. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Commits on Mar 7, 2023
-
t/zbd: fix minimum write size to sequential write required zones
ZBC and ZAC require that writes to sequential write required zones shall be aligned to physical block size. However, the t/zbd/test-zbd-support script uses logical block size as the minimum write size. When SMR drives have the physical block size larger than the logical block size, writes with the logical block size causes unaligned write command error. To fix it, use correct value as the minimum write size. As for zoned block devices, introduce a helper function min_seq_write_size(), which checks sysfs attributes and returns the correct size. Refer the attribute zone_write_granularity when it is available, which provides the minimum write size regardless of the device type. If the attribute is not available, refer the attribute physical_block_size for SMR devices, and the logical_block_size attribute for other devices. As for SG node device, refer physical block size that zbc_info command reports. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
t/zbd: rename logical_block_size to min_seq_write_size
The test script t/zbd/test-zbd-support assumes that the logical block size is the minimum size unit to write to sequential write required zones, then it uses a variable named 'logical_block_size' to keep the minimum size. The assumption is true for ZNS devices but not for ZBC/ZAC devices. Rename the variable from 'logical_block_size' to 'min_seq_write_size' to not imply the wrong assumption. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
Commits on Mar 3, 2023
-
Merge branch 'For_Each_Td_Private_Scope' of https://github.com/horsha…
…ck-dpreview/fio * 'For_Each_Td_Private_Scope' of https://github.com/horshack-dpreview/fio: Refactor for_each_td() to catch inappropriate td ptr reuse Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
Merge branch 'Fix_calc_thread_status_ramp_time_check' of https://gith…
…ub.com/horshack-dpreview/fio * 'Fix_calc_thread_status_ramp_time_check' of https://github.com/horshack-dpreview/fio: Fix --bandwidth-log segmentation fault when numjobs even multiple of 8
-
Refactor for_each_td() to catch inappropriate td ptr reuse
I recently introduced a bug caused by reusing a struct thread_data *td after the end of a for_each_td() loop construct. Link: axboe#1521 (comment) To prevent others from making this same mistake, this commit refactors for_each_td() so that both the struct thread_data * and the loop index variable are placed inside their own scope for the loop. This will cause any reference to those variables outside the for_each_td() to produce an undeclared identifier error, provided the outer scope doesn't already reuse those same variable names for other code within the routine (which is fine because the scopes are separate). Because C/C++ doesn't let you declare two different variable types within the scope of a for() loop initializer, creating a scope for both struct thread_data * and the loop index required explicitly declaring a scope with a curly brace. This means for_each_td() includes an opening curly brace to create the scope, which means all uses of for_each_td() must now end with an invocation of a new macro named end_for_each() to emit an ending curly brace to match the scope brace created by for_each_td(): for_each_td(td) { while (td->runstate < TD_EXITED) sleep(1); } end_for_each(); The alternative is to end every for_each_td() construct with an inline curly brace, which is off-putting since the implementation of an extra opening curly brace is abstracted in for_each_td(): for_each_td(td) { while (td->runstate < TD_EXITED) sleep(1); }} Most fio logic only declares "struct thread_data *td" and "int i" for use in for_each_td(), which means those declarations will now cause -Wunused-variable warnings since they're not used outside the scope of the refactored for_each_td(). Those declarations have been removed. Implementing this change caught a latent bug in eta.c::calc_thread_status() that accesses the ending value of struct thread_data *td after the end of for_each_td(), now manifesting as a compile error, so working as designed :) Signed-off-by: Adam Horshack (horshack@live.com)
-
Fix --bandwidth-log segmentation fault when numjobs even multiple of 8
Segmentation fault occurs when aggregate bandwidth logging is enabled (--bandwidth-log) and numjobs is an even multiple of 8. Fault occurs because logic is using the terminating value of struct thread_data *td from the most recent for_each_td(). This bug was caught by the refactoring of for_each_td(). Link: axboe#1534 Signed-off-by: Adam Horshack (horshack@live.com)
-
Merge branch 'fiologparser-fix' of https://github.com/patrakov/fio
* 'fiologparser-fix' of https://github.com/patrakov/fio: fix fiologparser.py to work with new logging format
Commits on Feb 28, 2023
-
examples: add fiograph diagram for uring-cmd-fdp.fio
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
fdp: change the order of includes to fix Windows build error
On Windows fio.h includes some definitions needed by file.h. fio.h actually includes file.h already but we can retain the file.h include in fdp.c since it refers to some declarations that were added there. Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
Merge branch 'doc-Clarify_Runtime_Param' of https://github.com/horsha…
…ck-dpreview/fio * 'doc-Clarify_Runtime_Param' of https://github.com/horshack-dpreview/fio: Clarify documentation for runtime parameter
-
Clarify documentation for runtime parameter
I realize this is highly subjective but I think the description of the runtime parameter could be made a bit more precise. I misinterpreted its meaning after reading the doc and only learned of my mistake by trial and error using fio. Either I'm just slow or the description could use just a little more precision :) Signed-off-by: Adam Horshack (horshack@live.com)
-
Revert "ioengines.c:346: td_io_queue: Assertion `res == 0' failed"
This reverts commit d5a4744. The change to rate-submit.c is clearly bogus, as it's referencing 'td' outside of the actual 'td' loop. It's not valid at that point. Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
I don't believe we can have a NULL ->io_ops here, but let's just add an error check and make the static checkers happy as they don't like the non-NULL check and then a later deref in the other branch. Add missing braces while at it. Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
fio: add fdp support for io_uring_cmd nvme engine
Add support for NVMe TP4146 Flexible Data Placemen, allowing placement identifiers in write commands. The user can enabled this with the new "fdp=1" parameter for fio's io_uring_cmd ioengine. By default, the fio jobs will cycle through all the namespace's available placement identifiers for write commands. The user can limit which placement identifiers can be used with additional parameter, "fdp_pli=<list,>", which can be used to separate write intensive jobs from less intensive ones. Setting up your namespace for FDP is outside the scope of 'fio', so this assumes the namespace is already properly configured for the mode. Link: https://lore.kernel.org/fio/CAKi7+wfX-eaUD5pky5cJ824uCzsQ4sPYMZdp3AuCUZOA1TQrYw@mail.gmail.com/T/#m056018eb07229bed00d4e589f9760b2a2aa009fc Based-on-a-patch-by: Ankit Kumar <ankit.kumar@samsung.com> Signed-off-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> [Vincent: fold in sfree fix from Ankit] Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
Merge branch 'Fix_Assert_TdIoQueue_Serialize_Overlap_Offload' of http…
…s://github.com/horshack-dpreview/fio * 'Fix_Assert_TdIoQueue_Serialize_Overlap_Offload' of https://github.com/horshack-dpreview/fio: ioengines.c:346: td_io_queue: Assertion `res == 0' failed Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
Merge branch 'Fix_Bad_Hdr_Rand_Seed_For_Requeued_IO' of https://githu…
…b.com/horshack-dpreview/fio * 'Fix_Bad_Hdr_Rand_Seed_For_Requeued_IO' of https://github.com/horshack-dpreview/fio: Fix "verify bad_hdr rand_seed" for requeued I/Os
-
Merge branch 'master' of https://github.com/Cuelive/fio
* 'master' of https://github.com/Cuelive/fio: blktrace: fix compilation error on the uos system
-
blktrace: fix compilation error on the uos system
When compiling on uos, it fails with an undefined reference to 'major'. Fix this by including the correct header for it. liuyafei <liuyafei@uniontech.com>
Commits on Feb 27, 2023
-
Fix "verify bad_hdr rand_seed" for requeued I/Os
On configurations that can cause I/Os to be internally requeued from FIO_Q_BUSY such as '--iodepth_batch_complete_max', and the workload has verify enabled, the subsequent verification of the data fails with a bad verify rand_seed because the pattern for the I/O is generated twice for the same I/O, causing the seed to become out of sync when the verify is later performed. The seed is generate twice because do_io() handles the I/O twice, first when it originates the I/O and again when it later gets the same I/O back from get_io_u() after it's is pulled from the requeue list, which is where the first submission landed due to the workload reaching '--iodepth_batch_complete_max'. The fix is for do_io() to track when it has generated the verify pattern for an I/O via a new io_u flag 'IO_U_F_PATTERN_DONE', avoiding a second call to populate_verify_io_u() when that flag is detected. Link: axboe#1526 Signed-off-by: Adam Horshack (horshack@live.com)
Commits on Feb 24, 2023
-
Merge branch 'master' of https://github.com/bvanassche/fio
* 'master' of https://github.com/bvanassche/fio: zbd: Make an error message more detailed zbd: Report the zone capacity io_u: Add a debug message in fill_io_u()
Commits on Feb 22, 2023
-
zbd: Make an error message more detailed
If zone data is invalid, report in detail why it is invalid. Signed-off-by: Bart Van Assche <bvanassche@acm.org>
-
The zone capacity is important information. Hence report the zone capacity if ZBD debugging is enabled. Signed-off-by: Bart Van Assche <bvanassche@acm.org>
-
io_u: Add a debug message in fill_io_u()
A debug message is logged before each 'return io_u_eof' statement in fill_io_u() except one. Hence add a debug message in front of that one return statement. Signed-off-by: Bart Van Assche <bvanassche@acm.org>