qcow2: flush in qcow2_update_snapshot_refcount()
Users of qcow2_update_snapshot_refcount() do not flush consistently. qcow2_snapshot_create() flushes but qcow2_snapshot_goto() and qcow2_snapshot_delete() do not. Solve this by moving the bdrv_flush() into qcow2_update_snapshot_refcount(). Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									c1f5bafd70
								
							
						
					
					
						commit
						2154f24e4e
					
				@ -851,7 +851,7 @@ int qcow2_update_snapshot_refcount(BlockDriverState *bs,
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = 0;
 | 
					    ret = bdrv_flush(bs);
 | 
				
			||||||
fail:
 | 
					fail:
 | 
				
			||||||
    if (l2_table) {
 | 
					    if (l2_table) {
 | 
				
			||||||
        qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
 | 
					        qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
 | 
				
			||||||
 | 
				
			|||||||
@ -381,11 +381,6 @@ int qcow2_snapshot_create(BlockDriverState *bs, QEMUSnapshotInfo *sn_info)
 | 
				
			|||||||
        goto fail;
 | 
					        goto fail;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = bdrv_flush(bs);
 | 
					 | 
				
			||||||
    if (ret < 0) {
 | 
					 | 
				
			||||||
        goto fail;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* Append the new snapshot to the snapshot list */
 | 
					    /* Append the new snapshot to the snapshot list */
 | 
				
			||||||
    new_snapshot_list = g_malloc((s->nb_snapshots + 1) * sizeof(QCowSnapshot));
 | 
					    new_snapshot_list = g_malloc((s->nb_snapshots + 1) * sizeof(QCowSnapshot));
 | 
				
			||||||
    if (s->snapshots) {
 | 
					    if (s->snapshots) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user