[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/12] vmdk: Fix backing file handling
From: |
Glauber Costa |
Subject: |
[Qemu-devel] [PATCH 04/12] vmdk: Fix backing file handling |
Date: |
Wed, 26 Aug 2009 09:05:38 -0400 |
From: Kevin Wolf <address@hidden>
Instead of storing the backing file in its own BlockDriverState, VMDK uses the
BlockDriverState of the raw image file it opened. This is wrong and breaks
functions that access the backing file or protocols. This fix replaces all
occurrences of s->hd->backing_* with bs->backing_*.
This fixes qemu-iotests failure in 020 (Commit changes to backing file).
Signed-off-by: Kevin Wolf <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>
Signed-off-by: Glauber Costa <address@hidden>
---
block-vmdk.c | 29 +++++++++++++++--------------
1 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/block-vmdk.c b/block-vmdk.c
index 71d7504..1f2ad17 100644
--- a/block-vmdk.c
+++ b/block-vmdk.c
@@ -169,7 +169,7 @@ static int vmdk_is_cid_valid(BlockDriverState *bs)
{
#ifdef CHECK_CID
BDRVVmdkState *s = bs->opaque;
- BlockDriverState *p_bs = s->hd->backing_hd;
+ BlockDriverState *p_bs = bs->backing_hd;
uint32_t cur_pcid;
if (p_bs) {
@@ -337,26 +337,26 @@ static int vmdk_parent_open(BlockDriverState *bs, const
char * filename)
p_name += sizeof("parentFileNameHint") + 1;
if ((end_name = strchr(p_name,'\"')) == 0)
return -1;
- if ((end_name - p_name) > sizeof (s->hd->backing_file) - 1)
+ if ((end_name - p_name) > sizeof (bs->backing_file) - 1)
return -1;
- pstrcpy(s->hd->backing_file, end_name - p_name + 1, p_name);
- if (stat(s->hd->backing_file, &file_buf) != 0) {
+ pstrcpy(bs->backing_file, end_name - p_name + 1, p_name);
+ if (stat(bs->backing_file, &file_buf) != 0) {
path_combine(parent_img_name, sizeof(parent_img_name),
- filename, s->hd->backing_file);
+ filename, bs->backing_file);
} else {
pstrcpy(parent_img_name, sizeof(parent_img_name),
- s->hd->backing_file);
+ bs->backing_file);
}
- s->hd->backing_hd = bdrv_new("");
- if (!s->hd->backing_hd) {
+ bs->backing_hd = bdrv_new("");
+ if (!bs->backing_hd) {
failure:
bdrv_close(s->hd);
return -1;
}
parent_open = 1;
- if (bdrv_open(s->hd->backing_hd, parent_img_name, BDRV_O_RDONLY) < 0)
+ if (bdrv_open(bs->backing_hd, parent_img_name, BDRV_O_RDONLY) < 0)
goto failure;
parent_open = 0;
}
@@ -463,13 +463,14 @@ static int get_whole_cluster(BlockDriverState *bs,
uint64_t cluster_offset,
// we will be here if it's first write on non-exist grain(cluster).
// try to read from parent image, if exist
- if (s->hd->backing_hd) {
- BDRVVmdkState *ps = s->hd->backing_hd->opaque;
+ if (bs->backing_hd) {
+ BDRVVmdkState *ps = bs->backing_hd->opaque;
if (!vmdk_is_cid_valid(bs))
return -1;
- parent_cluster_offset = get_cluster_offset(s->hd->backing_hd, NULL,
offset, allocate);
+ parent_cluster_offset = get_cluster_offset(bs->backing_hd, NULL,
+ offset, allocate);
if (parent_cluster_offset) {
BDRVVmdkState *act_s = activeBDRV.hd->opaque;
@@ -620,10 +621,10 @@ static int vmdk_read(BlockDriverState *bs, int64_t
sector_num,
n = nb_sectors;
if (!cluster_offset) {
// try to read from parent image, if exist
- if (s->hd->backing_hd) {
+ if (bs->backing_hd) {
if (!vmdk_is_cid_valid(bs))
return -1;
- ret = bdrv_read(s->hd->backing_hd, sector_num, buf, n);
+ ret = bdrv_read(bs->backing_hd, sector_num, buf, n);
if (ret < 0)
return -1;
} else {
--
1.6.2.2
- [Qemu-devel] [GIT PULL] 0.10.7 stable release, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 01/12] fix for bad macaddr of e1000 in Windows 2003 server with original MS driver, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 02/12] Handle BH's queued by AIO completions in qemu_aio_flush(), Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 03/12] BACKPORT: Add save/restore support to the LSI logic SCSI device model., Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 04/12] vmdk: Fix backing file handling,
Glauber Costa <=
- [Qemu-devel] [PATCH 05/12] fix broken migration, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 06/12] fix migration to obey -S, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 07/12] BACKPORT: vnc: fix copyrect screen corruption, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 08/12] e1000.c doesn't properly emulate EERD and ICS registers, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 09/12] make windows notice media change, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 10/12] BACKPORT: Fix segfault of qemu-system-arm with PXA target, Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 11/12] Fix detached migration with exec., Glauber Costa, 2009/08/26
- [Qemu-devel] [PATCH 12/12] Don't segfault when changing VNC password on an SDL display., Glauber Costa, 2009/08/26
- [Qemu-devel] Re: [PATCH 11/12] Fix detached migration with exec., Chris Lalancette, 2009/08/27
- [Qemu-devel] Re: [PATCH 05/12] fix broken migration, Paolo Bonzini, 2009/08/26