Skip to content

Commit 612e111

Browse files
author
Kent Overstreet
committed
bcachefs: Add gfp flags param to bch2_prt_task_backtrace()
Fixes: e6a2566 ("bcachefs: Better journal tracepoints") Signed-off-by: Kent Overstreet <[email protected]> Reported-by: smatch
1 parent 6613476 commit 612e111

File tree

5 files changed

+11
-11
lines changed

5 files changed

+11
-11
lines changed

fs/bcachefs/btree_locking.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ static noinline void print_cycle(struct printbuf *out, struct lock_graph *g)
9292
continue;
9393

9494
bch2_btree_trans_to_text(out, i->trans);
95-
bch2_prt_task_backtrace(out, task, i == g->g ? 5 : 1);
95+
bch2_prt_task_backtrace(out, task, i == g->g ? 5 : 1, GFP_NOWAIT);
9696
}
9797
}
9898

@@ -227,7 +227,7 @@ static noinline int break_cycle(struct lock_graph *g, struct printbuf *cycle)
227227
prt_printf(&buf, "backtrace:");
228228
prt_newline(&buf);
229229
printbuf_indent_add(&buf, 2);
230-
bch2_prt_task_backtrace(&buf, trans->locking_wait.task, 2);
230+
bch2_prt_task_backtrace(&buf, trans->locking_wait.task, 2, GFP_NOWAIT);
231231
printbuf_indent_sub(&buf, 2);
232232
prt_newline(&buf);
233233
}

fs/bcachefs/debug.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ static ssize_t bch2_btree_transactions_read(struct file *file, char __user *buf,
627627
prt_printf(&i->buf, "backtrace:");
628628
prt_newline(&i->buf);
629629
printbuf_indent_add(&i->buf, 2);
630-
bch2_prt_task_backtrace(&i->buf, task, 0);
630+
bch2_prt_task_backtrace(&i->buf, task, 0, GFP_KERNEL);
631631
printbuf_indent_sub(&i->buf, 2);
632632
prt_newline(&i->buf);
633633

fs/bcachefs/journal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ static void __journal_entry_close(struct journal *j, unsigned closed_val, bool t
233233
prt_str(&pbuf, "entry size: ");
234234
prt_human_readable_u64(&pbuf, vstruct_bytes(buf->data));
235235
prt_newline(&pbuf);
236-
bch2_prt_task_backtrace(&pbuf, current, 1);
236+
bch2_prt_task_backtrace(&pbuf, current, 1, GFP_NOWAIT);
237237
trace_journal_entry_close(c, pbuf.buf);
238238
printbuf_exit(&pbuf);
239239
}

fs/bcachefs/util.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,14 +272,14 @@ void bch2_print_string_as_lines(const char *prefix, const char *lines)
272272
console_unlock();
273273
}
274274

275-
int bch2_save_backtrace(bch_stacktrace *stack, struct task_struct *task, unsigned skipnr)
275+
int bch2_save_backtrace(bch_stacktrace *stack, struct task_struct *task, unsigned skipnr,
276+
gfp_t gfp)
276277
{
277278
#ifdef CONFIG_STACKTRACE
278279
unsigned nr_entries = 0;
279-
int ret = 0;
280280

281281
stack->nr = 0;
282-
ret = darray_make_room(stack, 32);
282+
int ret = darray_make_room_gfp(stack, 32, gfp);
283283
if (ret)
284284
return ret;
285285

@@ -308,10 +308,10 @@ void bch2_prt_backtrace(struct printbuf *out, bch_stacktrace *stack)
308308
}
309309
}
310310

311-
int bch2_prt_task_backtrace(struct printbuf *out, struct task_struct *task, unsigned skipnr)
311+
int bch2_prt_task_backtrace(struct printbuf *out, struct task_struct *task, unsigned skipnr, gfp_t gfp)
312312
{
313313
bch_stacktrace stack = { 0 };
314-
int ret = bch2_save_backtrace(&stack, task, skipnr + 1);
314+
int ret = bch2_save_backtrace(&stack, task, skipnr + 1, gfp);
315315

316316
bch2_prt_backtrace(out, &stack);
317317
darray_exit(&stack);

fs/bcachefs/util.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,9 @@ void bch2_prt_u64_base2(struct printbuf *, u64);
348348
void bch2_print_string_as_lines(const char *prefix, const char *lines);
349349

350350
typedef DARRAY(unsigned long) bch_stacktrace;
351-
int bch2_save_backtrace(bch_stacktrace *stack, struct task_struct *, unsigned);
351+
int bch2_save_backtrace(bch_stacktrace *stack, struct task_struct *, unsigned, gfp_t);
352352
void bch2_prt_backtrace(struct printbuf *, bch_stacktrace *);
353-
int bch2_prt_task_backtrace(struct printbuf *, struct task_struct *, unsigned);
353+
int bch2_prt_task_backtrace(struct printbuf *, struct task_struct *, unsigned, gfp_t);
354354

355355
static inline void prt_bdevname(struct printbuf *out, struct block_device *bdev)
356356
{

0 commit comments

Comments
 (0)