[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/6] block: Create bdrv_backing_flags()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 2/6] block: Create bdrv_backing_flags() |
Date: |
Fri, 25 Apr 2014 19:51:08 +0200 |
Instead of manipulation flags inline, move the derivation of the flags
of a backing file into a new function next to the existing functions
that derive flags for bs->file and for the block driver open function.
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/block.c b/block.c
index eb2f39c..25c5663 100644
--- a/block.c
+++ b/block.c
@@ -798,6 +798,21 @@ static int bdrv_inherited_flags(int flags)
return flags;
}
+/*
+ * Returns the flags that bs->backing_hd should get, based on the given flags
+ * for the parent BDS
+ */
+static int bdrv_backing_flags(int flags)
+{
+ /* backing files always opened read-only */
+ flags &= ~(BDRV_O_RDWR | BDRV_O_COPY_ON_READ);
+
+ /* snapshot=on is handled on the top layer */
+ flags &= ~BDRV_O_SNAPSHOT;
+
+ return flags;
+}
+
static int bdrv_open_flags(BlockDriverState *bs, int flags)
{
int open_flags = flags | BDRV_O_CACHE_WB;
@@ -1093,7 +1108,7 @@ fail:
int bdrv_open_backing_file(BlockDriverState *bs, QDict *options, Error **errp)
{
char backing_filename[PATH_MAX];
- int back_flags, ret;
+ int ret;
BlockDriver *back_drv = NULL;
Error *local_err = NULL;
@@ -1122,14 +1137,10 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDict
*options, Error **errp)
back_drv = bdrv_find_format(bs->backing_format);
}
- /* backing files always opened read-only */
- back_flags = bs->open_flags & ~(BDRV_O_RDWR | BDRV_O_SNAPSHOT |
- BDRV_O_COPY_ON_READ);
-
assert(bs->backing_hd == NULL);
ret = bdrv_open(&bs->backing_hd,
*backing_filename ? backing_filename : NULL, NULL, options,
- back_flags, back_drv, &local_err);
+ bdrv_backing_flags(bs->open_flags), back_drv, &local_err);
if (ret < 0) {
bs->backing_hd = NULL;
bs->open_flags |= BDRV_O_NO_BACKING;
--
1.8.3.1
- [Qemu-devel] [PATCH 0/6] block: bdrv_open() fixes and cleanups, Kevin Wolf, 2014/04/25
- [Qemu-devel] [PATCH 1/6] block: Create bdrv_inherited_flags(), Kevin Wolf, 2014/04/25
- [Qemu-devel] [PATCH 4/6] block: Unlink temporary files in raw-posix/win32, Kevin Wolf, 2014/04/25
- [Qemu-devel] [PATCH 5/6] Revert "block: another bdrv_append fix", Kevin Wolf, 2014/04/25
- [Qemu-devel] [PATCH 2/6] block: Create bdrv_backing_flags(),
Kevin Wolf <=
- [Qemu-devel] [PATCH 3/6] block: Remove BDRV_O_COPY_ON_READ for bs->file, Kevin Wolf, 2014/04/25
- [Qemu-devel] [PATCH 6/6] block: Fix open_flags in bdrv_reopen(), Kevin Wolf, 2014/04/25