[Sheepdog] [PATCH v5 4/8] sheep: teach sheep to use object cache
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Mon Mar 26 07:39:47 CEST 2012
At Mon, 26 Mar 2012 12:15:29 +0800,
Liu Yuan wrote:
>
> On 03/26/2012 04:41 AM, MORITA Kazutaka wrote:
>
> > Consider that the object is dirty if the VDI was opened with a
> > writeback mode in the previous time. I think we need to check a cache
> > here.
>
>
> For the sane usage, VMs should not be opened both for none-cache and
> cache mode off and on. Even if VM first open the vdi with cache mode
> first, then want to use none-cache mode, current implementation would be
> okay, since after the guest was closed, the dirty bits would be flushed
> to the cluster.
>
> So the problem is precisely that we can't handle the situation that VM
> runs with cache first, then crashes, then boots up again without cache.
> We'd better use qemu-io to issue a flush requests first manually, then
> we can safe boot the VM without cache, not losing any dirty data.
>
> So I don't think it worth introducing complexity to object cache to
> handle this corner case that already should be handled by other means.
We can more easily hit this problem. For example:
$ qemu-img convert linux.raw sheepdog:linux
where linux.raw is a linux image file, and
$ qemu sheepdog:linux
We cannot boot the linux VDI because qemu-img opens with a
BDRV_O_CACHE_WB always, but qemu opens without it by default.
I think you are mixing two things in this patchset.
1. use a disk cache (this should be disabled by BDRV_O_NOCACHE)
2. support a writeback mode (this should be enabled by BDRV_O_CACHE_WB)
If you think it doesn't make sense to support a writethrough mode with
a disk cache, I'm not against to the current approach in this
patchset. But at least, please flush a dirty cache before handling
non-cache requests. Otherwise, we can easily hit a cache coherency
problem (e.g. 'collie vdi list' doesn't show the correct used size).
Thanks,
Kazutaka
More information about the sheepdog
mailing list