Expose the two new options for controlling the memory usage of the overlap check implementation via QAPI.
Signed-off-by: Max Reitz <mre...@redhat.com> --- qapi/block-core.json | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/qapi/block-core.json b/qapi/block-core.json index 1c17224..99456e6 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -1509,6 +1509,39 @@ 'mode': 'Qcow2OverlapCheckMode' } } ## +# @Qcow2OverlapStructures +# +# Contains options for controlling the behavior of the metadata overlap +# prevention structures. +# +# The primary structure used for overlap check and prevention is a bitmap +# (actually a bytemap) which has one entry per cluster designating the type(s) +# of metadata it contains. In order to save memory, there is an RLE-like +# representation of this bitmap, too. +# +# The whole array of clusters is chunked. The RLE representation of one chunk +# is converted to the equivalent bitmap whenever a cluster in the chunk is +# accessed. The bitmaps are kept for a limited number of chunks (as a cache). On +# cache eviction, the bitmap is converted back to RLE again. +# +# @bitmap-size: #optional size (in bytes) of the bitmap cache, defaults to +# 64 kB +# +# @total-size-limit: #optional maximum total size (in bytes) of all the metadata +# overlap prevention data structures combined; if this limit +# is exceeded, a QCOW2_OVERLAP_CHECK_MEMORY_LIMIT_REACHED +# event will be emitted and some parts of the image may no +# longer be protected against erroneous overwriting of +# metadata by (meta)data of a different kind. Defaults to +# SIZE_MAX. +# +# Since: 2.4 +## +{ 'type': 'Qcow2OverlapStructures', + 'data': { '*bitmap-size': 'int', + '*total-size-limit': 'int' } } + +## # @BlockdevOptionsQcow2 # # Driver specific block device options for qcow2. @@ -1530,6 +1563,9 @@ # @overlap-check: #optional which overlap checks to perform for writes # to the image, defaults to 'cached' (since 2.2) # +# @overlap-structures: #optional options for controlling the behavior of the +# metadata overlap prevention structures (since 2.4) +# # @cache-size: #optional the maximum total size of the L2 table and # refcount block caches in bytes (since 2.2) # @@ -1548,6 +1584,7 @@ '*pass-discard-snapshot': 'bool', '*pass-discard-other': 'bool', '*overlap-check': 'Qcow2OverlapChecks', + '*overlap-structures': 'Qcow2OverlapStructures', '*cache-size': 'int', '*l2-cache-size': 'int', '*refcount-cache-size': 'int' } } -- 2.3.7