Commit d165a7a6 authored by Igor Konopko's avatar Igor Konopko Committed by Jens Axboe
Browse files

lightnvm: pblk: propagate errors when reading meta



Read errors are not correctly propagated. Errors are cleared before
returning control to the io submitter. Change the behaviour such that
all read errors exept high ecc read warning status is returned
appropriately.

Signed-off-by: default avatarIgor Konopko <igor.j.konopko@intel.com>
Reviewed-by: default avatarJavier González <javier@javigon.com>
Reviewed-by: default avatarHans Holmberg <hans.holmberg@cnexlabs.com>
Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 2b0ae81e
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -761,8 +761,10 @@ int pblk_line_smeta_read(struct pblk *pblk, struct pblk_line *line)

	atomic_dec(&pblk->inflight_io);

	if (rqd.error)
	if (rqd.error && rqd.error != NVM_RSP_WARN_HIGHECC) {
		pblk_log_read_err(pblk, &rqd);
		ret = -EIO;
	}

clear_rqd:
	pblk_free_rqd_meta(pblk, &rqd);
@@ -916,8 +918,11 @@ next_rq:

	atomic_dec(&pblk->inflight_io);

	if (rqd.error)
	if (rqd.error && rqd.error != NVM_RSP_WARN_HIGHECC) {
		pblk_log_read_err(pblk, &rqd);
		ret = -EIO;
		goto free_rqd_dma;
	}

	emeta_buf += rq_len;
	left_ppas -= rq_ppas;
+1 −1
Original line number Diff line number Diff line
@@ -458,7 +458,7 @@ retry_rq:
	atomic_dec(&pblk->inflight_io);

	/* If a read fails, do a best effort by padding the line and retrying */
	if (rqd->error) {
	if (rqd->error && rqd->error != NVM_RSP_WARN_HIGHECC) {
		int pad_distance, ret;

		if (padded) {