@@ -112,9 +112,9 @@ command-line, or the 'blockdev-add' QMP command.
There are three options available, and all of them take bytes:
-"l2-cache-size": maximum size of the L2 table cache
-"refcount-cache-size": maximum size of the refcount block cache
-"cache-size": maximum size of both caches combined
+"l2-cache-size": maximal size of the L2 table cache
+"refcount-cache-size": maximal size of the refcount block cache
+"cache-size": maximal size of both caches combined
There are a few things that need to be taken into account:
@@ -130,6 +130,9 @@ There are a few things that need to be taken into account:
memory as possible to the L2 cache before increasing the refcount
cache size.
+ - At most two of "l2-cache-size", "refcount-cache-size", and "cache-size"
+ can be set simultaneously.
+
Unlike L2 tables, refcount blocks are not used during normal I/O but
only during allocations and internal snapshots. In most cases they are
accessed sequentially (even during random guest I/O) so increasing the
@@ -2808,10 +2808,10 @@
# @overlap-check: which overlap checks to perform for writes
# to the image, defaults to 'cached' (since 2.2)
#
-# @cache-size: the maximum total size of the L2 table and
+# @cache-size: the maximal total size of the L2 table and
# refcount block caches in bytes (since 2.2)
#
-# @l2-cache-size: the maximum size of the L2 table cache in
+# @l2-cache-size: the maximal size of the L2 table cache in
# bytes (since 2.2)
#
# @l2-cache-entry-size: the size of each entry in the L2 cache in
@@ -2819,7 +2819,7 @@
# and the cluster size. The default value is
# the cluster size (since 2.12)
#
-# @refcount-cache-size: the maximum size of the refcount block cache
+# @refcount-cache-size: the maximal size of the refcount block cache
# in bytes (since 2.2)
#
# @cache-clean-interval: clean unused entries in the L2 and refcount
@@ -751,16 +751,19 @@ Whether to enable the lazy refcounts feature (on/off; default is taken from the
image file)
@item cache-size
-The maximum total size of the L2 table and refcount block caches in bytes
-(default: 1048576 bytes or 8 clusters, whichever is larger)
+The maximal total size of the L2 table and refcount block caches in bytes
+(default: the sum of l2-cache-size and refcount-cache-size)
@item l2-cache-size
-The maximum size of the L2 table cache in bytes
-(default: 4/5 of the total cache size)
+The maximal size of the L2 table cache in bytes
+(default: if cache-size is not defined - 1048576 bytes or 8 clusters, whichever
+is larger; otherwise, as large as possible or needed within the cache-size,
+while permitting the requested or the minimal refcount cache size)
@item refcount-cache-size
-The maximum size of the refcount block cache in bytes
-(default: 1/5 of the total cache size)
+The maximal size of the refcount block cache in bytes
+(default: 4 times the cluster size; or if cache-size is specified, the part of
+it which is not used for the L2 cache)
@item cache-clean-interval
Clean unused entries in the L2 and refcount caches. The interval is in seconds.
Signed-off-by: Leonid Bloch <lbloch@janustech.com> --- docs/qcow2-cache.txt | 9 ++++++--- qapi/block-core.json | 6 +++--- qemu-options.hx | 15 +++++++++------ 3 files changed, 18 insertions(+), 12 deletions(-)