From: Paolo Bonzini Date: Tue, 10 Jul 2012 13:03:17 +0000 (+0200) Subject: scsi-disk: support toggling the write cache X-Git-Tag: v1.2.0-rc0~114^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=96c91bbf6090b3098db22ed19ab5ae2f9c6e4f16;p=thirdparty%2Fqemu.git scsi-disk: support toggling the write cache Finally, this uses the "plumbing" in the previous patch to add support for toggling the WCE bit of the caching mode page. Signed-off-by: Paolo Bonzini --- diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index ad6c00ddcf5..fd5cd709a9a 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -1050,10 +1050,8 @@ static int mode_sense_page(SCSIDiskState *s, int page, uint8_t **p_outbuf, case MODE_PAGE_CACHING: length = 0x12; - if (page_control == 1) { /* Changeable Values */ - break; - } - if (bdrv_enable_write_cache(s->qdev.conf.bs)) { + if (page_control == 1 || /* Changeable Values */ + bdrv_enable_write_cache(s->qdev.conf.bs)) { p[0] = 4; /* WCE */ } break; @@ -1325,6 +1323,14 @@ static int scsi_disk_check_mode_select(SCSIDiskState *s, int page, static void scsi_disk_apply_mode_select(SCSIDiskState *s, int page, uint8_t *p) { + switch (page) { + case MODE_PAGE_CACHING: + bdrv_set_enable_write_cache(s->qdev.conf.bs, (p[0] & 4) != 0); + break; + + default: + break; + } } static int mode_select_pages(SCSIDiskReq *r, uint8_t *p, int len, bool change)