summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Wolf2014-06-04 14:33:27 +0200
committerKevin Wolf2014-06-26 13:51:01 +0200
commit20cca275c6190ca0027cf7dd369ba985e44a6537 (patch)
tree9bcc23b3aea727f38f856be657ea79b3654c4cc9
parentblock: Catch backing files assigned to non-COW drivers (diff)
downloadqemu-20cca275c6190ca0027cf7dd369ba985e44a6537.tar.gz
qemu-20cca275c6190ca0027cf7dd369ba985e44a6537.tar.xz
qemu-20cca275c6190ca0027cf7dd369ba985e44a6537.zip
block: Remove a special case for protocols
The only semantic change is that bs->open_flags gets BDRV_O_PROTOCOL set now. This isn't useful, but it doesn't hurt either. The code that was previously skipped by 'goto done' is automatically disabled because protocol drivers don't support backing files (and if they did, this would probably be a fix) and can't have snapshot_flags set. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
-rw-r--r--block.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/block.c b/block.c
index 2c3c7608ee..7d69f312b6 100644
--- a/block.c
+++ b/block.c
@@ -831,7 +831,7 @@ static int bdrv_open_flags(BlockDriverState *bs, int flags)
* Clear flags that are internal to the block layer before opening the
* image.
*/
- open_flags &= ~(BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING);
+ open_flags &= ~(BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING | BDRV_O_PROTOCOL);
/*
* Snapshots should be writable.
@@ -928,6 +928,7 @@ static int bdrv_open_common(BlockDriverState *bs, BlockDriverState *file,
bs->zero_beyond_eof = true;
open_flags = bdrv_open_flags(bs, flags);
bs->read_only = !(open_flags & BDRV_O_RDWR);
+ bs->growable = !!(flags & BDRV_O_PROTOCOL);
if (use_bdrv_whitelist && !bdrv_is_whitelisted(drv, bs->read_only)) {
error_setg(errp,
@@ -1466,19 +1467,6 @@ int bdrv_open(BlockDriverState **pbs, const char *filename,
}
/* Open the image */
- if (flags & BDRV_O_PROTOCOL) {
- ret = bdrv_open_common(bs, NULL, options,
- flags & ~BDRV_O_PROTOCOL, drv, &local_err);
- if (!ret) {
- bs->growable = 1;
- goto done;
- } else if (bs->drv) {
- goto close_and_fail;
- } else {
- goto fail;
- }
- }
-
ret = bdrv_open_common(bs, file, options, flags, drv, &local_err);
if (ret < 0) {
goto fail;
@@ -1510,8 +1498,6 @@ int bdrv_open(BlockDriverState **pbs, const char *filename,
}
}
-
-done:
/* Check if any unknown options were used */
if (options && (qdict_size(options) != 0)) {
const QDictEntry *entry = qdict_first(options);