History log of /external/fio/ioengines.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
046395d7ab181288d14737c1d0041e98328f473f 09-Apr-2014 Jens Axboe <axboe@fb.com> Add exit_on_io_done option to the CPU IO engine

The CPU IO engine is most often used to saturate the system,
while running an IO load on it. As such, it's useful to have
CPU engine threads exit automatically, when IO has completed.
Add exit_on_io_done as a CPU IO engine option for that purpose.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/ioengines.c
a8075704d3392fede7bd7cfa394616fa0eed7ae0 13-Feb-2014 Daniel Gollub <daniel.gollub@t-online.de> Introduce get_ioengine for external engines

This makes life easier for plugins written in C++
since they do not need to deal with struct initilization issues
with the ioengine_ops symbol.

With g++ a non-static ioengine_ops in global scope like this:

struct ioengine_ops ioengine = {
.name = "null",
.version = FIO_IOOPS_VERSION,
.queue = fio_null_queue,
.commit = fio_null_commit,
};

Results in:

cpp_null2.cc: At global scope:
cpp_null2.cc:112:1: error: C99 designator ‘name’ outside aggregate initializer
cpp_null2.cc:112:1: sorry, unimplemented: non-trivial designated initializers not supported
cpp_null2.cc:112:1: sorry, unimplemented: non-trivial designated initializers not supported
cpp_null2.cc:112:1: sorry, unimplemented: non-trivial designated initializers not supported
cpp_null2.cc:112:1: sorry, unimplemented: non-trivial designated initializers not supported
$

Example get_iongine() symbol usage:

---8<---
extern "C" {
void get_ioengine(struct ioengine_ops **ioengine_ptr) {
struct ioengine_ops *ioengine;
*ioengine_ptr = (struct ioengine_ops *) malloc(sizeof(struct ioengine_ops));
ioengine = *ioengine_ptr;

strcpy(ioengine->name, "cpp_null");
ioengine->version = FIO_IOOPS_VERSION;
ioengine->queue = fio_null_queue;
ioengine->commit = fio_null_commit;
ioengine->getevents = fio_null_getevents;
ioengine->event = fio_null_event;
ioengine->init = fio_null_init;
ioengine->cleanup = fio_null_cleanup;
ioengine->open_file = fio_null_open;
ioengine->flags = FIO_DISKLESSIO;
}
}
--->8---

Signed-off-by: Daniel Gollub <d.gollub@telekom.de>

Moved get_ioengine_t typedef to ioengine.h.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/ioengines.c
39a43d34f168d1921819f0a1f9b2f9800e68aaa1 17-Apr-2013 Jens Axboe <axboe@kernel.dk> Propagate io engine error back to 'td', if not already done

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
3fd9efbc3e986697c68975f5ee629040b35e8cd0 11-Apr-2013 Jens Axboe <axboe@kernel.dk> ioengine: import whitespace changes

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
cba5243b2e61fb7215706bc6901ed1af0e4666a4 21-Mar-2013 Jens Axboe <axboe@kernel.dk> Only attempt file unlock if we use locking

Fixes a segfault on exit, if file locking isn't used.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
bcd5abfa9f230bbe4365dad1289fdea1f5509f74 23-Jan-2013 Jens Axboe <axboe@kernel.dk> Make experimental_verify=1 handle all cases properly

- Don't track written bytes, just replay the workload by resetting
all the random generators. This should work for any mixture of IO.

- Handle trims for verify.

- Ensure that rwmix is replayed properly for verify.

- Fixup logging for replay.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
33c48814e08cf961801bf37f759da2748eb3431b 21-Jan-2013 Jens Axboe <axboe@kernel.dk> Re-seed random generator when a file is reset

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
67bf982340d95ca98098ea050b54b4c7adb116c0 10-Jan-2013 Jens Axboe <axboe@kernel.dk> Add configure script

Get rid of all the fragile guessing and checking of features,
and roll a configure script instead.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
0abea0b7428f930d423640feb4472218b83b8eea 19-Sep-2012 Dmitry Monakhov <dmonakhov@openvz.org> ioengine: allow several external ioengines

Currently only one external ioengine can be exported because
it use hardcoded 'ioengine' symbol, but if we allow external
modules to have ops symbol similar to it's name then several
extrnal engines become possible.

NOTE: Old linking layout preserved

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
6eaf09d6e9ca1f8accb057cdb18620b7e53ae33f 14-Sep-2012 Shaohua Li <shli@fusionio.com> Add support for trim as a workload type

This only works on Linux so far, and it's always sync given what
the interface to the kernel looks like. Also restricted to pure
block devices.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
a05d62b28f18e37256f2698106169b1177708cc1 15-Mar-2012 Yufei Ren <renyufei83@gmail.com> rdma engine graceful teardown

For rdma ioengine's one side operation, RDMA_WRITE or RDMA_READ,
server side gets a message from client side that the task is finished.
In previous version, the server simply exit() in td_io_commit() which
causes segmentation fault in thread mode or process hanging in process
mode. This patch achieves graceful tear down by setting up `td->done`
as UDP engine did.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
214ac7e009897f8f82ab9e21aff9bc86d33bb470 15-Mar-2012 Dan Ehrenberg <dehrenberg@google.com> New offset_increment option

This patch adds a new option to fio job files. It is described
in the HOWTO as follows:

offset_increment=int If this is provided, then the real offset becomes
the offset + offset_increment * thread_number, where the
thread number is a counter that starts at 0 and is incremented
for each job. This option is useful if there are several jobs
which are intended to operate on a file in parallel in disjoint
segments, with even spacing between the starting points.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
422f9e4b57549ce1e163b9c1de71932d9ea24de4 31-Jan-2012 Ryan Marchand <rmarchan@amazon.com> Fix thread hang when using async engines (libaio,etc.) when too low of a iops rate is specified.

Rate limiting logic was using thread_data->cur_depth to decide the
min_evts number to ask for during its "flush" prior to sleeping.
td->cur_depth, however, does not properly track in-flight IOs submitted
to the async engines. Added field to thread_data structure and use
that, instead, to track IOs currently in flight.

Signed-off-by: Ryan Marchand <rmarchan@amazon.com>
Signed-off-by: Steven Noonan <snoonan@amazon.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
de890a1e48d40238dac69f302708dde8719de240 09-Nov-2011 Steven Lang <tirea@google.com> Private parameters for ioengines

Here is the polished version of the engine private options patch. As
discussed, the global section only ever tracks the private options for
the globally defined ioengine. For command line parameters, the
ioengine must be selected before any private options are used. (IE
--ioengine=libaio --userspace_reap will work, but --userspace_reap
--ioengine=libaio will not.)

The userspace_reap option from libaio has been moved over to this new
option method, usage should be identical to before.
The net ioengine has been modified to use parameters, with hostname,
port, protocol and listen defined as ioengine private parameters. The
old style of hostname=host,port,protocol no longer works, so usage
will need to be updated. (It will spit out an error that should be
clear enough that it changed if this is tried.) Also, with the new
way for specifying parameters, the net IO engine now allows data to
flow in either direction on TCP connections, regardless of which end
initiates the connection.

There's also a new command line argument --enghelp which can be used
to get help on ioengine private parameters, similar to --cmdhelp.
With no argument, it lists all built-in ioengine. The argument is an
ioengine name (Or path to .so) and optionally a comma followed by a
command name, which behaves identically to --cmdhelp.

For ioengine authorship, if options are supplied, both the options
structure and the size of the storage needed must be supplied, and the
storage must be large enough to hold a pointer to struct thread_data;
that is because the options callback doesn't explicitly have a pointer
to the thread data (Normally it relies on the fact that the options
struct is the start of the thread data), so the offset 0 of the struct
must point to the thread data, and is filled in automatically. (This
also neatly provides a guarantee that offset 0 is reserved in the
options data, so it can be safely used as a test of undefined.)

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/ioengines.c
7c973896f9e97f7b551bf4881fc0338b748f308b 22-Jan-2011 Jens Axboe <jaxboe@fusionio.com> Ensure that we exit with non-zero status on IO engine load failure

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
ecc314ba7c5f02b7e90ac1dfbce1a74cd4e6d6fe 04-Jan-2011 Bruce Cran <bruce@cran.org.uk> FIO Windows update

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
78e51c7279a93d3f6200d58a72a813c3ba852c2e 23-Nov-2010 Jens Axboe <jaxboe@fusionio.com> solaris: log error for failure to enable direct IO

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
c6404a44d139fb494202f9d968f7affe8c3d986f 24-Sep-2010 Jens Axboe <jaxboe@fusionio.com> Don't add the file offset twice for trim

We added it when storing the io_piece, don't add it again
when calling trim.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
0d29de831183dfd049c97a03008d425ce21e2fa4 01-Sep-2010 Jens Axboe <jaxboe@fusionio.com> Add verify trim support

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
ff58fcede39d16a2c642897cbe5a7f28b2da1950 25-Aug-2010 Jens Axboe <jaxboe@fusionio.com> Add support for replaying blktrace trim/discard

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
a5f3027cb0495dfe217b2626d248fcc054e7e878 20-Jul-2010 Jens Axboe <jaxboe@fusionio.com> Initial commit for TRIM/DISCARD support

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/ioengines.c
7c639b1495d2776afbf66f91accff1e6000aa8f0 19-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Fix bad sign on td_verror()

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
f3e11d0575df5b93cd09f8658964e1fb5d38a774 18-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Catch error on ->commit and ->get_events

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
cb849a795d2bfd99efdd66f5a3e475c9fb3edd86 09-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Assign io_u->error directly in do_io_u_sync()

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
0a28ecda80a78c9d70ae38ced58f3a2fa9c9529d 09-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Abstract out generic sync helper

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
3843deb322eb7b54d2d19d7b1ce19c5dc44d57ff 09-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Make sure we handle multiple arguments to sync_file_range

We need to be able to OR the values.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
44f29692cfba246981bb3c1b894333a6d2209f51 09-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Initial suppor for sync_file_range()

This revs the ioengine to 11, as we now have another data direction.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
cb21168269d746d80d82f28ed4db65c2750a8fd7 03-Jul-2009 Jens Axboe <jens.axboe@oracle.com> Add warning about potentially missing O_DIRECT support or bad alignment

If the first O_DIRECT fails, then it's likely because:

1) The file system does not support O_DIRECT, or
2) The user set iomem_align to an unsupported value.

Let the user know, otherwise they only see EINVAL and may not realize
why things aren't working.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
5f9099ea8adf423d0db01274ef0d7e65629c0e1c 16-Jun-2009 Jens Axboe <jens.axboe@oracle.com> Add support for fdatasync()

Adds a new option, fdatasync=. It's identical to the fsync= option,
but uses fdatasync() instead.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
54c00a8e27c0b6842fa73016d74087a9fabc925d 11-Jun-2009 Jens Axboe <jens.axboe@oracle.com> Remove a reference check

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
22a57ba81de2c3f458797e9158da760c9e0ea435 09-Jun-2009 Jens Axboe <jens.axboe@oracle.com> Fix problem with too many opened files

If using raw block devices, we would leak the fd from the bdev_size()
function. Also add some debug triggers to catch this in the future.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
7c9b1bce094d58c374b086bbb780c08265623ea4 03-Jun-2009 Jens Axboe <jens.axboe@oracle.com> Split off diskutil include

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
d6aed795f2e3e403828abf60874dd2d6e8342a1b 03-Jun-2009 Jens Axboe <jens.axboe@oracle.com> Clean up file flags

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
c97bd0fa0f68d924f4e6f3c480f380c4ca20b872 27-May-2009 Jens Axboe <jens.axboe@oracle.com> Increase accuracy of disk utility percentage

If a job file contains more than one job that works on separate
disks, then the job that finishes first will get more idle time
accounted to it.

Fix this by only doing disk util stats when we have files open
on that device.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
df9c26b10275a631e83e7cc92d5f7384998b2c49 05-Mar-2009 Jens Axboe <jens.axboe@oracle.com> Avoid opening files until they are used

Fio still opens and creates all files, just to check the size of them. Add
a specialized IO engine op for getting the size of a file and use that
instead.

This also cleans a lot of things up. Note that the IO engine version is now
bumped to 10, meaning that external engines will have to separate the
file open from the size checking.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
12d9d841526ad75a67bb43a90edeefd05f85f11e 16-Oct-2008 Jens Axboe <jens.axboe@oracle.com> Issue time fixup for guasi/libaio

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
9520ebb9f4dd88d086e313ae97e37ebb6d4f240b 16-Oct-2008 Jens Axboe <jens.axboe@oracle.com> Add options for disabling slat/clat/bw measurements

Useful for cutting down on the number of gettimeofday calls in
situations where that does impact performance. This is mostly for
really high IOPS rates.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
62977e09a378a713b31d64c63e15adcf9f6f9d9d 16-Oct-2008 Jens Axboe <jens.axboe@oracle.com> Kill io_u timeout handling

It has never been enabled, get rid of it.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
d0c153284c1e6505e711c71e6412e6fef02853b8 16-Oct-2008 Jens Axboe <jens.axboe@oracle.com> Only memcpy last issue time when using iolog replay

Part of a series that'll allow switching off various time measurements
to avoid impacting system performance too much.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
4950421a7e379ba0ca642390ae4ae7b68e92a42f 05-Jun-2008 Jens Axboe <jens.axboe@oracle.com> Add iodepth_batch_complete control

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
e116f2b90f110334e77741227ad4e4600302c718 04-Jun-2008 Jens Axboe <jens.axboe@oracle.com> Add directio support to Solaris

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
d5707a3565e958af566247e2c0acf09e031d8921 04-Jun-2008 Jens Axboe <jens.axboe@oracle.com> We need to grab and mark the file open before jumping to an error path

The error path will close the file.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
01743ee1718e7ec4b16ae3e53c8f64900c6052cc 02-Jun-2008 Jens Axboe <jens.axboe@oracle.com> Rename list_* function and file to flist_ to avoid conflict with FreeBSD

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
de605666880852ba9d1a0469723126b09782c520 31-May-2008 Jens Axboe <jens.axboe@oracle.com> ffz() takes ints, so change the file_map to being int based

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
2992b059b8f54ac91e723a8bde629b4d8fed513e 30-May-2008 Jens Axboe <jens.axboe@oracle.com> close_ioengine() clears ->data after calling engine cleanup

Then we can remove that bit from io engines.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
838bc709279964bdcc64070d4eb2777a0f79bcbb 22-May-2008 Jens Axboe <jens.axboe@oracle.com> Add logging for queue submit and complet counts

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
009bd847b5aeaca78e76de3a7066fe7d507a735f 15-May-2008 Jens Axboe <jens.axboe@oracle.com> Fix bad interaction with file open/close and queuing

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
d8005759746a2cb5c8269201911b1997aa714e80 15-May-2008 Jens Axboe <jens.axboe@oracle.com> Improve iodepth logging

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
3bec7ae05cbec8823943a9aca79871c99709ed5f 14-May-2008 Jens Axboe <jens.axboe@oracle.com> Allow marking of queue depth for more than 1 io_u at the time

Same code as before, just prepared for it.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
5ec10eaad3b09875b91e19a20bbdfa06f2117562 06-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Style fixups

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
4d4e80f2b4260f2c8b37a8612ce655502a799f7a 04-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Revamp file locking

Get rid of the semaphore implementation, no need to carry both.
Add different locking modes (exclusive and readwrite) to enable
a wider range of testing. Also combine lockfile and lockfile_batch,
the latter is now a postfix option to the former.

So to enable readers-excluding-writers locking mode with a lock batch
count of 4, you would write:

lockfile=readwrite:4

instead.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
29c1349f1840c3f60434c9da602074bc8fde4afe 01-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Add the file sharing bits

When you use the same filename for several jobs now, they will share
the same file structure. Enable locking through two new options:

- lockfile. If set, a semaphore is associated with the file and it is
held from ->prep() to ->queue() has done its work.
- lockfile_batch. This controls how many IOs the job gets to do per
semaphore acqusition.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b2bd2bd96a09540b3add0ec74db2cdb1c145ca33 01-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Add file locking hooks

Does nothing so far, but adds locking calls that cover from ->prep()
to after ->queue(). That is the period where we do IO.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
f85ac25a7d5c9d5ba4d5c73363a6a2a461a9b013 01-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Remove the file->last_completed_pos variable

This tracks where we last did IO to this file, however with file
sharing that may break. So just remove this optimization, it'll
cost an extra lseek() for the sync engine but doesn't do much else
outside of that.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
6977bcd0e4ee3faa7ffd8f208e4031bdf906ed88 01-Mar-2008 Jens Axboe <jens.axboe@oracle.com> Update close file handler to return potential error

Filesystems like NFS do return errors on close(), up until now we
have been ignoring them. Fix that. Adjust io_ops engine version
to 9, since this is an API change.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
163f849eea2b0ce443825fa510a1cb311092a234 04-Feb-2008 Jens Axboe <jens.axboe@oracle.com> Improve depth marking

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
2ba1c290d09af6d630d84a58b97b8032f73bc2ce 01-Feb-2008 Jens Axboe <jens.axboe@oracle.com> A bunch of fixes

Really should have been split up, but...

- Check this_io_bytes at the bottom of do_io() so that async engines
have a chance to queue pending IO before deeming this job done.

- dprint() should use log_info(), may not be stdout we want.

- last block bug in get_next_free_block(), if max blocks wasn't a
multiple of the bitmap size.

- Add more debug points.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
ee56ad500f6692381e131cc37299d23fa910a24a 01-Feb-2008 Jens Axboe <jens.axboe@oracle.com> Add --debug for enabling internal dumps on various actions

A little weak currently, when it's fully integrated everywhere in
fio it'll help find fio problems that I can't trigger.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
e7d2e61694c62b90a2fb84c012b4edcc1973d72c 11-Dec-2007 Jens Axboe <jens.axboe@oracle.com> ->getevents() should take unsigned args

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
9de6bebc4cb18e0652a698c86f359fc730f322ad 19-Sep-2007 Zach Brown <zach.brown@oracle.com> Trivial spelling correction

Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
7101d9c24abec4be58a086d85d6d92ec6e6492e9 12-Sep-2007 Jens Axboe <jens.axboe@oracle.com> Full readonly check

Both in core and in engines. To the extent possible, this should catch
even fio errors.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
724e4435c1374e97309b122429ad9291744966c0 11-Sep-2007 Jens Axboe <jens.axboe@oracle.com> Add --readonly option

Suggested by Valerie Henson. It can be used as an extra safety guard
against accidentically turning on a write setting. See README.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
bcdedd0ac6e9413258b608ecb3511867b1a9c534 27-Jul-2007 ljzhang,Yaxin Hu,Jianchao Tang <nonggia@sjtu.edu.cn> [PATCH] Fix fileoffset option

1. The job file we prepared:
----------offset-----------------
[global]
filename=./temp/HOWTO
nrfiles=1
rw=read
size=8K
offset=16k
bs=1k
thread
loops=10
[offset]
description="Option 'offset' doesn't work."
---------------------------------
Besides, we copied the file HOWTO to the directory ./temp/.
So we thought fio would read 8K text sequentially from the point 16K off
the beginning of HOWTO.

we run fio with gdb to see what was read out after the first io, and we
got this:
---------------------------------
... ...
(gdb) bt
from /lib/tls/i686/cmov/libpthread.so.0
(gdb) x/4w io_u->xfer_buf
0x8073f08: 0x6c626154 0x666f2065 0x6e6f6320
0x746e6574
(gdb)
---------------------------------
The above was performed after the first io finished by td_io_queue.
The contents read out as we can see was the ASCII codes for 'Table of
content', which was right from the beginning of file HOWTO.
That means fio read from the beginning but not the point 16K off the
beginning.Is that right?

2. Reason for the problem:
It seems the offset is saved in td->o.start_offset. But it isn't passed
to f->file_offset.And the setting up of f->io_size doesn't refer to
f->file_offset.

--------------------------------------------------------

And now we can check it with gdb:
--------------------------------------------------------
... ...
(gdb) bt
from /lib/tls/i686/cmov/libpthread.so.0
(gdb) x/4w io_u->xfer_buf
0x8073f08: 0x206b636f 0x7420666f 0x66206568
0x20656c69
(gdb)
---------------------------------------------------------
After the first io, I got '0x206b636f 0x7420666f 0x66206568 0x20656c69'
read out.And they represent the string 'ock of the file '.Then i search
the string in HOWTO and got only one line containing the string:
'norandommap Normally fio will cover every block of the file when doing'
I removed the text following that line in HOWTO, and then I found that
the size of the rest text in HOWTO was 16K, which equaled to the offset
we set in job file.
So I think the option 'offset' does work after the changes.

In fact, I am not sure of the fix, but i do hope it can help.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
f29b25a370598d387e539c3dcae126274c6cbf4d 23-Jul-2007 Jens Axboe <jens.axboe@oracle.com> Add version 2 of the iolog format

The old format had some short comings - notably not supporting > 1
file workloads. So add a new format that defines adding/open/close
of files. Fio will still load the older format iologs, but the new
ones wont work on older fio versions.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
a61eddecca21d19f3f4c297400d6c5d93dc29259 15-May-2007 Jens Axboe <jens.axboe@oracle.com> blktrace replay: delay support

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
2dbdab7e8fb0205c471f72effab1b2ae5f19bfac 26-Apr-2007 Jens Axboe <jens.axboe@oracle.com> Fix bug with file references

This could cause premature exit of fio with an error at the end of
the run.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
661598287ecc3b8987f312cf8403936552ce686a 16-Apr-2007 Jens Axboe <jens.axboe@oracle.com> Add support for using '-' as filename for stdin/stdout

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b284075ab5414220496f396dff038003e57e3047 12-Apr-2007 Jens Axboe <jens.axboe@oracle.com> A ->close_file() operation isn't strictly needed

So be sure to check the pointer before calling it.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
317b95d07d4921d2594a1be6e014c9c2d062fe75 02-Apr-2007 Jens Axboe <jens.axboe@oracle.com> Move os/arch/compiler headers into directories

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
413d669320995eaef092c58e67cdb7b500134551 27-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Do the invalidate/advise hinting in td_open_file()

Then we only do it once per file, not twice.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
7bb48f84ac78cac1f90e3e04d0220d90d6a64a6b 27-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Revamp the file creation code

This was long overdue, it's much simpler now and hopefully
less bug prone. Probably a few stray bugs here and there
that needs straightening out, but the end result should
be a lot better.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
eeb121607c2a7f36b0fac17649cb8081d6fd853b 20-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Print clue to reduce queue depth if engine init fails

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
2dc1bbeb58edc85f2829eed6729862c438ea2353 15-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Move thread options into a seperate structure

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
3d7b485f9478ed5d291ec58a16a40781ae3ab4ae 13-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Check for open files on io operations

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
0ad920e7f85db1fdc26649be6bc7e584e8c7fdc9 13-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Add file reference counting

We must not close a file, while io is in progress to it. That
will make the queuing engines barf.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
f11bd94d50d5995a64682f74b5f0f7509bf2c550 13-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Turn file ->open and ->unlink into flags

We'll need more flags in the next commits, so do this as a
preparatory patch.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b3605062146bce0136918763bb8eb584478ae042 12-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Show IOPS as well as bw numbers

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
ba0fbe1029bae1de08d66a72b6d0b2505c67c438 09-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Turn the CPU burner into a real io engine

This removes the special casing in fio.c for the cpu engine, and
also gets rid of FIO_CPUIO.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
09629a90d5b68b220e3fb98318e2dcd019943eda 09-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Make sure each job loads a private io engine

Threads got it shared, breaks for obvious reasons. Also gets rid
of the free hack in ioengine unload.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
a978ba684deb758465a0ccb18a008797636e8054 08-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Get rid of reopen_files()

Move the full file state clear into td_io_open_file(), so a
reopen is a plain close/open of that file.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
860a3044085c676632f9832a78133cd9847cbe62 08-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Add ->open to struct fio_file

Don't use ->fd == -1 to check for the file being open or not,
an io engine could be non-fd based.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b5af82930ccfd7dda6a1b11794efb452eb76d8dc 08-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Revamp file open/close handling

Some IO engines need special handling for opening and closing
files, and this has complicated the fio filesetup.c file. Instead
have the io engine provide hooks for file open/close. This also
greatly cleans up the flags (we can get rid of SELFOPEN and MMAPIO)
and moves private knowledge into the engines where it belongs.

This potentially destabilizes fio somewhat, so testing is needed.
The new openfiles option that is introduced with this change isn't
verified working yet, hence it isn't documented.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
117868024939609aebd94fff5afacfd29b2f9a6f 05-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Cleanup requeue handling

Clear ->resid automatically, and get rid of the goto construct.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
bc5b77a8c46aabea554c4a2c8cca37f27f97969a 28-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Duplicate name checks in ioengines.c

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
eb7c8ae27bc301b77490b3586dd5ccab7c95880a 26-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Move the iodepth_batch into td_io_queue() instead

The previous part in do_io() introduced a bug (overwriting ret),
and we really need to do it from other locations as well.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
cb5ab5121ac4fa62e0ca2612b359f19bfdd30f29 26-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Add iodepth_batch setting

This allows controlling how much IO we submit in one go
independent of the iodepth set.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
face81b280ab94ba5d975739578779157c8b54ce 26-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Move ->commit() call to td_io_getevents()

If we need to complete some events (min > 0), make sure we
have committed a pending batch.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
e1161c325f7866bae879e686d1c673ca32ab09ae 22-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Add more context to the error messages

Errors like:

fio: pid=0, err=22/file:filesetup.c:380, error=Invalid argument

do not give a lot of clue as to what is wrong, unless you
have a matching source. So add a context relevant info
message as well.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
19a98c4140020e82652a835faa6e0eac6173fa18 22-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Fix crash on thread exit

If we had multiple threads, we could corrupt the heap by
freeing memory we did not alloc.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
433afcb4fe81e775c15af9d39a6f4db8a53d693a 22-Feb-2007 Jens Axboe <jens.axboe@oracle.com> io_u timeout handling

Further measures to prevent fio getting stuck, even in case of
engine timeout errors.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
0c6e75175bcaf8d05bfa88aa8caa584fbb848b74 22-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Track io_u state (free or in-flight)

That way we can catch proper use by fio, so we don't get stuck
in cleanup_pending_aio() if someone forgot to put_io_u() in an
error path.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b2fdda43cf0699f60e711429c778ff1685e30062 20-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Static error value checking

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
5aeb77df5d75d1065b339c47afbd882a3c04702e 20-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Fix sync engine completion latency

td_io_queue() needs to differentiate between the sync and async
engines wrt setting issue_time.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
7e77dd026d85253936aef432ba8f3e89b96b805c 20-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Improve submission latency calculation

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
755200a326a33e5e19b16dfd5e013dd98bcf1916 19-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Add support for queuing > 1 command at the time

For the async engines, we currently do queuing by issuing one
command at the the time. Improve this by adding a ->commit()
hook to complement the ->queue() hook. When ->queue() returns
FIO_Q_BUSY, call ->commit() to actually send off the io to the
kernel.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
36167d82e5f49dee91c6d2cd426068edee90e36f 18-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Change IO engine queuing

Instead of always pretending to be async, let the IO engines
return FIO_Q_COMPLETED or FIO_Q_QUEUED to signal async or
sync completions regardless of their nature. This cleans up
the queuing model quite a bit.

Also fixed a verification error spotted while doing this
transformation.

The main intent of this is to allow queuing more than 1 piece
of IO at the time, that will come in a later changeset.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
429ca0735f71961ffe52c5ac102b0a14ee1b2c4c 14-Feb-2007 Jens Axboe <jens.axboe@oracle.com> [PATCH] Defer engine ops verification check

Just register the engine to avoid complicating the code, but
don't allow it to be loaded.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
02bcaa8c31feb93c61b701d143a7eea3efd2124d 24-Nov-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Time and seek optimizations

We did too many gettimeofday() calls, this patch cuts the number by
40%. Use clock_gettime() MONOTONIC instead, it is faster on my system
at least.

This patch also optimizes calling lseek() only when necessary for the
sync io engine.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
da51c0505c753f64ad5f65808377b8f67b445828 07-Nov-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Add skeleton external io engine

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
5f350952eff89948bfbf1eb6ac4d3d08a9109581 07-Nov-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Link in known io engines

No real point in using dlopen() to find engines we know about. We still
support loading external modules, just give the name as the full path
to such a file.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
0bbab0e789d4d8438d63327da052d64b45f0596a 02-Nov-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] String copy limiting fixes

Avoid overflows when we can.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b46928282e0a890f49250e79b81af773a2b7108f 27-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Add full command line parameter support

You may now give full job options on the command line. Makes it easier
to script fio or for one-off runs, as you don't have to write a job file
and run that.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
858a3d476060cfb1ea5dfbdffd94ed3108f194eb 24-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Move td_io_sync()

It's not an io engine operation anymore, so move it to fio.c, make
it static, and rename it to fio_io_sync().

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
87dc1ab1b4df7b977f60e3d43533a896e2ee665b 24-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Implement file syncing as data direction

Instead of defining a seperate ->sync() operation for the io engine,
reuse the io_u infrastructure for committing and reaping sync
events as well. It's a nice cleanup as well.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
8c16d840377c1e6fb79f479ee60590a2da5b52ee 20-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Sanity check ops on loaded io engine

We require certain handlers to be there, or fio will either
malfunction or crash.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
10ba535a5cbb95b5576e33a6f8af093a6ca3bfd7 20-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Split the io_u io handling out of fio.c

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
84585003d025a38b91749cb0d68f6b5653d1f1a3 19-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Fix a bunch of bugs

- engines/fio-engine-libaio.o needs to link against -laio and fio need not
anymore. This caused funky crashes with libaio io engine.

- Fix a few bugs in the libaio engine.

- Only do sync/cleanup in do_io() if we exit without error.

- ->io_ops may be NULL in reap_threads(), if the job exited.

- Allocate io engine, don't reuse the dlopen() object.

- Overlapping sprintf() in init_disk_util().

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
c1d5725eaad49dbf5b3a05c27b0b3677af69f64c 09-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Don't hardcode ioengine path

Use the prefix in the Makefile, so it can be packaged properly.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b902ceb53977a12062c615ab529ca0c3422e3cff 09-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Remember to check ioops version in loaded module

It could be for an older version of fio, reject failed version.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
d4dbaaa821b9d3dd34ca002d1976d4f924a07a47 09-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Fixup failure to load io engine object logging

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
2866c82d598e30604d8a92723c664ee6ced90fb0 09-Oct-2006 Jens Axboe <jens.axboe@oracle.com> [PATCH] Separate io engines into separate loadable objects

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/ioengines.c
b990b5c06801d6d25e3fcc5415efbbe7bb23341e 14-Sep-2006 Jens Axboe <axboe@kernel.dk> [PATCH] Basic support for a cpu cycle eater job

This will allow you to put some cpu load on the box, while other
threads are doing IO.
/external/fio/ioengines.c
34e95e3b07f44da3bad86e8d5253f4ff71871221 16-Aug-2006 Jens Axboe <axboe@suse.de> [PATCH] libaio returns long, not int
/external/fio/ioengines.c
3b70d7e51e0b672a8b337c57c8faf865c0b7f415 08-Jun-2006 Jens Axboe <axboe@suse.de> [PATCH] When logging to a file, stderr should go both to stderr and file
/external/fio/ioengines.c
eb8bbf48e79a8c6afd3c84e3d64263d10ee45daa 08-Jun-2006 Jens Axboe <axboe@suse.de> [PATCH] Enable output logging to file instead of stdout
/external/fio/ioengines.c
5c4e1dbc4ec6ee963220c5f4e64a04cd6130dc81 07-Jun-2006 Jens Axboe <axboe@suse.de> [PATCH] Final FreeBSD compile fixups

It actually builds now!
/external/fio/ioengines.c
6796209a7e3d39522b0f5599aba277809786335e 07-Jun-2006 Jens Axboe <axboe@suse.de> [PATCH] Shorten the file names, stupid to prefix everything with fio-
/external/fio/ioengines.c