History log of /external/fio/iolog.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
90e390ea777a0effb12a0c35ac9d6ab5eef6dc84 19-Feb-2015 Jens Axboe <axboe@fb.com> Fixup whitespace damage in the two previous commits

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
a8ad8ddc987c2c50c69ec070ed7e7e62500f34a5 19-Feb-2015 Erwan Velu <erwan.velu@enovance.com> iolog: Don't leak memory if fread fails in iolog_file_inflate

If fread fails in iolog_file_inflate(), the current code was closing the
file descriptor and return 1. But it was missing freeing the previously
malloced buffer (buf).

This patch does add a memory free of 'buf' before returning to avoid the
memory leak.
/external/fio/iolog.c
3809413cc043dc68b8c200b6a8b254df32fb8d23 29-Jan-2015 Justin Eno <jeno@micron.com> Allow verification of random overwrites w/ba < bs

When blockalign is less than blocksize, random overwrite
workloads may partially overwrite blocks. This change
evicts partially-overwritten blocks from the iolog tree
so subsequent verification targets only intact blocks.

This change also allows verification with norandommap
and bsrange, though that is left disabled.
Signed-off-by: Justin Eno <jeno@micron.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
f15b9e57fadd1d1c736b711f0737fd1cafeacf87 21-Nov-2014 Jens Axboe <axboe@fb.com> iolog: account for wasted time in ipo stall

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
6d639089b123e49325f30433fb0d3ef67407f880 07-Nov-2014 Jens Axboe <axboe@fb.com> iolog: fix intermittent crash on exit with verify enabled

Commit 9342d5f807795 added flist_first_entry(), but the
conversion io iolog hist list pruning was wrong. Fix it.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
0f7f9a918590b45589224568245f75e2dbff9e14 06-Nov-2014 Jens Axboe <axboe@fb.com> Make fio -Wshadow clean

Found a few issues, actually.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
0cbbc3919c80d969926f499cb6045be3d5cd0305 01-Oct-2014 Jens Axboe <axboe@fb.com> Constify a few more hot paths

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
6a27ed94ab5c2a07f6b98f2bcdce06c56f16e8cd 30-Sep-2014 Jens Axboe <axboe@fb.com> Use calloc() instead of malloc + memset

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
059c406c68fe5a9c26fc9ad4feee73815da2d1fd 17-Sep-2014 Jens Axboe <axboe@fb.com> Fixup data-direction to name translation

We had two of them, and they were both wrong since trim got
introduced. Replace by a single implementation in io_ddir.h,
right where it's defined.

Reported-by: Elliott, Robert <Elliott@hp.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
9187a269bf4539fa4b5b97a9b7439ba408d6b872 19-Aug-2014 Castor Fu <castor@alumni.caltech.edu> Add unlink hook to ioengine API, gluster ioengine

fio would just call unlink even with engines that are not using the
operating systems file namespace... This provides a hook to allow
overriding that, with a default handler, and implements it for the
gluster ioengine.

There are others which it'd probably make sense I'm sure.

Huamin Chen looked over my changes to the gluster code earlier...
>I like this unlink idea, it would be great if you can also make unlink optional (if my coding reading is correct). This looks a great pull request candidate to fio. Please ping Axboe after you are done. He is not actively watching pull requests.

>Please also feel free to augment gluster code and pull me for review if necessary.

-castor

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
5bca6f995dc99edbd901ca50729baee6ea8a9e08 14-Jul-2014 Jens Axboe <axboe@fb.com> blktrace: various bug fixes and improvements

- Use the normal debug logging for notify events, as they are expected
to happen.

- Correct a bug where a workload is considered mixed, even if it is
only reads (note: just cosmetical, no writes were issued by fio).

- Handle trim more appropriately - fio supports it as a separate
'data direction', so handle it as such.

- Fix a bug in the delay accounting, causing blktrace to not replay
correctly. This could cause either too fast replays, or replays
that would delay way too much.

- Consider TRIMs as writes, as far as --readonly being set is
concerned.

- Don't consider < 100 usec delays noise, fio can do this quite
accurately.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
4f3fe6cdbba0fcba681506f930c6f07dc01fe942 09-Jul-2014 Jens Axboe <axboe@fb.com> Add some basic debug output for log compression

Guarded by --debug=compress, like the other debug measures.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
c9a5f3981c3678d53e532296082ba80ded59f74a 09-Jul-2014 Jens Axboe <axboe@fb.com> iolog: run compression work at slightly elevated nice level

Add support for work items to contain a priority, and use this
directly with nice. Run compression at nice 1, to make it slightly
less important than the actual IO jobs.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
b0adca3bfac0c98ac49589216438e0d5c7ddafc0 08-Jul-2014 Jens Axboe <axboe@fb.com> iolog: fix link without zlib

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
1540fa756298c341bb4f8585588968a75f23be18 08-Jul-2014 Jens Axboe <axboe@fb.com> iolog: fix compile error for non-zlib

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
d465064e520664859c73130ee302497266093da7 08-Jul-2014 Jens Axboe <axboe@fb.com> iolog: propagate errors to caller

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
c5971cd144c7b33e8bf2f38ebd296b3276014de7 08-Jul-2014 Jens Axboe <axboe@fb.com> Add some new code comments on the log compress/decompress

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
66cf52d0072967073107b77097d3586935be46d3 04-Jul-2014 Jens Axboe <axboe@fb.com> iolog: fix bug when decompressing chunks with different sequence numbers

We need to re-start on inflate, like we do on deflate. Otherwise
we get stream end when the first chunk is done. Keep track of
this in iolog_file_inflate(), since we know how much we need to
decompress.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
12dbd06d3203840c8ebdc4d0a6135a69c4380949 04-Jul-2014 Jens Axboe <axboe@fb.com> flist: add flist_first_entry()

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
238934ccc7bfd4f3d2ad5315d1cc75c3efe8d7a1 04-Jul-2014 Jens Axboe <axboe@fb.com> iolog: use a define instead of a raw bit mask

Add a comment too, while in there.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
375daaedb829f9bac1909faca29ad5cf318e6bda 04-Jul-2014 Jens Axboe <axboe@fb.com> iolog: get rid of ic->nofree

Push the free out of flush_chunk(), then the caller just does it
instead. Unifies the log write vs compress as well.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
8ef5133b52756df98d099aef54918aca1a7c7c34 04-Jul-2014 Jens Axboe <axboe@fb.com> iolog: get rid of one section of CONFIG_ZLIB ifdef

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
51e73844662fd24d8426a3abc1966e20eee582cb 03-Jul-2014 Jens Axboe <axboe@fb.com> iolog: do stat() after fopen()

Avoid static checker complaining about a potential race here,
ordering doesn't matter to fio.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
aba6b6011ed83db46ffa3f5e0aadedd241327cc0 03-Jul-2014 Jens Axboe <axboe@fb.com> iolog: remove dead code that stored a gzip header

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
65f93caca2ca0dd8d8150831f16854b3a8c3845a 03-Jul-2014 Jens Axboe <axboe@fb.com> Move tp.[ch] to lib/

It's just helper code, not fio core.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
bac4af11424ddeb340968c4ba4fc88df4f5c1ad0 03-Jul-2014 Jens Axboe <axboe@fb.com> Add support for storing compressed logs

If log_store_compressed is set, fio won't decompress for storing
them in a file. Instead, you can use --inflate-log=logfile.fz to
output the contents to stdout.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
38a812d7fa79a673855efb6324c8fc68b92b89c1 03-Jul-2014 Jens Axboe <axboe@fb.com> Add support for runtime log compression

If log_compression=64M is specified, fio will "bite" off chunks of
the IO logs and runtime compress them with zlib. This can greatly
reduce the amount of memory required to do iops/bw/lat logging of
a run, at the cost of using some background CPU for the compression.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
633d825ccf450073e4489ee8ab66a44303b1a0d7 02-Jul-2014 Jens Axboe <axboe@fb.com> log: fix use-after-free

Introduced in commit cb7e0ace739c.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
987c4f49f15092a3793c3375be9116c052b5b364 02-Jul-2014 Jens Axboe <axboe@fb.com> Cleanup logging

If the log knows the filename it is supposed to log to, then we
don't need to have part of that on the init side and the other
part on the flush side. So clean it up so that the caller of
setup_log() provides everything we need. This gets rid of
various ways of ending the log, and opens us up to doing
log flushing mid-run.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
ccefd5fea1de87a83db9c372985b69f4fbbe922c 01-Jul-2014 Jens Axboe <axboe@fb.com> Add option for including byte offset for each log entry

When iops/latency/bw logs are used in the job, we can note the offset
at which the specific data entry took place.

Based on an initial patch from Abutalib Aghayev <agayev@gmail.com>.
Extended by me to:

- Not do this by default, as not to add 8 bytes to each log entry
stored.

- Add support for the client/server protocol.

- Add documentation.

We should bump the server protocol rev again, but that was just done
in the previous commit, so...

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
ecf5369a40f841543f39129fffec5d039fda870f 10-Jun-2014 Jens Axboe <axboe@fb.com> iolog: remember to add bytes to total IO size

This fixes an issue with replay of iologs.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
890b665611751661aac1030603175bb7bbde34bc 07-May-2014 Jens Axboe <axboe@fb.com> verify: fix verification of uncompleted or errored ios

Stoo Davies reports:

------

I'm doing some powerfail recovery testing on a storage array over iSCSI.
Host is RHEL 6.4 kernel 2.6.32-358.el6.x86_64.

With fio 2.1.2 -> 2.1.4 the job file below rides through the disks going
away, and continues I/O after they come back, without reporting any
errors. With fio 2.1.5 -> 2.1.8 when the disks come back fio
immediately reports a meta verification error.

I captured a trace with an finisar analyzer, and can see that after the
disks come back and the host logs back in, a read is issued for an lba
which was never written to. Since I don't see verification errors
outside of the powerfail testing, I suspect fio isn't correctly handling
failed writes during the time the disks are unavailable.

------

The issue is caused by a change between 2.1.4 and 2.1.5 that started
logging IO for verification at issue time, instead of at completion
time. If the IO only partially completes or completes in error, then
we need to adjust the verification unit so that we verify only what
fio actually wrote.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
30b18672f5318b7f6de70da6fdc9577737e7a6e6 11-Apr-2014 Jens Axboe <axboe@fb.com> iolog: check for thread termination in long delays

If we are doing a long delay now, fio won't be able to kill
the thread when you ctrl-c the job. Split the delay into .5s
intervals, and check for signal in between.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
42793d9467cc45d08ced5211c3797bf68a3d24cc 09-Apr-2014 Jens Axboe <axboe@fb.com> iolog: skip max_bs[rw] increment for rw == DDIR_INVAL

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
2e80228232afc9cf90ad06b360a33a05637978f3 03-Apr-2014 Jens Axboe <axboe@fb.com> Use setvbuf() for log writing

Check if we have it - if we do, add a 1MB buffer for the file
output. This further speeds up the log writing.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
ea5409f9347303aeb8478544662184ac4af49d20 03-Apr-2014 Jens Axboe <axboe@fb.com> iolog: invert log_mask bits

Get rid of the all-log-mask.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
905e3d4ff8d01a4402186e1ad1f5f1fbbb6b7ef4 03-Apr-2014 Jens Axboe <axboe@fb.com> Cleanup the parallellized log writing

And move it all to iolog.c, this means we can un-export
some of the log functions, too.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
243bfe190245a10e9d0981bf2a7c722edc4c43d4 02-Apr-2014 Jens Axboe <axboe@fb.com> iolog: don't serialize the writing of all logs

Serialize based on filename, so that independent logs can be
written at the same time. If the logs are big, this can take
a while to flush to disk. It's silly to have all jobs waiting
on each other, when they could write their own logs independently.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
e53cf97beb6c07ea1dedc218058675cc291e9f2a 02-Apr-2014 Erwan Velu <erwan.velu@enovance.com> iolog: Keep full path for logs files

The default behavior of fio was to basename() the log filename
preventing relocating it into another directory.

This patch simply removes the basename() that doesn't provides any real
feature but only limit the usage.

Patch tested with genfio with success while relocating to /tmp.
/external/fio/iolog.c
5903e7b7907854014478b6febfc5645a203ff59e 26-Feb-2014 Jens Axboe <axboe@fb.com> blktrace: load improvements

- Set the state explicitly to SETTING_UP when loading the
traces. This could take a while, so tell the status thread
that we are setting up so it knows how to display us
correctly.

- Fix a bug with multiple devices where we didn't cache the
major/minor properly. This made blktrace spend tons of CPU
cycles looking up /sys.

- Handle multiple devices correctly when adding files.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
bcbfeefa7bce8383cf85fe59ced91f54821dfbd2 20-Feb-2014 Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> fio: add multi directory support

This patch adds support for ':' seperated multiple directories at the
directory config statement in order to achieve an automatic distribution
of job clones (numjob) across directories.

That way people can distribute a load across these directories (usually
mount points of disks) automatically - changing numjob will be
sufficient to get all job clones evenly (optimal if dirs % numjobs = 0,
otherwise as good as possible) distributed at all times.

To avoid confused users old config Files will behave like they always
did, old fio binaries using new config files won't abort but just use
the first specified dir. If one specifies an explcit (non generated)
filename the distribution to many directories is also deactivated.

It also fixes an issue of events seeming out of order like when running
with --debug=file seeing the "..." message meaning "I created the
clones" prior to the last clone activities. Now the clones are called
with index N-1 .. 1, zero being the base thread as before.

Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
f940128526dbe468a1951cce10c2fe5dbd23875f 06-Feb-2014 Jens Axboe <axboe@fb.com> verify: always log IO in the order they are issued

We currently log verify_backlog verifies when they complete,
which means the sequence of verify and issue might be different.

Change this to log in one spot, prior to issue, and track the
completion state of the logged unit instead. This unifies the
handling of verifies.

Signed-off-by: Jens Axboe <axboe@fb.com>
/external/fio/iolog.c
c4b6117b236370b174f3e3d2e299bf8b3733be97 05-Feb-2014 Puthikorn Voravootivat <puthik@chromium.org> Fix rand_seed mismatches in verify phase

In verify phase, the rand_seed generated on replay does not match
the written rand_seed.

Multiple problems are causing this:
1. In verify phase fio does not set io_u->rand_seed to compare with
hdr->rand_seed
2. In randrw scenario, fio log is stored in red-black tree in "sorted by LBA"
order. Thus, it is imposible to replay the written order, or rather
generate the seeds again in the same order.
3. In write phase, the code currently will generate rand_seed, write data
and log rand_seed. When queuedepth > 1, it's possible the writes complete
in a different order than rand_seed was generated. Thus when replaying
the log, the generated rand_seed might not match what was written.
4. verify_backlog option will start verification before all the data has been
written and it make rand_seed replay code broken with current design.

Proposed fixes:
1. Use of existing verify_state to generate verify header.
(and assumes this was the original intention of verify_state). And also
adds code to replay rand_seed in verify phase.
2. If verifysort option is not enabled, store the write log in a list instead
of the red-black tree. Otherwise, don't attempt to verify the rand_seed
in the header.
3. In write phase, generate rand_seed, log rand_seed, write data. I.e. log
IO transactions in the order generated, not completed.
4. Don't verify rand_seed when verify_backlog is enabled.

Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
da0a7bd224bb9331f27bb4b20394dd5c8fa3acb0 17-Sep-2013 Juan Casse <jcasse@chromium.org> Adds check for numberio during verify phase.

Currently, fio checks the block offset number in a block's header during
the verify phase.
We add a check for the io number (numberio) to detect stale blocks. This
check is performed only on workloads that write data, as those workloads
know what numberio was written to each block.
td->io_issues[ddir] = 0; was removed so that numberio does not get reset
at each iteration; we want numberio to keep incrementing to reflect
how many times the same data was written.

Signed-off-by: Juan Casse <jcasse@chromium.org>
Reviewed-by: Grant Grundler <grundler@chromium.org>

Fixed typo.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
f01b34ae759afccf39c1bf47972e45d91448e7bb 21-Nov-2013 Jens Axboe <axboe@kernel.dk> Error out gracefully if we don't find the replay device for log replay

It would segfault before because no files got added to replay
against. Handle this more gracefully and ensure that fio exits
with a non-zero exit status.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
d95b34a61ec3fc305fe53c0132bfe82e2e5fcc04 21-Nov-2013 Jens Axboe <axboe@kernel.dk> blktrace: add support for non-native endian format

The blktrace format is stored in the native endianness of
the machine it is run on. So to reply traces on a machine
with a different endianness, we need to swap the trace
fields. Detect and do this automatically.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
6a5c4d92ce70a05d2fee981b6f133373c0ef62f8 20-Feb-2013 Jens Axboe <axboe@kernel.dk> Merge branch 'master' into gfio

Conflicts:
configure
fio.c
init.c

Signed-off-by: Jens Axboe <axboe@kernel.dk>
033ace1e7965ebf215f6fba2102de5b716ebfede 18-Feb-2013 Nikolaus Jeremic <jeremic@informatik.uni-rostock.de> Fix replay of IO pattern with multiple open files

Nikolaus writes:

I've tried to replay I/Os from a textual iolog file to a couple of files
using fio 2.0.13 on Linux. However, all I/Os were performed to the last
opened file, which is '/mnt/ssd5/rand-write.1.0_1_2' in this example .
My jobfile and iolog files contain the following:

[global]
name=replay_filetraces
description=Replay file traces
ioengine=libaio
iodepth=6
direct=1
continue_on_error=1

[replay]
numjobs=1
read_iolog=file_io_patterns
unlink=0

fio version 2 iolog
/mnt/ssd0/rand-write.1.0_0_0 add
/mnt/ssd1/rand-write.1.0_0_1 add
/mnt/ssd2/rand-write.1.0_0_2 add
/mnt/ssd3/rand-write.1.0_1_0 add
/mnt/ssd4/rand-write.1.0_1_1 add
/mnt/ssd5/rand-write.1.0_1_2 add
/mnt/ssd0/rand-write.1.0_0_0 open
/mnt/ssd1/rand-write.1.0_0_1 open
/mnt/ssd2/rand-write.1.0_0_2 open
/mnt/ssd3/rand-write.1.0_1_0 open
/mnt/ssd4/rand-write.1.0_1_1 open
/mnt/ssd5/rand-write.1.0_1_2 open
/mnt/ssd0/rand-write.1.0_0_0 write 0 65536
/mnt/ssd1/rand-write.1.0_0_1 write 0 65536
/mnt/ssd2/rand-write.1.0_0_2 write 0 65536
/mnt/ssd3/rand-write.1.0_1_0 write 0 65536
/mnt/ssd4/rand-write.1.0_1_1 write 0 65536
/mnt/ssd5/rand-write.1.0_1_2 write 0 65536
/mnt/ssd0/rand-write.1.0_0_0 write 65536 65536
/mnt/ssd1/rand-write.1.0_0_1 write 65536 65536
/mnt/ssd2/rand-write.1.0_0_2 write 65536 65536
/mnt/ssd3/rand-write.1.0_1_0 write 65536 65536
/mnt/ssd4/rand-write.1.0_1_1 write 65536 65536
/mnt/ssd5/rand-write.1.0_1_2 write 65536 65536
/mnt/ssd0/rand-write.1.0_0_0 close
/mnt/ssd1/rand-write.1.0_0_1 close
/mnt/ssd2/rand-write.1.0_0_2 close
/mnt/ssd3/rand-write.1.0_1_0 close
/mnt/ssd4/rand-write.1.0_1_1 close
/mnt/ssd5/rand-write.1.0_1_2 close

I've turned on debugging and added some extra printf in read_iolog2()
within iolog.c.

file 24594 add file /mnt/ssd0/rand-write.1.0_0_0
file 24594 resize file array to 2 files
file 24594 file 0x7fbe03f53090 "/mnt/ssd0/rand-write.1.0_0_0" added at 0
file 24594 add file /mnt/ssd1/rand-write.1.0_0_1
file 24594 file 0x7fbe03f53230 "/mnt/ssd1/rand-write.1.0_0_1" added at 1
file 24594 add file /mnt/ssd2/rand-write.1.0_0_2
file 24594 resize file array to 4 files
file 24594 file 0x7fbe03f533d0 "/mnt/ssd2/rand-write.1.0_0_2" added at 2
file 24594 add file /mnt/ssd3/rand-write.1.0_1_0
file 24594 file 0x7fbe03f53570 "/mnt/ssd3/rand-write.1.0_1_0" added at 3
file 24594 add file /mnt/ssd4/rand-write.1.0_1_1
file 24594 resize file array to 6 files
file 24594 file 0x7fbe03f53710 "/mnt/ssd4/rand-write.1.0_1_1" added at 4
file 24594 add file /mnt/ssd5/rand-write.1.0_1_2
file 24594 file 0x7fbe03f538b0 "/mnt/ssd5/rand-write.1.0_1_2" added at 5
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=0 file_action=1
fname=/mnt/ssd0/rand-write.1.0_0_0 act=open
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=1 file_action=1
fname=/mnt/ssd1/rand-write.1.0_0_1 act=open
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=2 file_action=1
fname=/mnt/ssd2/rand-write.1.0_0_2 act=open
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=3 file_action=1
fname=/mnt/ssd3/rand-write.1.0_1_0 act=open
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=4 file_action=1
fname=/mnt/ssd4/rand-write.1.0_1_1 act=open
io 24594 read_iolog2: Making note of file.
offset=7310584035475809390 bytes=811544671 fileno=5 file_action=1
fname=/mnt/ssd5/rand-write.1.0_1_2 act=open
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd0/rand-write.1.0_0_0 act=write
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd1/rand-write.1.0_0_1 act=write
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd2/rand-write.1.0_0_2 act=write
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd3/rand-write.1.0_1_0 act=write
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd4/rand-write.1.0_1_1 act=write
io 24594 read_iolog2: Making note of file. offset=0 bytes=65536
fileno=5 file_action=1 fname=/mnt/ssd5/rand-write.1.0_1_2 act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd0/rand-write.1.0_0_0
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd1/rand-write.1.0_0_1
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd2/rand-write.1.0_0_2
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd3/rand-write.1.0_1_0
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd4/rand-write.1.0_1_1
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=1 fname=/mnt/ssd5/rand-write.1.0_1_2
act=write
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=0 file_action=2 fname=/mnt/ssd0/rand-write.1.0_0_0
act=close
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=1 file_action=2 fname=/mnt/ssd1/rand-write.1.0_0_1
act=close
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=2 file_action=2 fname=/mnt/ssd2/rand-write.1.0_0_2
act=close
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=3 file_action=2 fname=/mnt/ssd3/rand-write.1.0_1_0
act=close
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=4 file_action=2 fname=/mnt/ssd4/rand-write.1.0_1_1
act=close
io 24594 read_iolog2: Making note of file. offset=65536
bytes=65536 fileno=5 file_action=2 fname=/mnt/ssd5/rand-write.1.0_1_2
act=close

Taking a look to the debugging output shows that on write action the
'fileno' variable is always set to 5 regardless of the file that should
be written. However, for open and close we have a different fileno value
for each file. Taking a look into the source code of read_iolog2()
reveals why: In case of actions 'open' or 'close', 'fileno' is looked up
through 'get_fileno(td, fname)', but for 'write', 'read' and the other 4
argument actions 'fileno' is not looked up. When I add a 'fileno =
get_fileno(td, fname);' at the end of the '(r == 4)' branch, I/Os are
replayed to the designated files.

if (r == 4) {
/*
* Check action first
*/
if (!strcmp(act, "wait"))
rw = DDIR_WAIT;
else if (!strcmp(act, "read"))
rw = DDIR_READ;
else if (!strcmp(act, "write"))
rw = DDIR_WRITE;
else if (!strcmp(act, "sync"))
rw = DDIR_SYNC;
else if (!strcmp(act, "datasync"))
rw = DDIR_DATASYNC;
else if (!strcmp(act, "trim"))
rw = DDIR_TRIM;
else {
log_err("fio: bad iolog file action: %s\n",
act);
continue;
}
} else if (r == 2) {
rw = DDIR_INVAL;
if (!strcmp(act, "add")) {
td->o.nr_files++;
fileno = add_file(td, fname);
file_action = FIO_LOG_ADD_FILE;
continue;
} else if (!strcmp(act, "open")) {
fileno = get_fileno(td, fname);
file_action = FIO_LOG_OPEN_FILE;
} else if (!strcmp(act, "close")) {
fileno = get_fileno(td, fname);
file_action = FIO_LOG_CLOSE_FILE;
} else {
log_err("fio: bad iolog file action: %s\n",
act);
continue;
}
} else {
log_err("bad iolog2: %s", p);
continue;
}

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
95820b6e6c92025df8d89c0bf39b174e53137c41 31-Jan-2013 Jens Axboe <axboe@kernel.dk> Merge branch 'master' into gfio

Conflicts:
Makefile
client.c
configure
fio.c
fio.h
server.c
server.h

Signed-off-by: Jens Axboe <axboe@kernel.dk>
98ffb8f3ecebed9984d1744f142eb8be10c14dbd 30-Jan-2013 Ken Raeburn <raeburn@permabit.com> Fix bugs in [v]snprintf usage

When calling snprintf, supply the full buffer size instead of
one byte less.

When using the returned length from vsnprintf for logging, don't write
more than the actual buffer size (minus one for the trailing \0), in
case the formatted string was truncated.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
61b29c20eb4b1d374636d5325fb56c0fa9a574ad 05-Apr-2012 Jens Axboe <axboe@kernel.dk> Merge branch 'master' into gfio

Conflicts:
fio.c
fio.h

Signed-off-by: Jens Axboe <axboe@kernel.dk>
885ac623a4f154007efa49266bb381bcbc60f1e6 04-Apr-2012 Jens Axboe <axboe@kernel.dk> iolog: remove assert in io_u overlap

This can happen very rarely for time based jobs. Before we
had this as an assert since it was an impossible to hit
condition, but now it can be expected very rarely with
verify and time based jobs.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
3c3ed070502bbfec387ded2c43d5e4559ca24a63 27-Mar-2012 Jens Axboe <axboe@kernel.dk> White space spring cleaning

Lets squash them all, with a bit of tooling help.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
1fae4855d30ae19ef6b681a33821b36c298ab7e1 22-Mar-2012 Jens Axboe <axboe@kernel.dk> Fixes for 32-bit compile

- uint32/64 casting
- Real bug fix in types[] index beyond length.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
f5ed765adadc5dca61efb5fc103fa5cd0310bcec 14-Mar-2012 Jens Axboe <axboe@kernel.dk> server: convert iolog in place instead of copy allocating it

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
1b42725f06f8906b9b99381da3490484f59df28a 14-Mar-2012 Jens Axboe <axboe@kernel.dk> gfio: Add support for sending logs over the network

This is for things like bw log, latency logs, etc. We add
a new depedency, zlib, for this. The logs can be quite big and
the network is not necessarily super fast, so we compress them
using zlib.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
ea51b956a15dd4aee047233be892bb3607f3adbd 14-Mar-2012 Jens Axboe <axboe@kernel.dk> iolog: note type of log

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
d401b24d00244223f04ddeee0c563909ad7f4f31 11-Feb-2012 Jens Axboe <axboe@kernel.dk> Revert "Change iolog overlap assert to a debug dump"

Issued has been fixed, restore assert.

This reverts commit 86f40280e27474c666fea75cc705caeaf94f6346.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
86f40280e27474c666fea75cc705caeaf94f6346 10-Feb-2012 Jens Axboe <axboe@kernel.dk> Change iolog overlap assert to a debug dump

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
b8bc8cba9512c6dce4891fda86de675053605ca2 01-Dec-2011 Jens Axboe <axboe@kernel.dk> Add log_avg_msec option

By default, fio will note an entry in the bw/iops/lat logs for every
IO that is completed. This quickly eats up a lot of disk space
for long running jobs. By setting this option to eg 1000, fio will
average the results logged over 1 second instead. This reduces the
resolution of the log, but makes it more manageable.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c
ac9b9101f1ef57965d6ffd51f143274a1eb665ef 01-Oct-2011 Jens Axboe <axboe@kernel.dk> Fixup some bad file naming

log.c does not match log.h. Rename the iolog stuff to iolog.c
and infolog.c to log.c (so it matches the include).

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/iolog.c