]> Pileus Git - ~andy/linux/commitdiff
Btrfs: don't loop forever if we can't run because of the tree mod log
authorJosef Bacik <jbacik@fb.com>
Fri, 7 Feb 2014 18:57:59 +0000 (13:57 -0500)
committerChris Mason <clm@fb.com>
Sun, 9 Feb 2014 01:57:15 +0000 (17:57 -0800)
A user reported a 100% cpu hang with my new delayed ref code.  Turns out I
forgot to increase the count check when we can't run a delayed ref because of
the tree mod log.  If we can't run any delayed refs during this there is no
point in continuing to look, and we need to break out.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/extent-tree.c

index 9c9ecc93ae2c3152d85cb2e15eeabd7bec95160f..32312e09f0f5999d05aaabafceebcce62b685568 100644 (file)
@@ -2385,6 +2385,7 @@ static noinline int __btrfs_run_delayed_refs(struct btrfs_trans_handle *trans,
                        spin_unlock(&delayed_refs->lock);
                        locked_ref = NULL;
                        cond_resched();
+                       count++;
                        continue;
                }