diff mbox

[01/20] block: Add bdrv_parse_cache_mode()

Message ID 1458325289-17848-2-git-send-email-kwolf@redhat.com
State New
Headers show

Commit Message

Kevin Wolf March 18, 2016, 6:21 p.m. UTC
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>
---
 block.c               | 17 +++++++++++++++++
 include/block/block.h |  1 +
 2 files changed, 18 insertions(+)

Comments

Max Reitz March 26, 2016, 5:05 p.m. UTC | #1
On 18.03.2016 19:21, Kevin Wolf wrote:
> 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>
> ---
>  block.c               | 17 +++++++++++++++++
>  include/block/block.h |  1 +
>  2 files changed, 18 insertions(+)

Reviewed-by: Max Reitz <mreitz@redhat.com>
diff mbox

Patch

diff --git a/block.c b/block.c
index d319f86..172f865 100644
--- a/block.c
+++ b/block.c
@@ -661,6 +661,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
diff --git a/include/block/block.h b/include/block/block.h
index 4adb1e9..823f4d7 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -206,6 +206,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,