]> git.proxmox.com Git - qemu-server.git/commitdiff
use aio=native only with O_DIRECT (cache=none|directsync)
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 2 Apr 2015 06:11:25 +0000 (08:11 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Sat, 4 Apr 2015 07:57:53 +0000 (09:57 +0200)
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>
PVE/QemuServer.pm

index 9fe168479971e8ddccc27cd3a4d3fbe5a8df1811..baf0e64df9b8fcb5563a7b98b31beba9cd4635fb 100644 (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};