X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=drivers%2Flightnvm%2Fpblk-cache.c;h=024a8fc93069e74f4a84f6efcd1ac356fc2667c2;hb=588726d3ec68b66be2e2881d2b85060ff383078a;hp=59bcea88db842f93ffca0a7d19cde803cbf327c5;hpb=23ea3f62f3f90caaa7b4bf32690c341101228cca;p=linux-block.git diff --git a/drivers/lightnvm/pblk-cache.c b/drivers/lightnvm/pblk-cache.c index 59bcea88db84..024a8fc93069 100644 --- a/drivers/lightnvm/pblk-cache.c +++ b/drivers/lightnvm/pblk-cache.c @@ -31,9 +31,13 @@ int pblk_write_to_cache(struct pblk *pblk, struct bio *bio, unsigned long flags) */ retry: ret = pblk_rb_may_write_user(&pblk->rwb, bio, nr_entries, &bpos); - if (ret == NVM_IO_REQUEUE) { + switch (ret) { + case NVM_IO_REQUEUE: io_schedule(); goto retry; + case NVM_IO_ERR: + pblk_pipeline_stop(pblk); + goto out; } if (unlikely(!bio_has_data(bio))) @@ -58,6 +62,8 @@ retry: atomic_long_add(nr_entries, &pblk->req_writes); #endif + pblk_rl_inserted(&pblk->rl, nr_entries); + out: pblk_write_should_kick(pblk); return ret;