diff options
author | Javier González <jg@lightnvm.io> | 2017-06-30 18:56:40 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-06-30 20:08:18 +0300 |
commit | ee8d5c1ad54e48ec44b6ae9cf91144fcab6ebf83 (patch) | |
tree | cd5e6be51067d2eb47fa42c031a723644593d94f /drivers/lightnvm/pblk-init.c | |
parent | de54e703a4229e4688eb77b32b1c27861384e22a (diff) | |
download | linux-ee8d5c1ad54e48ec44b6ae9cf91144fcab6ebf83.tar.xz |
lightnvm: pblk: remove target using async. I/Os
When removing a pblk instance, pad the current line using asynchronous
I/O. This reduces the removal time from ~1 minute in the worst case to a
couple of seconds.
Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r-- | drivers/lightnvm/pblk-init.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index b3fc310aa51c..025d8fe52154 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c @@ -841,6 +841,15 @@ static int pblk_writer_init(struct pblk *pblk) static void pblk_writer_stop(struct pblk *pblk) { + /* The pipeline must be stopped and the write buffer emptied before the + * write thread is stopped + */ + WARN(pblk_rb_read_count(&pblk->rwb), + "Stopping not fully persisted write buffer\n"); + + WARN(pblk_rb_sync_count(&pblk->rwb), + "Stopping not fully synced write buffer\n"); + if (pblk->writer_ts) kthread_stop(pblk->writer_ts); del_timer(&pblk->wtimer); |