diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
| -rw-r--r-- | fs/btrfs/extent-tree.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 4b5a1e1bdefb..6e1d36702ff7 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
| @@ -2347,12 +2347,10 @@ next: | |||
| 2347 | return count; | 2347 | return count; |
| 2348 | } | 2348 | } |
| 2349 | 2349 | ||
| 2350 | |||
| 2351 | static void wait_for_more_refs(struct btrfs_delayed_ref_root *delayed_refs, | 2350 | static void wait_for_more_refs(struct btrfs_delayed_ref_root *delayed_refs, |
| 2352 | unsigned long num_refs) | 2351 | unsigned long num_refs, |
| 2352 | struct list_head *first_seq) | ||
| 2353 | { | 2353 | { |
| 2354 | struct list_head *first_seq = delayed_refs->seq_head.next; | ||
| 2355 | |||
| 2356 | spin_unlock(&delayed_refs->lock); | 2354 | spin_unlock(&delayed_refs->lock); |
| 2357 | pr_debug("waiting for more refs (num %ld, first %p)\n", | 2355 | pr_debug("waiting for more refs (num %ld, first %p)\n", |
| 2358 | num_refs, first_seq); | 2356 | num_refs, first_seq); |
| @@ -2381,6 +2379,7 @@ int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, | |||
| 2381 | struct btrfs_delayed_ref_root *delayed_refs; | 2379 | struct btrfs_delayed_ref_root *delayed_refs; |
| 2382 | struct btrfs_delayed_ref_node *ref; | 2380 | struct btrfs_delayed_ref_node *ref; |
| 2383 | struct list_head cluster; | 2381 | struct list_head cluster; |
| 2382 | struct list_head *first_seq = NULL; | ||
| 2384 | int ret; | 2383 | int ret; |
| 2385 | u64 delayed_start; | 2384 | u64 delayed_start; |
| 2386 | int run_all = count == (unsigned long)-1; | 2385 | int run_all = count == (unsigned long)-1; |
| @@ -2436,8 +2435,10 @@ again: | |||
| 2436 | */ | 2435 | */ |
| 2437 | consider_waiting = 1; | 2436 | consider_waiting = 1; |
| 2438 | num_refs = delayed_refs->num_entries; | 2437 | num_refs = delayed_refs->num_entries; |
| 2438 | first_seq = root->fs_info->tree_mod_seq_list.next; | ||
| 2439 | } else { | 2439 | } else { |
| 2440 | wait_for_more_refs(delayed_refs, num_refs); | 2440 | wait_for_more_refs(delayed_refs, |
| 2441 | num_refs, first_seq); | ||
| 2441 | /* | 2442 | /* |
| 2442 | * after waiting, things have changed. we | 2443 | * after waiting, things have changed. we |
| 2443 | * dropped the lock and someone else might have | 2444 | * dropped the lock and someone else might have |
