diff options
Diffstat (limited to 'drivers/lightnvm/pblk-recovery.c')
-rw-r--r-- | drivers/lightnvm/pblk-recovery.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/lightnvm/pblk-recovery.c b/drivers/lightnvm/pblk-recovery.c index 7b0ace2f4957..b9f2b40bd5a7 100644 --- a/drivers/lightnvm/pblk-recovery.c +++ b/drivers/lightnvm/pblk-recovery.c | |||
@@ -257,7 +257,6 @@ next_read_rq: | |||
257 | 257 | ||
258 | rqd->bio = bio; | 258 | rqd->bio = bio; |
259 | rqd->opcode = NVM_OP_PREAD; | 259 | rqd->opcode = NVM_OP_PREAD; |
260 | rqd->flags = pblk_set_read_mode(pblk); | ||
261 | rqd->meta_list = meta_list; | 260 | rqd->meta_list = meta_list; |
262 | rqd->nr_ppas = rq_ppas; | 261 | rqd->nr_ppas = rq_ppas; |
263 | rqd->ppa_list = ppa_list; | 262 | rqd->ppa_list = ppa_list; |
@@ -266,6 +265,11 @@ next_read_rq: | |||
266 | rqd->end_io = pblk_end_io_sync; | 265 | rqd->end_io = pblk_end_io_sync; |
267 | rqd->private = &wait; | 266 | rqd->private = &wait; |
268 | 267 | ||
268 | if (pblk_io_aligned(pblk, rq_ppas)) | ||
269 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL); | ||
270 | else | ||
271 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_RANDOM); | ||
272 | |||
269 | for (i = 0; i < rqd->nr_ppas; ) { | 273 | for (i = 0; i < rqd->nr_ppas; ) { |
270 | struct ppa_addr ppa; | 274 | struct ppa_addr ppa; |
271 | int pos; | 275 | int pos; |
@@ -473,7 +477,6 @@ next_rq: | |||
473 | 477 | ||
474 | rqd->bio = bio; | 478 | rqd->bio = bio; |
475 | rqd->opcode = NVM_OP_PREAD; | 479 | rqd->opcode = NVM_OP_PREAD; |
476 | rqd->flags = pblk_set_read_mode(pblk); | ||
477 | rqd->meta_list = meta_list; | 480 | rqd->meta_list = meta_list; |
478 | rqd->nr_ppas = rq_ppas; | 481 | rqd->nr_ppas = rq_ppas; |
479 | rqd->ppa_list = ppa_list; | 482 | rqd->ppa_list = ppa_list; |
@@ -482,6 +485,11 @@ next_rq: | |||
482 | rqd->end_io = pblk_end_io_sync; | 485 | rqd->end_io = pblk_end_io_sync; |
483 | rqd->private = &wait; | 486 | rqd->private = &wait; |
484 | 487 | ||
488 | if (pblk_io_aligned(pblk, rq_ppas)) | ||
489 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL); | ||
490 | else | ||
491 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_RANDOM); | ||
492 | |||
485 | for (i = 0; i < rqd->nr_ppas; ) { | 493 | for (i = 0; i < rqd->nr_ppas; ) { |
486 | struct ppa_addr ppa; | 494 | struct ppa_addr ppa; |
487 | int pos; | 495 | int pos; |
@@ -607,7 +615,6 @@ next_rq: | |||
607 | 615 | ||
608 | rqd->bio = bio; | 616 | rqd->bio = bio; |
609 | rqd->opcode = NVM_OP_PREAD; | 617 | rqd->opcode = NVM_OP_PREAD; |
610 | rqd->flags = pblk_set_read_mode(pblk); | ||
611 | rqd->meta_list = meta_list; | 618 | rqd->meta_list = meta_list; |
612 | rqd->nr_ppas = rq_ppas; | 619 | rqd->nr_ppas = rq_ppas; |
613 | rqd->ppa_list = ppa_list; | 620 | rqd->ppa_list = ppa_list; |
@@ -616,6 +623,11 @@ next_rq: | |||
616 | rqd->end_io = pblk_end_io_sync; | 623 | rqd->end_io = pblk_end_io_sync; |
617 | rqd->private = &wait; | 624 | rqd->private = &wait; |
618 | 625 | ||
626 | if (pblk_io_aligned(pblk, rq_ppas)) | ||
627 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL); | ||
628 | else | ||
629 | rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_RANDOM); | ||
630 | |||
619 | for (i = 0; i < rqd->nr_ppas; ) { | 631 | for (i = 0; i < rqd->nr_ppas; ) { |
620 | struct ppa_addr ppa; | 632 | struct ppa_addr ppa; |
621 | int pos; | 633 | int pos; |