Hi You can add this to the kernel that will be used for testing writecache. Another suggestion is to try to use the dm table argument "writeback_jobs" - for example: dmsetup create wc --table "0 `blockdev --getsize /dev/vdb` writecache s /dev/vdb /dev/vdc 4096 2 writeback_jobs 65536" It limits the number of work that is submitted to kcopyd and it may improve latency. Mikulas Index: linux-2.6/drivers/md/dm-writecache.c =================================================================== --- linux-2.6.orig/drivers/md/dm-writecache.c +++ linux-2.6/drivers/md/dm-writecache.c @@ -1538,14 +1538,15 @@ static void writecache_copy_endio(int re { struct copy_struct *c = ptr; struct dm_writecache *wc = c->wc; + unsigned long flags; c->error = likely(!(read_err | write_err)) ? 0 : -EIO; - raw_spin_lock_irq(&wc->endio_list_lock); + raw_spin_lock_irqsave(&wc->endio_list_lock, flags); if (unlikely(list_empty(&wc->endio_list))) wake_up_process(wc->endio_thread); list_add_tail(&c->endio_entry, &wc->endio_list); - raw_spin_unlock_irq(&wc->endio_list_lock); + raw_spin_unlock_irqrestore(&wc->endio_list_lock, flags); } static void __writecache_endio_pmem(struct dm_writecache *wc, struct list_head *list) @@ -1799,7 +1800,7 @@ static void __writecache_writeback_ssd(s from.count = to.count = wc->data_device_sectors - to.sector; } - dm_kcopyd_copy(wc->dm_kcopyd, &from, 1, &to, 0, writecache_copy_endio, c); + dm_kcopyd_copy(wc->dm_kcopyd, &from, 1, &to, BIT(DM_KCOPYD_EARLY_CALLBACK), writecache_copy_endio, c); __writeback_throttle(wc, wbl); } -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel