aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJavier González <javier@cnexlabs.com>2018-01-05 08:16:16 -0500
committerJens Axboe <axboe@kernel.dk>2018-01-05 10:50:12 -0500
commit8f554597e00abe04fd1f37c351b38aff33c37fc9 (patch)
tree08bc72eadc985c710bede032ddd69f47be41a564
parent5d201f07204893c02ef85d562bfcc71299f06f60 (diff)
lightnvm: pblk: do not log recovery read errors
On scan recovery, reads can fail. This happens because the first page for each line is read in order to determined if the line has been used (and thus needs to be recovered), or not. This can lead to "empty page" read errors. Since these errors are normal, do not log them, as they are confusing when reviewing the logs. Signed-off-by: Javier González <javier@cnexlabs.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/lightnvm/pblk-core.c6
-rw-r--r--drivers/lightnvm/pblk.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
index 5ec7ad68ff38..0487b9340c1d 100644
--- a/drivers/lightnvm/pblk-core.c
+++ b/drivers/lightnvm/pblk-core.c
@@ -742,7 +742,7 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, struct pblk_line *line,
742 cmd_op = NVM_OP_PWRITE; 742 cmd_op = NVM_OP_PWRITE;
743 flags = pblk_set_progr_mode(pblk, PBLK_WRITE); 743 flags = pblk_set_progr_mode(pblk, PBLK_WRITE);
744 lba_list = emeta_to_lbas(pblk, line->emeta->buf); 744 lba_list = emeta_to_lbas(pblk, line->emeta->buf);
745 } else if (dir == PBLK_READ) { 745 } else if (dir == PBLK_READ_RECOV || dir == PBLK_READ) {
746 bio_op = REQ_OP_READ; 746 bio_op = REQ_OP_READ;
747 cmd_op = NVM_OP_PREAD; 747 cmd_op = NVM_OP_PREAD;
748 flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL); 748 flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL);
@@ -802,7 +802,7 @@ static int pblk_line_submit_smeta_io(struct pblk *pblk, struct pblk_line *line,
802 if (rqd.error) { 802 if (rqd.error) {
803 if (dir == PBLK_WRITE) 803 if (dir == PBLK_WRITE)
804 pblk_log_write_err(pblk, &rqd); 804 pblk_log_write_err(pblk, &rqd);
805 else 805 else if (dir == PBLK_READ)
806 pblk_log_read_err(pblk, &rqd); 806 pblk_log_read_err(pblk, &rqd);
807 } 807 }
808 808
@@ -816,7 +816,7 @@ int pblk_line_read_smeta(struct pblk *pblk, struct pblk_line *line)
816{ 816{
817 u64 bpaddr = pblk_line_smeta_start(pblk, line); 817 u64 bpaddr = pblk_line_smeta_start(pblk, line);
818 818
819 return pblk_line_submit_smeta_io(pblk, line, bpaddr, PBLK_READ); 819 return pblk_line_submit_smeta_io(pblk, line, bpaddr, PBLK_READ_RECOV);
820} 820}
821 821
822int pblk_line_read_emeta(struct pblk *pblk, struct pblk_line *line, 822int pblk_line_read_emeta(struct pblk *pblk, struct pblk_line *line,
diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index 19e622c65e92..93ec4fd2c26e 100644
--- a/drivers/lightnvm/pblk.h
+++ b/drivers/lightnvm/pblk.h
@@ -60,6 +60,7 @@ enum {
60 PBLK_READ = READ, 60 PBLK_READ = READ,
61 PBLK_WRITE = WRITE,/* Write from write buffer */ 61 PBLK_WRITE = WRITE,/* Write from write buffer */
62 PBLK_WRITE_INT, /* Internal write - no write buffer */ 62 PBLK_WRITE_INT, /* Internal write - no write buffer */
63 PBLK_READ_RECOV, /* Recovery read - errors allowed */
63 PBLK_ERASE, 64 PBLK_ERASE,
64}; 65};
65 66