summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/journal.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
index 9e09b86df1df..91bc4ac557e6 100644
--- a/drivers/md/bcache/journal.c
+++ b/drivers/md/bcache/journal.c
@@ -199,8 +199,6 @@ redo_peek:
closure_sync(&cl);
- mutex_lock(&c->btree_interior_update_lock);
-
for (i = 0;; i++) {
struct btree_interior_update *as;
struct pending_btree_node_free *d;
@@ -212,6 +210,8 @@ redo_peek:
}
n = bl->entries[i];
mutex_unlock(&j->blacklist_lock);
+redo_wait:
+ mutex_lock(&c->btree_interior_update_lock);
/*
* Is the node on the list of pending interior node updates -
@@ -225,11 +225,11 @@ redo_peek:
closure_wait(&as->wait, &cl);
mutex_unlock(&c->btree_interior_update_lock);
closure_sync(&cl);
- break;
+ goto redo_wait;
}
- }
- mutex_unlock(&c->btree_interior_update_lock);
+ mutex_unlock(&c->btree_interior_update_lock);
+ }
mutex_lock(&j->blacklist_lock);