summaryrefslogtreecommitdiff
path: root/libbcachefs/alloc_foreground.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/alloc_foreground.c')
-rw-r--r--libbcachefs/alloc_foreground.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libbcachefs/alloc_foreground.c b/libbcachefs/alloc_foreground.c
index cabf866c..1c843a8f 100644
--- a/libbcachefs/alloc_foreground.c
+++ b/libbcachefs/alloc_foreground.c
@@ -662,8 +662,14 @@ alloc:
goto alloc;
}
err:
- if (!ob)
+ if (!ob) {
+ rcu_read_lock();
+ struct task_struct *t = rcu_dereference(c->copygc_thread);
+ if (t)
+ wake_up_process(t);
+ rcu_read_unlock();
ob = ERR_PTR(-BCH_ERR_no_buckets_found);
+ }
if (!IS_ERR(ob))
ob->data_type = data_type;