Please ignore this patch with missing IRP, will re-post to the intro mail. Am Mi., 27. Jan. 2021 um 14:24 Uhr schrieb Kai Krakow <kai@xxxxxxxxxxx>: > > This is potentially long running and not latency sensitive, let's get > it out of the way of other latency sensitive events. > --- > drivers/md/bcache/bcache.h | 1 + > drivers/md/bcache/journal.c | 4 ++-- > drivers/md/bcache/super.c | 7 +++++++ > 3 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/bcache/bcache.h b/drivers/md/bcache/bcache.h > index b1ed16c7a534..70565ed5732d 100644 > --- a/drivers/md/bcache/bcache.h > +++ b/drivers/md/bcache/bcache.h > @@ -1001,6 +1001,7 @@ void bch_write_bdev_super(struct cached_dev *dc, struct closure *parent); > > extern struct workqueue_struct *bcache_wq; > extern struct workqueue_struct *bch_journal_wq; > +extern struct workqueue_struct *bch_background_wq; > extern struct mutex bch_register_lock; > extern struct list_head bch_cache_sets; > > diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c > index aefbdb7e003b..942e97dd1755 100644 > --- a/drivers/md/bcache/journal.c > +++ b/drivers/md/bcache/journal.c > @@ -932,8 +932,8 @@ atomic_t *bch_journal(struct cache_set *c, > journal_try_write(c); > } else if (!w->dirty) { > w->dirty = true; > - schedule_delayed_work(&c->journal.work, > - msecs_to_jiffies(c->journal_delay_ms)); > + queue_delayed_work(bch_background_wq, &c->journal.work, > + msecs_to_jiffies(c->journal_delay_ms)); > spin_unlock(&c->journal.lock); > } else { > spin_unlock(&c->journal.lock); > diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c > index dc4fe7eeda81..9e1481917ce6 100644 > --- a/drivers/md/bcache/super.c > +++ b/drivers/md/bcache/super.c > @@ -49,6 +49,7 @@ static int bcache_major; > static DEFINE_IDA(bcache_device_idx); > static wait_queue_head_t unregister_wait; > struct workqueue_struct *bcache_wq; > +struct workqueue_struct *bch_background_wq; > struct workqueue_struct *bch_journal_wq; > > > @@ -2822,6 +2823,8 @@ static void bcache_exit(void) > destroy_workqueue(bcache_wq); > if (bch_journal_wq) > destroy_workqueue(bch_journal_wq); > + if (bch_background_wq) > + destroy_workqueue(bch_background_wq); > > if (bcache_major) > unregister_blkdev(bcache_major, "bcache"); > @@ -2884,6 +2887,10 @@ static int __init bcache_init(void) > if (bch_btree_init()) > goto err; > > + bch_background_wq = alloc_workqueue("bch_background", 0, 0); > + if (!bch_background_wq) > + goto err; > + > bch_journal_wq = alloc_workqueue("bch_journal", WQ_MEM_RECLAIM, 0); > if (!bch_journal_wq) > goto err; > -- > 2.26.2 >