diff options
-rw-r--r-- | fs/bcachefs/fast_list.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/bcachefs/fast_list.c b/fs/bcachefs/fast_list.c index 2faec143eb31..b52f264318d8 100644 --- a/fs/bcachefs/fast_list.c +++ b/fs/bcachefs/fast_list.c @@ -115,22 +115,21 @@ int fast_list_add(struct fast_list *l, void *item) void fast_list_remove(struct fast_list *l, unsigned idx) { u32 entries[16], nr = 0; - unsigned long flags; if (!idx) return; *genradix_ptr_inlined(&l->items, idx) = NULL; - local_irq_save(flags); - struct fast_list_pcpu *lp = this_cpu_ptr(l->buffer); + scoped_guard(irqsave) { + struct fast_list_pcpu *lp = this_cpu_ptr(l->buffer); - if (unlikely(lp->nr == ARRAY_SIZE(lp->entries))) - while (nr < ARRAY_SIZE(entries)) - entries[nr++] = lp->entries[--lp->nr]; + if (unlikely(lp->nr == ARRAY_SIZE(lp->entries))) + while (nr < ARRAY_SIZE(entries)) + entries[nr++] = lp->entries[--lp->nr]; - lp->entries[lp->nr++] = idx; - local_irq_restore(flags); + lp->entries[lp->nr++] = idx; + } if (unlikely(nr)) while (nr) |