Commit f2fb7298 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba

btrfs: Mark pinned log extents as excluded

In preparation to making pinned extents per-transaction ensure that log
such extents are always excluded from caching. To achieve this in
addition to marking them via btrfs_pin_extent_for_log_replay they also
need to be marked with btrfs_add_excluded_extent to prevent log tree
extent buffer being loaded by the free space caching thread. That's
required since log tree blocks are not recorded in the extent tree, hence
they always look free.
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 6b45f641
...@@ -2633,6 +2633,8 @@ int btrfs_pin_extent_for_log_replay(struct btrfs_trans_handle *trans, ...@@ -2633,6 +2633,8 @@ int btrfs_pin_extent_for_log_replay(struct btrfs_trans_handle *trans,
struct btrfs_block_group *cache; struct btrfs_block_group *cache;
int ret; int ret;
btrfs_add_excluded_extent(trans->fs_info, bytenr, num_bytes);
cache = btrfs_lookup_block_group(trans->fs_info, bytenr); cache = btrfs_lookup_block_group(trans->fs_info, bytenr);
if (!cache) if (!cache)
return -EINVAL; return -EINVAL;
...@@ -2919,6 +2921,12 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans) ...@@ -2919,6 +2921,12 @@ int btrfs_finish_extent_commit(struct btrfs_trans_handle *trans)
mutex_unlock(&fs_info->unused_bg_unpin_mutex); mutex_unlock(&fs_info->unused_bg_unpin_mutex);
break; break;
} }
if (test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags)) {
clear_extent_bits(&fs_info->freed_extents[0], start,
end, EXTENT_UPTODATE);
clear_extent_bits(&fs_info->freed_extents[1], start,
end, EXTENT_UPTODATE);
}
if (btrfs_test_opt(fs_info, DISCARD_SYNC)) if (btrfs_test_opt(fs_info, DISCARD_SYNC))
ret = btrfs_discard_extent(fs_info, start, ret = btrfs_discard_extent(fs_info, start,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment