[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 02/18] block: store actual flags in bs->open_flag
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 02/18] block: store actual flags in bs->open_flags |
Date: |
Thu, 26 Jan 2012 18:22:33 +0100 |
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. In addition, this way we
will be able to query them and get back consistent values.
Signed-off-by: Paolo Bonzini <address@hidden>
---
block.c | 38 ++++++++++++++++++--------------------
1 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/block.c b/block.c
index c5a85a2..a1d2433 100644
--- a/block.c
+++ b/block.c
@@ -565,18 +565,30 @@ void bdrv_disable_copy_on_read(BlockDriverState *bs)
static int bdrv_open_common(BlockDriverState *bs, const char *filename,
int flags, BlockDriver *drv)
{
- int ret, open_flags;
+ int ret;
assert(drv != NULL);
trace_bdrv_open_common(bs, filename, flags, drv->format_name);
+ /*
+ * Clear flags that are internal to the block layer before opening the
+ * image.
+ */
+ bs->open_flags = flags & ~(BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING);
+
+ /*
+ * Snapshots should be writable.
+ */
+ if (bs->is_temporary) {
+ bs->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->growable = 0;
bs->buffer_alignment = 512;
@@ -596,29 +608,15 @@ 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);
+ bs->keep_read_only = bs->read_only = !(bs->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);
+ ret = drv->bdrv_file_open(bs, filename, bs->open_flags);
} else {
- ret = bdrv_file_open(&bs->file, filename, open_flags);
+ ret = bdrv_file_open(&bs->file, filename, bs->open_flags);
if (ret >= 0) {
- ret = drv->bdrv_open(bs, open_flags);
+ ret = drv->bdrv_open(bs, bs->open_flags);
}
}
--
1.7.7.6
- [Qemu-devel] [PATCH v2 00/18] Support mismatched host and guest logical block sizes, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 01/18] block: do not rely on open_flags for bdrv_is_snapshot, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 03/18] block: pass protocol flags up to the format, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 02/18] block: store actual flags in bs->open_flags,
Paolo Bonzini <=
- [Qemu-devel] [PATCH v2 04/18] block: non-raw protocols never cache, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 05/18] block: remove enable_write_cache, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 06/18] block: move flag bits together, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 07/18] raw: remove the aligned_buf, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 09/18] block: add host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 11/18] iscsi: save host block size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 08/18] block: rename buffer_alignment to guest_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 10/18] raw: probe host_block_size, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 12/18] block: allow waiting only for overlapping writes, Paolo Bonzini, 2012/01/26
- [Qemu-devel] [PATCH v2 14/18] block: protect against "torn reads" for guest_block_size > host_block_size, Paolo Bonzini, 2012/01/26