Allow 'cache-clean-interval' in Linux only
Status from this message: Thanks, applied to the block branch.
Get series with b4
b4 am [email protected]Versions newest first
Patches in v1 Applied
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | qcow2: Make qcow2_cache_table_release() work only in Linuxblock/ | +3 | 0 replies | |
| 2/4 | qcow2: Allow 'cache-clean-interval' in Linux onlyblock/ | +8 | 0 replies | |
| 3/4 | qcow2: Remove stale commentblock/ | +0 | 0 replies | |
| 4/4 | docs: Specify that cache-clean-interval is only supported in Linuxdocs/ | +3 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [Qemu-devel] [PATCH for-2.8 0/4] Allow 'cache-clean-interval' in Linux only
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:
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(-)
Signature · 1 line
2.10.2