Commit 137519ce2e269915de0f67a13ac32b67605cad72

Authored by aurel32
1 parent b8dbdddc

qemu-img: open files with cache=writeback

Data integrity is not important in qemu-img, so open the files with
cache=writeback. This fixes the performance regression seen with qemu-img
since revision 5485, and most particularly with the qcow2 format.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5839 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 3 deletions
qemu-img.c
@@ -30,6 +30,9 @@ @@ -30,6 +30,9 @@
30 #include <windows.h> 30 #include <windows.h>
31 #endif 31 #endif
32 32
  33 +/* Default to cache=writeback as data integrity is not important for qemu-tcg. */
  34 +#define BRDV_O_FLAGS BDRV_O_CACHE_WB
  35 +
33 static void __attribute__((noreturn)) error(const char *fmt, ...) 36 static void __attribute__((noreturn)) error(const char *fmt, ...)
34 { 37 {
35 va_list ap; 38 va_list ap;
@@ -186,7 +189,7 @@ static BlockDriverState *bdrv_new_open(const char *filename, @@ -186,7 +189,7 @@ static BlockDriverState *bdrv_new_open(const char *filename,
186 } else { 189 } else {
187 drv = NULL; 190 drv = NULL;
188 } 191 }
189 - if (bdrv_open2(bs, filename, 0, drv) < 0) { 192 + if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
190 error("Could not open '%s'", filename); 193 error("Could not open '%s'", filename);
191 } 194 }
192 if (bdrv_is_encrypted(bs)) { 195 if (bdrv_is_encrypted(bs)) {
@@ -317,7 +320,7 @@ static int img_commit(int argc, char **argv) @@ -317,7 +320,7 @@ static int img_commit(int argc, char **argv)
317 } else { 320 } else {
318 drv = NULL; 321 drv = NULL;
319 } 322 }
320 - if (bdrv_open2(bs, filename, 0, drv) < 0) { 323 + if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
321 error("Could not open '%s'", filename); 324 error("Could not open '%s'", filename);
322 } 325 }
323 ret = bdrv_commit(bs); 326 ret = bdrv_commit(bs);
@@ -691,7 +694,7 @@ static int img_info(int argc, char **argv) @@ -691,7 +694,7 @@ static int img_info(int argc, char **argv)
691 } else { 694 } else {
692 drv = NULL; 695 drv = NULL;
693 } 696 }
694 - if (bdrv_open2(bs, filename, 0, drv) < 0) { 697 + if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
695 error("Could not open '%s'", filename); 698 error("Could not open '%s'", filename);
696 } 699 }
697 bdrv_get_format(bs, fmt_name, sizeof(fmt_name)); 700 bdrv_get_format(bs, fmt_name, sizeof(fmt_name));