History

btrfs: fix WARNING in btrfs_select_ref_head()

This issue was found when testing in-band dedupe enospc behaviour, sometimes run_one_delayed_ref() may fail for enospc reason, then __btrfs_run_delayed_refs()will return, but forget to add num_heads_read back, which will trigger "WARN_ON(delayed_refs->num_heads_ready == 0)" in btrfs_select_ref_head().

Wang Xiaoguang committed 10 years ago

Commit 9d1032c1 parent 9c894691 file · +3 −0Browse files

Unified · Split

fs/btrfs/extent-tree.c+3−0
@@ -2647,7 +2647,10 @@ static noinline int __btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, · 2646 unmodified lines
26472647
26482648 btrfs_free_delayed_extent_op(extent_op);
26492649 if (ret) {
2650+ spin_lock(&delayed_refs->lock);
26502651 locked_ref->processing = 0;
2652+ delayed_refs->num_heads_ready++;
2653+ spin_unlock(&delayed_refs->lock);
26512654 btrfs_delayed_ref_unlock(locked_ref);
26522655 btrfs_put_delayed_ref(ref);
26532656 btrfs_debug(fs_info, "run_one_delayed_ref returned %d",

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t