[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag
From: |
Christoph Hellwig |
Subject: |
Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag |
Date: |
Tue, 1 Sep 2009 00:16:22 +0200 |
User-agent: |
Mutt/1.3.28i |
On Mon, Aug 31, 2009 at 11:09:50PM +0100, Jamie Lokier wrote:
> Right now, on a Linux host O_SYNC is unsafe with hardware that has a
> volatile write cache. That might not be changed, but if it is than
> performance with cache=writethrough will plummet (due to issuing a
> CACHE FLUSH to the hardware after every write), while performance with
> cache=writeback will be reasonable.
Currenly all modes are more or less unsafe with volatile write caches
at least when using ext3 or raw block device accesses. XFS is safe
two thirds due to doing the right thing and one third due to sheer
luck.
> If an unsafe mode is desired (I think it is, for those throwaway
> testing VMs, or during OS installs), I suggest adding cache=volatile:
>
> cache=none
> O_DIRECT, fdatasync, advertise volatile write cache
>
> cache=writethrough
> O_SYNC, do not advertise
>
> cache=writeback
> fdatasync, advertise volatile write cache
>
> cache=volatile
> nothing (perhaps fdatasync on QEMU blockdev close)
Fine withe me, let the flame war begin :)
> When using guests OSes which issue CACHE FLUSH commands (that's a
> guest config issue), why would you ever use cache=writethrough?
> cache=writeback should be faster and equally safe - provided you do
> actually advertise the write cache!
And provided the guest OS actually issues cache flushes when it should,
something that at least Linux historicaly utterly failed at, and some
other operating systems haven't even tried.
cache=writethrough is the equivalent of turning off the volatile
write cache of the real disk. It might be slower (which isn't even
always the case for real disks), but it is much safer.
E.g. if you want to move your old SCO Unix box into a VM it's the
only safe option.
- [Qemu-devel] [PATCH 0/4] data integrity fixes, Christoph Hellwig, 2009/08/31
- [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Christoph Hellwig, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Jamie Lokier, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Anthony Liguori, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Jamie Lokier, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Christoph Hellwig, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Jamie Lokier, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Christoph Hellwig, 2009/08/31
- Re: [Qemu-devel] [PATCH 1/4] block: add enable_write_cache flag, Christoph Hellwig, 2009/08/31
[Qemu-devel] [PATCH 2/4] block: use fdatasync instead of fsync, Christoph Hellwig, 2009/08/31