Skip to content
  • Kevin Wolf's avatar
    qcow2: Add QcowCache · 49381094
    Kevin Wolf authored
    
    
    This adds some new cache functions to qcow2 which can be used for caching
    refcount blocks and L2 tables. When used with cache=writethrough they work
    like the old caching code which is spread all over qcow2, so for this case we
    have merely a cleanup.
    
    The interesting case is with writeback caching (this includes cache=none) where
    data isn't written to disk immediately but only kept in cache initially. This
    leads to some form of metadata write batching which avoids the current "write
    to refcount block, flush, write to L2 table" pattern for each single request
    when a lot of cluster allocations happen. Instead, cache entries are only
    written out if its required to maintain the right order. In the pure cluster
    allocation case this means that all metadata updates for requests are done in
    memory initially and on sync, first the refcount blocks are written to disk,
    then fsync, then L2 tables.
    
    This improves performance of scenarios with lots of cluster allocations
    noticably (e.g. installation or after taking a snapshot).
    
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    49381094