mirror of https://github.com/xqemu/xqemu.git
block: use bdrv_can_set_read_only() during reopen
Signed-off-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: 00aed7ffdd7be4b9ed9ce1007d50028a72b34ebe.1491597120.git.jcody@redhat.com
This commit is contained in:
parent
45803a0396
commit
3d8ce171cb
14
block.c
14
block.c
|
@ -2789,6 +2789,7 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,
|
||||||
BlockDriver *drv;
|
BlockDriver *drv;
|
||||||
QemuOpts *opts;
|
QemuOpts *opts;
|
||||||
const char *value;
|
const char *value;
|
||||||
|
bool read_only;
|
||||||
|
|
||||||
assert(reopen_state != NULL);
|
assert(reopen_state != NULL);
|
||||||
assert(reopen_state->bs->drv != NULL);
|
assert(reopen_state->bs->drv != NULL);
|
||||||
|
@ -2817,12 +2818,13 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_state, BlockReopenQueue *queue,
|
||||||
qdict_put(reopen_state->options, "driver", qstring_from_str(value));
|
qdict_put(reopen_state->options, "driver", qstring_from_str(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we are to stay read-only, do not allow permission change
|
/* If we are to stay read-only, do not allow permission change
|
||||||
* to r/w */
|
* to r/w. Attempting to set to r/w may fail if either BDRV_O_ALLOW_RDWR is
|
||||||
if (!(reopen_state->bs->open_flags & BDRV_O_ALLOW_RDWR) &&
|
* not set, or if the BDS still has copy_on_read enabled */
|
||||||
reopen_state->flags & BDRV_O_RDWR) {
|
read_only = !(reopen_state->flags & BDRV_O_RDWR);
|
||||||
error_setg(errp, "Node '%s' is read only",
|
ret = bdrv_can_set_read_only(reopen_state->bs, read_only, &local_err);
|
||||||
bdrv_get_device_or_node_name(reopen_state->bs));
|
if (local_err) {
|
||||||
|
error_propagate(errp, local_err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue