diff options
author | Javier González <jg@lightnvm.io> | 2017-06-26 05:57:21 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-06-26 18:27:39 -0400 |
commit | f680f19aa6dbbbabf499250d49f18a426b14f1c2 (patch) | |
tree | 78dbe23eb94ec0680ed1f5ece1bec7916d124a23 /drivers/lightnvm/pblk-init.c | |
parent | f9c101523da75cd483b95f04c21242bb83960d93 (diff) |
lightnvm: pblk: simplify meta. memory allocation
smeta size will always be suitable for a kmalloc allocation. Simplify
the code and leave the vmalloc fallback only for emeta, where the pblk
configuration has an impact.
Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
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 cd10f2d74cf9..a9115ff9555f 100644 --- a/drivers/lightnvm/pblk-init.c +++ b/drivers/lightnvm/pblk-init.c | |||
@@ -355,9 +355,9 @@ static void pblk_line_meta_free(struct pblk *pblk) | |||
355 | kfree(l_mg->vsc_list); | 355 | kfree(l_mg->vsc_list); |
356 | 356 | ||
357 | for (i = 0; i < PBLK_DATA_LINES; i++) { | 357 | for (i = 0; i < PBLK_DATA_LINES; i++) { |
358 | pblk_mfree(&l_mg->sline_meta[i], l_mg->smeta_alloc_type); | 358 | kfree(l_mg->sline_meta[i]); |
359 | pblk_mfree(l_mg->eline_meta[i]->buf, l_mg->emeta_alloc_type); | 359 | pblk_mfree(l_mg->eline_meta[i]->buf, l_mg->emeta_alloc_type); |
360 | kfree(&l_mg->eline_meta[i]); | 360 | kfree(l_mg->eline_meta[i]); |
361 | } | 361 | } |
362 | 362 | ||
363 | kfree(pblk->lines); | 363 | kfree(pblk->lines); |
@@ -550,7 +550,6 @@ static int pblk_lines_alloc_metadata(struct pblk *pblk) | |||
550 | /* smeta is always small enough to fit on a kmalloc memory allocation, | 550 | /* smeta is always small enough to fit on a kmalloc memory allocation, |
551 | * emeta depends on the number of LUNs allocated to the pblk instance | 551 | * emeta depends on the number of LUNs allocated to the pblk instance |
552 | */ | 552 | */ |
553 | l_mg->smeta_alloc_type = PBLK_KMALLOC_META; | ||
554 | for (i = 0; i < PBLK_DATA_LINES; i++) { | 553 | for (i = 0; i < PBLK_DATA_LINES; i++) { |
555 | l_mg->sline_meta[i] = kmalloc(lm->smeta_len, GFP_KERNEL); | 554 | l_mg->sline_meta[i] = kmalloc(lm->smeta_len, GFP_KERNEL); |
556 | if (!l_mg->sline_meta[i]) | 555 | if (!l_mg->sline_meta[i]) |
@@ -604,12 +603,12 @@ static int pblk_lines_alloc_metadata(struct pblk *pblk) | |||
604 | fail_free_emeta: | 603 | fail_free_emeta: |
605 | while (--i >= 0) { | 604 | while (--i >= 0) { |
606 | vfree(l_mg->eline_meta[i]->buf); | 605 | vfree(l_mg->eline_meta[i]->buf); |
607 | kfree(&l_mg->eline_meta[i]); | 606 | kfree(l_mg->eline_meta[i]); |
608 | } | 607 | } |
609 | 608 | ||
610 | fail_free_smeta: | 609 | fail_free_smeta: |
611 | for (i = 0; i < PBLK_DATA_LINES; i++) | 610 | for (i = 0; i < PBLK_DATA_LINES; i++) |
612 | pblk_mfree(&l_mg->sline_meta[i], l_mg->smeta_alloc_type); | 611 | kfree(l_mg->sline_meta[i]); |
613 | 612 | ||
614 | return -ENOMEM; | 613 | return -ENOMEM; |
615 | } | 614 | } |