block: introduce bdrv_can_set_read_only()
Introduce check function for setting read_only flags. Will return < 0 on error, with appropriate Error value set. Does not alter any flags. Signed-off-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: e2bba34ac3bc76a0c42adc390413f358ae0566e8.1491597120.git.jcody@redhat.com
This commit is contained in:
parent
93ed524e3d
commit
45803a0396
14
block.c
14
block.c
|
@ -197,7 +197,7 @@ bool bdrv_is_read_only(BlockDriverState *bs)
|
||||||
return bs->read_only;
|
return bs->read_only;
|
||||||
}
|
}
|
||||||
|
|
||||||
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
|
int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
|
||||||
{
|
{
|
||||||
/* Do not set read_only if copy_on_read is enabled */
|
/* Do not set read_only if copy_on_read is enabled */
|
||||||
if (bs->copy_on_read && read_only) {
|
if (bs->copy_on_read && read_only) {
|
||||||
|
@ -213,6 +213,18 @@ int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
ret = bdrv_can_set_read_only(bs, read_only, errp);
|
||||||
|
if (ret < 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bs->read_only = read_only;
|
bs->read_only = read_only;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -434,6 +434,7 @@ int bdrv_is_allocated_above(BlockDriverState *top, BlockDriverState *base,
|
||||||
int64_t sector_num, int nb_sectors, int *pnum);
|
int64_t sector_num, int nb_sectors, int *pnum);
|
||||||
|
|
||||||
bool bdrv_is_read_only(BlockDriverState *bs);
|
bool bdrv_is_read_only(BlockDriverState *bs);
|
||||||
|
int bdrv_can_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
|
||||||
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
|
int bdrv_set_read_only(BlockDriverState *bs, bool read_only, Error **errp);
|
||||||
bool bdrv_is_sg(BlockDriverState *bs);
|
bool bdrv_is_sg(BlockDriverState *bs);
|
||||||
bool bdrv_is_inserted(BlockDriverState *bs);
|
bool bdrv_is_inserted(BlockDriverState *bs);
|
||||||
|
|
Loading…
Reference in New Issue