On 04/05/2017 02:28 PM, Jeff Cody wrote: > The BDRV_O_ALLOW_RDWR flag allows / prohibits the changing of > the BDS 'read_only' state, but there are a few places where it > is ignored. In the bdrv_set_read_only() helper, make sure to > honor the flag. > > Signed-off-by: Jeff Cody <jc...@redhat.com> > --- > block.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/block.c b/block.c > index f60d5ea..4a61ff0 100644 > --- a/block.c > +++ b/block.c > @@ -201,6 +201,13 @@ int bdrv_set_read_only(BlockDriverState *bs, bool > read_only, Error **errp) > return -EINVAL; > } > > + /* Do not clear read_only if it is prohibited */ > + if (!read_only && !(bs->open_flags & BDRV_O_ALLOW_RDWR)) { > + error_setg(errp, "Node '%s' is read only", > + bdrv_get_device_or_node_name(bs)); > + return -EPERM; > + } > + > bs->read_only = read_only; > return 0; > } >
Conceptually straightforward. looks like this might change behavior for... RBD and vvfat, right? RBD is the subject of this series so we'll just assume that was broken and stupid. What's vvfat's story? It always set the read-only property to false regardless of what you asked for?