aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/lightnvm/pblk-read.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/lightnvm/pblk-read.c b/drivers/lightnvm/pblk-read.c
index b8eb6bdb983b..7b7a04a80d67 100644
--- a/drivers/lightnvm/pblk-read.c
+++ b/drivers/lightnvm/pblk-read.c
@@ -175,11 +175,10 @@ static void pblk_read_check_rand(struct pblk *pblk, struct nvm_rq *rqd,
175 WARN_ONCE(j != rqd->nr_ppas, "pblk: corrupted random request\n"); 175 WARN_ONCE(j != rqd->nr_ppas, "pblk: corrupted random request\n");
176} 176}
177 177
178static void pblk_end_user_read(struct bio *bio) 178static void pblk_end_user_read(struct bio *bio, int error)
179{ 179{
180#ifdef CONFIG_NVM_PBLK_DEBUG 180 if (error && error != NVM_RSP_WARN_HIGHECC)
181 WARN_ONCE(bio->bi_status, "pblk: corrupted read bio\n"); 181 bio_io_error(bio);
182#endif
183 bio_endio(bio); 182 bio_endio(bio);
184} 183}
185 184
@@ -219,7 +218,7 @@ static void pblk_end_io_read(struct nvm_rq *rqd)
219 struct pblk_g_ctx *r_ctx = nvm_rq_to_pdu(rqd); 218 struct pblk_g_ctx *r_ctx = nvm_rq_to_pdu(rqd);
220 struct bio *bio = (struct bio *)r_ctx->private; 219 struct bio *bio = (struct bio *)r_ctx->private;
221 220
222 pblk_end_user_read(bio); 221 pblk_end_user_read(bio, rqd->error);
223 __pblk_end_io_read(pblk, rqd, true); 222 __pblk_end_io_read(pblk, rqd, true);
224} 223}
225 224
@@ -298,7 +297,7 @@ static void pblk_end_partial_read(struct nvm_rq *rqd)
298 rqd->bio = NULL; 297 rqd->bio = NULL;
299 rqd->nr_ppas = nr_secs; 298 rqd->nr_ppas = nr_secs;
300 299
301 bio_endio(bio); 300 pblk_end_user_read(bio, rqd->error);
302 __pblk_end_io_read(pblk, rqd, false); 301 __pblk_end_io_read(pblk, rqd, false);
303} 302}
304 303