diff options
Diffstat (limited to 'drivers/lightnvm/pblk-core.c')
| -rw-r--r-- | drivers/lightnvm/pblk-core.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index 74b8d9db05e1..e6f42cddc8ec 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c @@ -273,9 +273,10 @@ static void pblk_flush_writer(struct pblk *pblk) { pblk_rb_flush(&pblk->rwb); do { - if (!pblk_rb_read_count(&pblk->rwb)) + if (!pblk_rb_sync_count(&pblk->rwb)) break; + pblk_write_kick(pblk); schedule(); } while (1); } @@ -1350,6 +1351,7 @@ void pblk_pipeline_stop(struct pblk *pblk) return; } + flush_workqueue(pblk->bb_wq); pblk_line_close_meta_sync(pblk); spin_lock(&l_mg->free_lock); @@ -1547,6 +1549,7 @@ void pblk_line_close_meta_sync(struct pblk *pblk) } pblk_wait_for_meta(pblk); + flush_workqueue(pblk->close_wq); } static void pblk_line_should_sync_meta(struct pblk *pblk) |
