dm writecache: have ssd writeback wait if the kcopyd workqueue is busy

Make dm-writecache wait if the kcopyd workqueue is busy (as will
happen if waiting for page allocation or inside submit_bio).

This change improves performance of "mkfs.ext2" by approximately 20%
on one testbed.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Mikulas Patocka
2021-06-15 14:17:35 -04:00
committed by Mike Snitzer
parent 8c77f1cb84
commit 293128b1ef
3 changed files with 12 additions and 0 deletions

View File

@@ -1812,6 +1812,11 @@ static void writecache_writeback(struct work_struct *work)
struct writeback_list wbl;
unsigned long n_walked;
if (!WC_MODE_PMEM(wc)) {
/* Wait for any active kcopyd work on behalf of ssd writeback */
dm_kcopyd_client_flush(wc->dm_kcopyd);
}
wc_lock(wc);
restart:
if (writecache_has_error(wc)) {