diff options
author | Christoph Hellwig <hch@lst.de> | 2009-09-04 19:01:15 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-09-11 10:19:46 -0500 |
commit | e900a7b748316b5b5a98e41dde36a0cb8e15be5f (patch) | |
tree | f41d52f388664258f5caa4a03645cb4409676065 /hw/scsi-disk.c | |
parent | b8193adbda922659ba290fd9fb6ee053ee191d70 (diff) |
block: add enable_write_cache flag
Add a enable_write_cache flag in the block driver state, and use it to
decide if we claim to have a volatile write cache that needs controlled
flushing from the guest. The flag is off if cache=writethrough is
defined because O_DSYNC guarantees that every write goes to stable
storage, and it is on for cache=none and cache=writeback.
Both scsi-disk and ide now use the new flage, changing from their
defaults of always off (ide) or always on (scsi-disk).
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/scsi-disk.c')
-rw-r--r-- | hw/scsi-disk.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index ffc2654bf9..de8e314b15 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -709,7 +709,9 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag, memset(p,0,20); p[0] = 8; p[1] = 0x12; - p[2] = 4; /* WCE */ + if (bdrv_enable_write_cache(s->dinfo->bdrv)) { + p[2] = 4; /* WCE */ + } p += 20; } if ((page == 0x3f || page == 0x2a) |