diff options
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r-- | drivers/lightnvm/pblk-init.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index 141036bd6afa..43b835678f48 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c | |||
@@ -260,8 +260,7 @@ static int pblk_core_init(struct pblk *pblk) | |||
260 | return -ENOMEM; | 260 | return -ENOMEM; |
261 | 261 | ||
262 | /* Internal bios can be at most the sectors signaled by the device. */ | 262 | /* Internal bios can be at most the sectors signaled by the device. */ |
263 | pblk->page_bio_pool = mempool_create_page_pool(nvm_max_phys_sects(dev), | 263 | pblk->page_bio_pool = mempool_create_page_pool(NVM_MAX_VLBA, 0); |
264 | 0); | ||
265 | if (!pblk->page_bio_pool) | 264 | if (!pblk->page_bio_pool) |
266 | goto free_global_caches; | 265 | goto free_global_caches; |
267 | 266 | ||
@@ -716,12 +715,12 @@ static int pblk_lines_init(struct pblk *pblk) | |||
716 | 715 | ||
717 | pblk->min_write_pgs = geo->sec_per_pl * (geo->sec_size / PAGE_SIZE); | 716 | pblk->min_write_pgs = geo->sec_per_pl * (geo->sec_size / PAGE_SIZE); |
718 | max_write_ppas = pblk->min_write_pgs * geo->all_luns; | 717 | max_write_ppas = pblk->min_write_pgs * geo->all_luns; |
719 | pblk->max_write_pgs = (max_write_ppas < nvm_max_phys_sects(dev)) ? | 718 | pblk->max_write_pgs = min_t(int, max_write_ppas, NVM_MAX_VLBA); |
720 | max_write_ppas : nvm_max_phys_sects(dev); | ||
721 | pblk_set_sec_per_write(pblk, pblk->min_write_pgs); | 719 | pblk_set_sec_per_write(pblk, pblk->min_write_pgs); |
722 | 720 | ||
723 | if (pblk->max_write_pgs > PBLK_MAX_REQ_ADDRS) { | 721 | if (pblk->max_write_pgs > PBLK_MAX_REQ_ADDRS) { |
724 | pr_err("pblk: cannot support device max_phys_sect\n"); | 722 | pr_err("pblk: vector list too big(%u > %u)\n", |
723 | pblk->max_write_pgs, PBLK_MAX_REQ_ADDRS); | ||
725 | return -EINVAL; | 724 | return -EINVAL; |
726 | } | 725 | } |
727 | 726 | ||