block: Add bdrv_parse_cache_mode()

It's like bdrv_parse_cache_flags(), except that writethrough mode isn't
included in the flags, but returned as a separate bool.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Kevin Wolf 2016-03-14 11:40:23 +01:00
parent 63785678f3
commit baf5602ed9
2 changed files with 18 additions and 0 deletions

17
block.c
View File

@ -667,6 +667,23 @@ int bdrv_parse_cache_flags(const char *mode, int *flags)
return 0;
}
int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough)
{
int ret = bdrv_parse_cache_flags(mode, flags);
if (ret < 0) {
return ret;
}
if (*flags & BDRV_O_CACHE_WB) {
*flags &= ~BDRV_O_CACHE_WB;
*writethrough = false;
} else {
*writethrough = true;
}
return 0;
}
/*
* Returns the options and flags that a temporary snapshot should get, based on
* the originally requested flags (the originally requested image will have

View File

@ -208,6 +208,7 @@ void bdrv_replace_in_backing_chain(BlockDriverState *old,
BlockDriverState *new);
int bdrv_parse_cache_flags(const char *mode, int *flags);
int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough);
int bdrv_parse_discard_flags(const char *mode, int *flags);
BdrvChild *bdrv_open_child(const char *filename,
QDict *options, const char *bdref_key,