use aio=native only with O_DIRECT (cache=none|directsync)

Currently qemu auto fallback to aio=threads if cache=none|directsync
It's better to handle that correctly

see:
https://bugzilla.redhat.com/show_bug.cgi?id=1086704

http://wiki.qemu.org/ChangeLog/2.3
Future incompatible changes:
Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
Alexandre Derumier 2015-04-02 08:11:25 +02:00 committed by Dietmar Maurer
parent 8bcf3068eb
commit 3f548708d3

View File

@ -1229,8 +1229,15 @@ sub print_drive_full {
$opts .= ",$o=" . int($v*1024*1024) if $v;
}
# use linux-aio by default (qemu default is threads)
$opts .= ",aio=native" if !$drive->{aio};
# aio native works only with O_DIRECT
if (!$drive->{aio}) {
if(!$drive->{cache} || $drive->{cache} eq 'none' || $drive->{cache} eq 'directsync') {
$opts .= ",aio=native";
} else {
$opts .= ",aio=threads";
}
}
my $path;
my $volid = $drive->{file};