mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
Btrfs: correctly set profile flags on seqlock retry
If we had to retry on the profiles seqlock (due to a concurrent write), we would set bits on the input flags that corresponded both to the current profile and to previous values of the profile. Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
9ce49a0b4f
commit
f8213bdc89
@ -3543,11 +3543,13 @@ static u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags)
|
||||
return extended_to_chunk(flags | tmp);
|
||||
}
|
||||
|
||||
static u64 get_alloc_profile(struct btrfs_root *root, u64 flags)
|
||||
static u64 get_alloc_profile(struct btrfs_root *root, u64 orig_flags)
|
||||
{
|
||||
unsigned seq;
|
||||
u64 flags;
|
||||
|
||||
do {
|
||||
flags = orig_flags;
|
||||
seq = read_seqbegin(&root->fs_info->profiles_lock);
|
||||
|
||||
if (flags & BTRFS_BLOCK_GROUP_DATA)
|
||||
|
Loading…
Reference in New Issue
Block a user