summaryrefslogtreecommitdiff
path: root/hw/block/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/block/block.c')
-rw-r--r--hw/block/block.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/hw/block/block.c b/hw/block/block.c
index 97a59d4fa2..396b0d5de1 100644
--- a/hw/block/block.c
+++ b/hw/block/block.c
@@ -51,6 +51,22 @@ void blkconf_blocksizes(BlockConf *conf)
}
}
+void blkconf_apply_backend_options(BlockConf *conf)
+{
+ BlockBackend *blk = conf->blk;
+ bool wce;
+
+ switch (conf->wce) {
+ case ON_OFF_AUTO_ON: wce = true; break;
+ case ON_OFF_AUTO_OFF: wce = false; break;
+ case ON_OFF_AUTO_AUTO: wce = blk_enable_write_cache(blk); break;
+ default:
+ abort();
+ }
+
+ blk_set_enable_write_cache(blk, wce);
+}
+
void blkconf_geometry(BlockConf *conf, int *ptrans,
unsigned cyls_max, unsigned heads_max, unsigned secs_max,
Error **errp)