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
This commit is contained in:
		
							parent
							
								
									b8dbdddc9e
								
							
						
					
					
						commit
						137519ce2e
					
				| 
						 | 
				
			
			@ -30,6 +30,9 @@
 | 
			
		|||
#include <windows.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Default to cache=writeback as data integrity is not important for qemu-tcg. */
 | 
			
		||||
#define BRDV_O_FLAGS BDRV_O_CACHE_WB
 | 
			
		||||
 | 
			
		||||
static void __attribute__((noreturn)) error(const char *fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
    va_list ap;
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +189,7 @@ static BlockDriverState *bdrv_new_open(const char *filename,
 | 
			
		|||
    } else {
 | 
			
		||||
        drv = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (bdrv_open2(bs, filename, 0, drv) < 0) {
 | 
			
		||||
    if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
 | 
			
		||||
        error("Could not open '%s'", filename);
 | 
			
		||||
    }
 | 
			
		||||
    if (bdrv_is_encrypted(bs)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -317,7 +320,7 @@ static int img_commit(int argc, char **argv)
 | 
			
		|||
    } else {
 | 
			
		||||
        drv = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (bdrv_open2(bs, filename, 0, drv) < 0) {
 | 
			
		||||
    if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
 | 
			
		||||
        error("Could not open '%s'", filename);
 | 
			
		||||
    }
 | 
			
		||||
    ret = bdrv_commit(bs);
 | 
			
		||||
| 
						 | 
				
			
			@ -691,7 +694,7 @@ static int img_info(int argc, char **argv)
 | 
			
		|||
    } else {
 | 
			
		||||
        drv = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (bdrv_open2(bs, filename, 0, drv) < 0) {
 | 
			
		||||
    if (bdrv_open2(bs, filename, BRDV_O_FLAGS, drv) < 0) {
 | 
			
		||||
        error("Could not open '%s'", filename);
 | 
			
		||||
    }
 | 
			
		||||
    bdrv_get_format(bs, fmt_name, sizeof(fmt_name));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue