Re: linux-aio usable?

Michael Tokarev
2010-03-08T20:11:09Z

Avi Kivity wrote:
> On 03/08/2010 03:46 AM, Bernhard Schmidt wrote:
>> Hi,
>>
>> sorry for this pretty generic question, I did not find any real pros and
>> cons on the net anywhere, but I might just have missed them.
>>
>> In a pure x86_64 environment (~2.6.32 vanilla kernel, 0.12.3 qemu-kvm),
>> is enabling linux-aio in KVM a good idea?
>
> Yes.

Apparently that does not quite work. I just re-compiled kvm with
--enable-linux-aio (actually I just installed libaio-dev on debian
and qemu-kvm's configure picked it up automatically), and tried
a guest. But any I/O fails.

kvm-0.12.3 ... -drive file=/dev/sda10,if=virtio,cache=none,aio=native

(/dev/sda10 is a (spare) partition on my hard drive I use for testing).
Here's the resulting dmesg in the guest (2.6.32):

vdb:
end_request: I/O error, dev vdb, sector 0
Buffer I/O error on device vdb, logical block 0
Buffer I/O error on device vdb, logical block 1
Buffer I/O error on device vdb, logical block 2
Buffer I/O error on device vdb, logical block 3
Buffer I/O error on device vdb, logical block 4
Buffer I/O error on device vdb, logical block 5
Buffer I/O error on device vdb, logical block 6
Buffer I/O error on device vdb, logical block 7
end_request: I/O error, dev vdb, sector 0
Buffer I/O error on device vdb, logical block 0
Buffer I/O error on device vdb, logical block 1
end_request: I/O error, dev vdb, sector 0
unable to read partition table

And any I/O - be it reads of writes - fails.

I see some aio_submit() etc are happening in strace,
but no errors. Unfortunately my strace does not
decode io_*() routines.

# fgrep io_ trc
...
1227 io_submit(4152147968, 1, {...}) = 1
1226 io_getevents(-142819328, 1, 128, {...}{0, 0}) = 1
1227 io_submit(4152147968, 1, {...}) = 1
1226 io_getevents(-142819328, 1, 128, {...}{0, 0}) = 1
1227 io_submit(4152147968, 1, {...}) = 1
1226 io_getevents(-142819328, 1, 128, {...}{0, 0}) = 1
...

Oh well.... ;)

/mjt