47 lines
1.5 KiB
Diff
47 lines
1.5 KiB
Diff
|
From 9d8117f00364c12cbd658de903b1ed26a30584e0 Mon Sep 17 00:00:00 2001
|
||
|
From: Fam Zheng <famcool@gmail.com>
|
||
|
Date: Tue, 12 Jul 2011 19:56:34 +0800
|
||
|
Subject: [PATCH 08/12] VMDK: move 'static' cid_update flag to bs field
|
||
|
|
||
|
Cid_update is the flag for updating CID on first write after opening the
|
||
|
image. This should be per image open rather than per program life cycle,
|
||
|
so change it from static var of vmdk_write to a field in BDRVVmdkState.
|
||
|
|
||
|
Signed-off-by: Fam Zheng <famcool@gmail.com>
|
||
|
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
|
||
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||
|
---
|
||
|
block/vmdk.c | 6 +++---
|
||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||
|
|
||
|
--- a/block/vmdk.c
|
||
|
+++ b/block/vmdk.c
|
||
|
@@ -82,6 +82,7 @@ typedef struct VmdkExtent {
|
||
|
|
||
|
typedef struct BDRVVmdkState {
|
||
|
int desc_offset;
|
||
|
+ bool cid_updated;
|
||
|
uint32_t parent_cid;
|
||
|
int num_extents;
|
||
|
/* Extent array with num_extents entries, ascend ordered by address */
|
||
|
@@ -853,7 +854,6 @@ static int vmdk_write(BlockDriverState *
|
||
|
int n;
|
||
|
int64_t index_in_cluster;
|
||
|
uint64_t cluster_offset;
|
||
|
- static int cid_update = 0;
|
||
|
VmdkMetaData m_data;
|
||
|
|
||
|
if (sector_num > bs->total_sectors) {
|
||
|
@@ -900,9 +900,9 @@ static int vmdk_write(BlockDriverState *
|
||
|
buf += n * 512;
|
||
|
|
||
|
// update CID on the first write every time the virtual disk is opened
|
||
|
- if (!cid_update) {
|
||
|
+ if (!s->cid_updated) {
|
||
|
vmdk_write_cid(bs, time(NULL));
|
||
|
- cid_update++;
|
||
|
+ s->cid_updated = true;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|