Fix systemtap tapsets (bz 831763) Fix qmp response race caused by spice server bug (bz 744015) Fix text mode screendumps (bz 819155) Don't renable ksm on update (bz 815156) Fix RPM install error on non-virt machines (bz 660629) Obsolete openbios to fix upgrade dependency issues (bz 694802)
53 lines
1.8 KiB
Diff
53 lines
1.8 KiB
Diff
From b461a24186f05d7adec265bd34f348f7b8f9569b Mon Sep 17 00:00:00 2001
|
|
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
|
|
Date: Thu, 27 Oct 2011 10:54:27 +0100
|
|
Subject: [PATCH] block: set bs->read_only before .bdrv_open()
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Several block drivers set bs->read_only in .bdrv_open() but
|
|
block.c:bdrv_open_common() clobbers its value. Additionally, QED uses
|
|
bdrv_is_read_only() in .bdrv_open() to decide whether to perform
|
|
consistency checks.
|
|
|
|
The correct ordering is to initialize bs->read_only from the open flags
|
|
before calling .bdrv_open(). This way block drivers can override it if
|
|
necessary and can use bdrv_is_read_only() in .bdrv_open().
|
|
|
|
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit e7c637967e6aad195b5f30cfd995913c9e0b4666)
|
|
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
block.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/block.c b/block.c
|
|
index 4ebb18b..8d77746 100644
|
|
--- a/block.c
|
|
+++ b/block.c
|
|
@@ -455,6 +455,8 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
|
|
open_flags |= BDRV_O_RDWR;
|
|
}
|
|
|
|
+ bs->keep_read_only = bs->read_only = !(open_flags & BDRV_O_RDWR);
|
|
+
|
|
/* Open the image, either directly or using a protocol */
|
|
if (drv->bdrv_file_open) {
|
|
ret = drv->bdrv_file_open(bs, filename, open_flags);
|
|
@@ -469,8 +471,6 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
|
|
goto free_and_fail;
|
|
}
|
|
|
|
- bs->keep_read_only = bs->read_only = !(open_flags & BDRV_O_RDWR);
|
|
-
|
|
ret = refresh_total_sectors(bs, bs->total_sectors);
|
|
if (ret < 0) {
|
|
goto free_and_fail;
|
|
--
|
|
1.7.11.2
|
|
|