btrfs: do not check delayed items are empty for single transaction cleanup
authorJosef Bacik <josef@toxicpanda.com>
Thu, 13 Feb 2020 15:47:29 +0000 (10:47 -0500)
committerDavid Sterba <dsterba@suse.com>
Tue, 18 Feb 2020 23:36:41 +0000 (00:36 +0100)
btrfs_assert_delayed_root_empty() will check if the delayed root is
completely empty, but this is a filesystem-wide check.  On cleanup we
may have allowed other transactions to begin, for whatever reason, and
thus the delayed root is not empty.

So remove this check from cleanup_one_transation().  This however can
stay in btrfs_cleanup_transaction(), because it checks only after all of
the transactions have been properly cleaned up, and thus is valid.

CC: stable@vger.kernel.org # 4.4+
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 197352f23534806c67ab19e2f73112cd6626c674..c6c9a6a8e6c84176c3c8223827fc5fcdc9e6bd79 100644 (file)
@@ -4503,7 +4503,6 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans,
        wake_up(&fs_info->transaction_wait);
 
        btrfs_destroy_delayed_inodes(fs_info);
-       btrfs_assert_delayed_root_empty(fs_info);
 
        btrfs_destroy_marked_extents(fs_info, &cur_trans->dirty_pages,
                                     EXTENT_DIRTY);