diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2015-10-26 07:11:18 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-10-27 03:44:39 +0100 |
commit | 5846a3c26873e86b034c702a8bc202aa76082369 (patch) | |
tree | 8495bf1ae8236d363579751a63414ba31c498a0d /kernel/hung_task.c | |
parent | btrfs: clear PF_NOFREEZE in cleaner_kthread() (diff) | |
download | linux-5846a3c26873e86b034c702a8bc202aa76082369.tar.xz linux-5846a3c26873e86b034c702a8bc202aa76082369.zip |
btrfs: qgroup: Fix a race in delayed_ref which leads to abort trans
Between btrfs_allocerved_file_extent() and
btrfs_add_delayed_qgroup_reserve(), there is a window that delayed_refs
are run and delayed ref head maybe freed before
btrfs_add_delayed_qgroup_reserve().
This will cause btrfs_dad_delayed_qgroup_reserve() to return -ENOENT,
and cause transaction to be aborted.
This patch will record qgroup reserve space info into delayed_ref_head
at btrfs_add_delayed_ref(), to eliminate the race window.
Reported-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'kernel/hung_task.c')
0 files changed, 0 insertions, 0 deletions