[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.8 0/4] Allow 'cache-clean-interval' in Linux o
From: |
Alberto Garcia |
Subject: |
[Qemu-devel] [PATCH for-2.8 0/4] Allow 'cache-clean-interval' in Linux only |
Date: |
Fri, 25 Nov 2016 13:27:42 +0200 |
Hi all,
The cache-clean-interval setting of qcow2 frees the memory of the L2
cache tables that haven't been used after a certain interval of time.
QEMU uses madvise() with MADV_DONTNEED for this. After that call, the
data in the specified cache tables is discarded by the kernel. The
problem with this behavior is that it is Linux-specific. madvise()
itself is not a standard system call and while other implementations
(e.g. FreeBSD) also have MADV_DONTNEED, they don't share the same
semantics.
POSIX defines posix_madvise(), which has POSIX_MADV_DONTNEED, and
that's what QEMU uses in systems that don't implement madvise().
However POSIX_MADV_DONTNEED also has different semantics and cannot be
used for our purposes. As a matter of fact, in glibc it is a no-op:
https://github.molgen.mpg.de/git-mirror/glibc/blob/glibc-2.23/sysdeps/unix/sysv/linux/posix_madvise.c
So while this all is mentioned in the QEMU documentation, there's
nothing preventing users of other systems from trying to use this
feature. In non-Linux systems it is worse than a no-op: it invalidates
perfectly valid cache tables for no reason without freeing their
memory.
This series makes Linux a hard requirement for cache-clean-interval
and prints an error message in other systems.
Regards,
Berto
Alberto Garcia (4):
qcow2: Make qcow2_cache_table_release() work only in Linux
qcow2: Allow 'cache-clean-interval' in Linux only
qcow2: Remove stale comment
docs: Specify that cache-clean-interval is only supported in Linux
block/qcow2-cache.c | 6 +++---
block/qcow2.c | 8 ++++++++
docs/qcow2-cache.txt | 5 +++--
3 files changed, 14 insertions(+), 5 deletions(-)
--
2.10.2
- [Qemu-devel] [PATCH for-2.8 0/4] Allow 'cache-clean-interval' in Linux only,
Alberto Garcia <=
- [Qemu-devel] [PATCH 3/4] qcow2: Remove stale comment, Alberto Garcia, 2016/11/25
- [Qemu-devel] [PATCH 4/4] docs: Specify that cache-clean-interval is only supported in Linux, Alberto Garcia, 2016/11/25
- [Qemu-devel] [PATCH 1/4] qcow2: Make qcow2_cache_table_release() work only in Linux, Alberto Garcia, 2016/11/25
- [Qemu-devel] [PATCH 2/4] qcow2: Allow 'cache-clean-interval' in Linux only, Alberto Garcia, 2016/11/25
- Re: [Qemu-devel] [PATCH for-2.8 0/4] Allow 'cache-clean-interval' in Linux only, Kevin Wolf, 2016/11/28