History log of /external/fio/engines/splice.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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/engines/splice.c
24d23ca76f9be4500270e7074a1dab038e3a4a2b 13-Nov-2012 Jens Axboe <axboe@kernel.dk> Get rid of uninitialized_var()

It causes complaints on other compilers (clang). One case
was actually not used at all, initialize the rest to 0.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/engines/splice.c
76a3179ec3b849e4d4b0324ab3f517beec816bdf 13-May-2011 Jens Axboe <jaxboe@fusionio.com> splice: use ->o.memalign to indicate we want aligned buffers

Vasilis Liaskovitis reports:

---

I am trying to use the splice ioengine to read/write from/to tmpfs (/dev/shm).

Writing works fine e.g. with the following fio config:
[sw]
rw=write
size=1g
directory=/dev/shm
iodepth=32
direct=0
blocksize=512k
numjobs=1
nrfiles=1
ioengine=splice
loops=1
group_reporting
create_on_open=1
create_serialize=0

But reading the same file afterwards with the splice ioengine fails:
[sw]
rw=read
size=1g
directory=/dev/shm
iodepth=32
direct=0
blocksize=512k
numjobs=1
nrfiles=1
ioengine=splice
loops=1
group_reporting

root@server1:~/fio# ./fio /root/fior_splice.fio
sw: (g=0): rw=read, bs=512K-512K/512K-512K, ioengine=splice, iodepth=32
fio 1.53
Starting 1 process
fio: pid=17504, err=22/file:filesetup.c:502,
func=open(/dev/shm/sw.1.0), error=Invalid argument
Run status group 0 (all jobs):

Is something misconfigured in the fio read config?
The --debug=all output is:

Starting 1 process
file 17517 setup files
file 17517 get file size for 0x7f2f87451028/0/0x7f2f87451108
diskutil 17517 /dev/shm/sw.1.0 belongs to maj/min 0/17
process 17517 pid=0: runstate 0 -> 1
process 17517 will fork
mutex 17517 wait on startup_mutex
process 17519 jobs pid=17519 started
process 17519 pid=17519: runstate 1 -> 2
mutex 17519 up startup_mutex
mutex 17519 wait on td->mutex
mutex 17517 done waiting on startup_mutex
process 17517 pid=17519: runstate 2 -> 4
mutex 17519 done waiting on td->mutex
mem 17519 Alloc 16777216 for buffers
[...]
file 17519 trying file /dev/shm/sw.1.0 10
file 17519 fd open /dev/shm/sw.1.0
file 17519 file not found in hash /dev/shm/sw.1.0
file 17519 get file /dev/shm/sw.1.0, ref=0
io 17519 invalidate cache /dev/shm/sw.1.0: 0/1073741824
file 17519 fd close /dev/shm/sw.1.0
file 17519 error 1 on open of /dev/shm/sw.1.0
file 17519 get_next_file_rr: (nil)
fio: pid=17519, got signal=11
process 17517 pid=17519: runstate 4 -> 9
process 17517 terminate group_id=-1
process 17517 setting terminate on sw/17519
diskutil 17517 update io ticks

Other fio ioengines (sync, vsync) work fine for both reading/writing
on tmpfs. Also, other splice tests can do both reads and writes to
tmpfs (e.g. splice-cp).

This happens with current fio-master or fio-1.38-1 (debian package)
thanks for any comments,

---

The reason is that splice uses ->o.odirect to set that we want aligned
buffers, but we actually have a flag for that now. So just use that.

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/engines/splice.c
a3edaf76b30880c3bf4455c30614ce88cdbbe071 26-Sep-2010 Jens Axboe <jaxboe@fusionio.com> Use log_err() in the io engines

Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
/external/fio/engines/splice.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/engines/splice.c
f011531e61ae750cdf82074e0dea1379b07fa239 09-Mar-2010 Jens Axboe <jens.axboe@oracle.com> Update libaio/posixaio/splice for sync updates

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
9c0d224129b0c59698e4c77e7fed00dc8cbb50e1 01-Jul-2009 Jens Axboe <jens.axboe@oracle.com> Don't allow pre_read on IO engines that cannot seek

We cannot pre-read files, if we cannot seek back and read the same
data again. So just disable it with a warning to the user.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
cd98801fbed25dcc49f58cf1451af22f0455a6e6 20-Apr-2009 Jens Axboe <jens.axboe@oracle.com> splice engine: fix vmsplice() problem with block sizes larger than a pipe

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.c
f3f552b9920cc45c5b1f9c679f36b8ddb13927d0 13-Jun-2008 Jens Axboe <jens.axboe@oracle.com> Add uninitialized_var() to silence bogus compiler warnings

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
0aa417a9515f9dc17523c1870f6409370e94ca19 09-Jun-2008 Jens Axboe <jens.axboe@oracle.com> splice: if splicing fails with EINVAL, it's most likely missing fs support

So tell the user in more direct terms.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.c
3a6d267d644226983a430cf0f217c27f4c38cd45 16-Oct-2007 Jens Axboe <jens.axboe@oracle.com> splice: fix fallback from copy vmsplice to nothing

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
8b850243258107412710cd38252f0cfb8802593d 16-Oct-2007 Jens Axboe <jens.axboe@oracle.com> splice: fix problem with current mainline kernels

splice was updated to work well with the newer vmsplice patches,
where we don't have to copy data at all. But that broke the
regular vmsplice that copies data, which is all the mainline kernel
still support.

Fix that up, so we do appropriate fallbacks. Fixes the problem
reported by gurudas pai <gurudas.pai@oracle.com>

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.c
81887d5dcd608492e59ed3fb2ac8fcb463223120 07-Sep-2007 Jens Axboe <jens.axboe@oracle.com> splice: update to new vmsplice-to-user interface

I changed the kernel bits (they aren't merged yet), so update
the fio splice engine to reflect that.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
a26fc7c568964658aa2b98610ebd9054e2477456 05-Sep-2007 Jens Axboe <jens.axboe@oracle.com> Fix splice engine compile

We need to move the splice_unmap_io_u() function.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
bb446c117849b39ece795602774c3716eef6064a 04-Sep-2007 Jens Axboe <jens.axboe@oracle.com> splice engine: add unmapping for vmsplice-to-user

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
436885758c1b859392b80c616c338f9cfe9a9dfb 14-Aug-2007 Jens Axboe <jens.axboe@oracle.com> splice: automatically detect whether vmsplice-to-user works

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
f24254e1d142e80dc76d1f2e316da12f6ec125ee 13-Jun-2007 Jens Axboe <jens.axboe@oracle.com> splice engine: support for vmsplice to user space

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.c
b4ba5f302c467dc10c8b89459a8cb97d2958f359 02-Apr-2007 Jens Axboe <jens.axboe@oracle.com> splice engine: return negative for error

Otherwise fio_splice_queue() will think it has handle errno number
of bytes.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
da751ca9665bcdeca56d2eec5b629a0953c07662 14-Mar-2007 Jens Axboe <jens.axboe@oracle.com> Update io engine comments

Some were plain wrong, mainly because they were born through
copying an existing engine.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.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/engines/splice.c
22819ec237297fc39435ed566bee01a4225bfb39 18-Feb-2007 Jens Axboe <jens.axboe@oracle.com> Unify and fixup error handling

First step in getting ->queue() and ->getevents() handled in
a more sane fashion.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.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/engines/splice.c
95bcd815e5ce55d6cdd8eb83bda5ee411f37bdc9 11-Feb-2007 Jens Axboe <jens.axboe@oracle.com> [PATCH] Move td_verror() into io_ops->queue() hook

Shows where the error occured, not where it got noticed.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
cec6b55da1c282b5b91ad346c7804171fccf151e 06-Feb-2007 Jens Axboe <jens.axboe@oracle.com> [PATCH] Support residual io counts from io engines

We need this for requeuing support, the network engine makes this
pretty apparent (it's not unusual to see short tranfers there).

Basically we add an xfer_buf and xfer_buflen member to the io_u,
and these are the fields that the io engine MUST use. That allows
fio to increment and reset these appropriately, and simply requeue
the io_u for service of the next part of it.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c
f8fe35e8c9e88dd681ea151251d75f6116a958b4 06-Feb-2007 Jens Axboe <jens.axboe@oracle.com> [PATCH] Rename io engines

Typing fio-engine-foo is annoying, just rename them to their type. They
already reside in a private directory, no point in putting the fio-engine
prefix on the files.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
/external/fio/engines/splice.c