• Josef Bacik's avatar
    Btrfs: fix free space cache when there are pinned extents and clusters V2 · 43be2146
    Josef Bacik authored
    I noticed a huge problem with the free space cache that was presenting
    as an early ENOSPC.  Turns out when writing the free space cache out I
    forgot to take into account pinned extents and more importantly
    clusters.  This would result in us leaking free space everytime we
    unmounted the filesystem and remounted it.
    
    I fix this by making sure to check and see if the current block group
    has a cluster and writing out any entries that are in the cluster to the
    cache, as well as writing any pinned extents we currently have to the
    cache since those will be available for us to use the next time the fs
    mounts.
    
    This patch also adds a check to the end of load_free_space_cache to make
    sure we got the right amount of free space cache, and if not make sure
    to clear the cache and re-cache the old fashioned way.
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    43be2146
free-space-cache.c 58.8 KB