summaryrefslogtreecommitdiff
path: root/blockdev.c
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>2011-08-04 12:26:51 +0100
committerKevin Wolf <kwolf@redhat.com>2011-08-23 14:15:17 +0200
commitc3993cdca39c252d65bbbcc234d8d242dc9bd693 (patch)
treefd31efb3149956a7fd09de821851b52ce2e20580 /blockdev.c
parent12888904fe7f0231e853072805fb2317ec60c510 (diff)
downloadqemu-c3993cdca39c252d65bbbcc234d8d242dc9bd693.tar.gz
qemu-c3993cdca39c252d65bbbcc234d8d242dc9bd693.tar.bz2
qemu-c3993cdca39c252d65bbbcc234d8d242dc9bd693.zip
block: parse cache mode flags in a single place
This patch introduces bdrv_parse_cache_flags() which sets open flags given a cache mode. Previously this was duplicated in blockdev.c and qemu-img.c. Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'blockdev.c')
-rw-r--r--blockdev.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/blockdev.c b/blockdev.c
index d272659ab2..2602591bf6 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -321,18 +321,9 @@ DriveInfo *drive_init(QemuOpts *opts, int default_to_scsi)
}
if ((buf = qemu_opt_get(opts, "cache")) != NULL) {
- if (!strcmp(buf, "off") || !strcmp(buf, "none")) {
- bdrv_flags |= BDRV_O_NOCACHE | BDRV_O_CACHE_WB;
- } else if (!strcmp(buf, "writeback")) {
- bdrv_flags |= BDRV_O_CACHE_WB;
- } else if (!strcmp(buf, "unsafe")) {
- bdrv_flags |= BDRV_O_CACHE_WB;
- bdrv_flags |= BDRV_O_NO_FLUSH;
- } else if (!strcmp(buf, "writethrough")) {
- /* this is the default */
- } else {
- error_report("invalid cache option");
- return NULL;
+ if (bdrv_parse_cache_flags(buf, &bdrv_flags) != 0) {
+ error_report("invalid cache option");
+ return NULL;
}
}