Comments
Patch
@@ -566,12 +566,26 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
trace_bdrv_open_common(bs, filename, flags, drv->format_name);
+ /*
+ * Clear flags that are internal to the block layer before opening the
+ * image.
+ */
+ open_flags = flags & ~(BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING);
+
+ /*
+ * Snapshots should be writable.
+ */
+ if (bs->is_temporary) {
+ open_flags |= BDRV_O_RDWR;
+ }
+
+
bs->file = NULL;
bs->total_sectors = 0;
bs->encrypted = 0;
bs->valid_key = 0;
bs->sg = 0;
- bs->open_flags = flags;
+ bs->open_flags = open_flags;
bs->growable = 0;
bs->buffer_alignment = 512;
@@ -591,20 +605,6 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
bs->opaque = g_malloc0(drv->instance_size);
bs->enable_write_cache = !!(flags & BDRV_O_CACHE_WB);
-
- /*
- * Clear flags that are internal to the block layer before opening the
- * image.
- */
- open_flags = flags & ~(BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING);
-
- /*
- * Snapshots should be writable.
- */
- if (bs->is_temporary) {
- 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 */
The passed flags are changed slightly before passing them to bdrv_open. Store the same flags in bs->open_flags, so that they are used correctly in bdrv_snapshot_goto. In addition, this way we will be able to query them and get back consistent values. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- block.c | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-)