• Josef Bacik's avatar
    Btrfs: make sure to unset trans->block_rsv before running delayed refs · 9c8d86db
    Josef Bacik authored
    Checksums are charged in 2 different ways.  The first case is when we're writing
    to the disk, we account for the new checksums with the delalloc block rsv.  In
    order for this to work we check if we're allocating a block for the csum root
    and if trans->block_rsv == the delalloc block rsv.  But when we're deleting the
    csums because of cow, this is charged to the global block rsv, and is done when
    we run the delayed refs.  So we need to make sure that trans->block_rsv == NULL
    when running the delayed refs.  So set it to NULL and reset it in
    should_end_transaction, and set it to NULL in commit_transaction.  This got rid
    of the ridiculous amount of warnings I was seeing when trying to do a balance.
    Thanks,
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    9c8d86db
transaction.c 37 KB