diff options
author | Kai Krakow <kai@kaishome.de> | 2021-02-10 13:07:27 +0800 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-02-10 08:06:00 -0700 |
commit | afe78ab46f638ecdf80a35b122ffc92c20d9ae5d (patch) | |
tree | 8c7f39e4bb4d89486a814c48002d4cd0eb843069 /drivers/md/bcache/journal.c | |
parent | d797bd9897e3559eb48d68368550d637d32e468c (diff) | |
download | lwn-afe78ab46f638ecdf80a35b122ffc92c20d9ae5d.tar.gz lwn-afe78ab46f638ecdf80a35b122ffc92c20d9ae5d.zip |
bcache: Move journal work to new flush wq
This is potentially long running and not latency sensitive, let's get
it out of the way of other latency sensitive events.
As observed in the previous commit, the `system_wq` comes easily
congested by bcache, and this fixes a few more stalls I was observing
every once in a while.
Let's not make this `WQ_MEM_RECLAIM` as it showed to reduce performance
of boot and file system operations in my tests. Also, without
`WQ_MEM_RECLAIM`, I no longer see desktop stalls. This matches the
previous behavior as `system_wq` also does no memory reclaim:
> // workqueue.c:
> system_wq = alloc_workqueue("events", 0, 0);
Cc: Coly Li <colyli@suse.de>
Cc: stable@vger.kernel.org # 5.4+
Signed-off-by: Kai Krakow <kai@kaishome.de>
Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/md/bcache/journal.c')
-rw-r--r-- | drivers/md/bcache/journal.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c index aefbdb7e003b..c6613e817333 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_flush_wq, &c->journal.work, + msecs_to_jiffies(c->journal_delay_ms)); spin_unlock(&c->journal.lock); } else { spin_unlock(&c->journal.lock); |