mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-21 22:55:12 +00:00
btrfs: set the lockdep class for log tree extent buffers
These are special extent buffers that get rewound in order to lookup the state of the tree at a specific point in time. As such they do not go through the normal initialization paths that set their lockdep class, so handle them appropriately when they are created and before they are locked. CC: stable@vger.kernel.org # 4.4+ Reviewed-by: Filipe Manana <fdmanana@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>
This commit is contained in:
parent
ad24466588
commit
d3beaa253f
1 changed files with 5 additions and 1 deletions
|
@ -1297,6 +1297,8 @@ tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct btrfs_path *path,
|
||||||
btrfs_tree_read_unlock_blocking(eb);
|
btrfs_tree_read_unlock_blocking(eb);
|
||||||
free_extent_buffer(eb);
|
free_extent_buffer(eb);
|
||||||
|
|
||||||
|
btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb_rewin),
|
||||||
|
eb_rewin, btrfs_header_level(eb_rewin));
|
||||||
btrfs_tree_read_lock(eb_rewin);
|
btrfs_tree_read_lock(eb_rewin);
|
||||||
__tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm);
|
__tree_mod_log_rewind(fs_info, eb_rewin, time_seq, tm);
|
||||||
WARN_ON(btrfs_header_nritems(eb_rewin) >
|
WARN_ON(btrfs_header_nritems(eb_rewin) >
|
||||||
|
@ -1370,7 +1372,6 @@ get_old_root(struct btrfs_root *root, u64 time_seq)
|
||||||
|
|
||||||
if (!eb)
|
if (!eb)
|
||||||
return NULL;
|
return NULL;
|
||||||
btrfs_tree_read_lock(eb);
|
|
||||||
if (old_root) {
|
if (old_root) {
|
||||||
btrfs_set_header_bytenr(eb, eb->start);
|
btrfs_set_header_bytenr(eb, eb->start);
|
||||||
btrfs_set_header_backref_rev(eb, BTRFS_MIXED_BACKREF_REV);
|
btrfs_set_header_backref_rev(eb, BTRFS_MIXED_BACKREF_REV);
|
||||||
|
@ -1378,6 +1379,9 @@ get_old_root(struct btrfs_root *root, u64 time_seq)
|
||||||
btrfs_set_header_level(eb, old_root->level);
|
btrfs_set_header_level(eb, old_root->level);
|
||||||
btrfs_set_header_generation(eb, old_generation);
|
btrfs_set_header_generation(eb, old_generation);
|
||||||
}
|
}
|
||||||
|
btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb), eb,
|
||||||
|
btrfs_header_level(eb));
|
||||||
|
btrfs_tree_read_lock(eb);
|
||||||
if (tm)
|
if (tm)
|
||||||
__tree_mod_log_rewind(fs_info, eb, time_seq, tm);
|
__tree_mod_log_rewind(fs_info, eb, time_seq, tm);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Reference in a new issue