diff options
author | Igor Konopko <[email protected]> | 2019-05-04 20:38:07 +0200 |
---|---|---|
committer | Jens Axboe <[email protected]> | 2019-05-06 10:19:19 -0600 |
commit | a24eab59887133032831f939ad172233e7acb36e (patch) | |
tree | 65b3817ac455f412d2a825cd6c7bbc15c296668e | |
parent | 3e03f6322ab2ab055478c92bf7af66d6ab13a35f (diff) |
lightnvm: pblk: recover only written metadata
This patch ensures that smeta was fully written before even
trying to read it based on chunk table state and write pointer.
Signed-off-by: Igor Konopko <[email protected]>
Signed-off-by: Matias Bjørling <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
-rw-r--r-- | drivers/lightnvm/pblk-recovery.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/lightnvm/pblk-recovery.c b/drivers/lightnvm/pblk-recovery.c index 865fe310cab4..a9085b0e6611 100644 --- a/drivers/lightnvm/pblk-recovery.c +++ b/drivers/lightnvm/pblk-recovery.c @@ -655,10 +655,12 @@ static int pblk_line_was_written(struct pblk_line *line, bppa = pblk->luns[smeta_blk].bppa; chunk = &line->chks[pblk_ppa_to_pos(geo, bppa)]; - if (chunk->state & NVM_CHK_ST_FREE) - return 0; + if (chunk->state & NVM_CHK_ST_CLOSED || + (chunk->state & NVM_CHK_ST_OPEN + && chunk->wp >= lm->smeta_sec)) + return 1; - return 1; + return 0; } static bool pblk_line_is_open(struct pblk *pblk, struct pblk_line *line) |