mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
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>
This commit is contained in:
parent
f9c101523d
commit
f680f19aa6
@ -665,7 +665,8 @@ next_rq:
|
||||
}
|
||||
reinit_completion(&wait);
|
||||
|
||||
bio_put(bio);
|
||||
if (likely(pblk->l_mg.emeta_alloc_type == PBLK_VMALLOC_META))
|
||||
bio_put(bio);
|
||||
|
||||
if (rqd.error) {
|
||||
if (dir == WRITE)
|
||||
|
@ -355,9 +355,9 @@ static void pblk_line_meta_free(struct pblk *pblk)
|
||||
kfree(l_mg->vsc_list);
|
||||
|
||||
for (i = 0; i < PBLK_DATA_LINES; i++) {
|
||||
pblk_mfree(&l_mg->sline_meta[i], l_mg->smeta_alloc_type);
|
||||
kfree(l_mg->sline_meta[i]);
|
||||
pblk_mfree(l_mg->eline_meta[i]->buf, l_mg->emeta_alloc_type);
|
||||
kfree(&l_mg->eline_meta[i]);
|
||||
kfree(l_mg->eline_meta[i]);
|
||||
}
|
||||
|
||||
kfree(pblk->lines);
|
||||
@ -550,7 +550,6 @@ static int pblk_lines_alloc_metadata(struct pblk *pblk)
|
||||
/* smeta is always small enough to fit on a kmalloc memory allocation,
|
||||
* emeta depends on the number of LUNs allocated to the pblk instance
|
||||
*/
|
||||
l_mg->smeta_alloc_type = PBLK_KMALLOC_META;
|
||||
for (i = 0; i < PBLK_DATA_LINES; i++) {
|
||||
l_mg->sline_meta[i] = kmalloc(lm->smeta_len, GFP_KERNEL);
|
||||
if (!l_mg->sline_meta[i])
|
||||
@ -604,12 +603,12 @@ static int pblk_lines_alloc_metadata(struct pblk *pblk)
|
||||
fail_free_emeta:
|
||||
while (--i >= 0) {
|
||||
vfree(l_mg->eline_meta[i]->buf);
|
||||
kfree(&l_mg->eline_meta[i]);
|
||||
kfree(l_mg->eline_meta[i]);
|
||||
}
|
||||
|
||||
fail_free_smeta:
|
||||
for (i = 0; i < PBLK_DATA_LINES; i++)
|
||||
pblk_mfree(&l_mg->sline_meta[i], l_mg->smeta_alloc_type);
|
||||
kfree(l_mg->sline_meta[i]);
|
||||
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -442,7 +442,8 @@ fail_rollback:
|
||||
list_add(&meta_line->list, &meta_line->list);
|
||||
spin_unlock(&l_mg->close_lock);
|
||||
fail_free_bio:
|
||||
bio_put(bio);
|
||||
if (likely(l_mg->emeta_alloc_type == PBLK_VMALLOC_META))
|
||||
bio_put(bio);
|
||||
fail_free_rqd:
|
||||
pblk_free_rqd(pblk, rqd, READ);
|
||||
return ret;
|
||||
|
@ -446,7 +446,6 @@ struct pblk_line_mgmt {
|
||||
__le32 *vsc_list; /* Valid sector counts for all lines */
|
||||
|
||||
/* Metadata allocation type: VMALLOC | KMALLOC */
|
||||
int smeta_alloc_type;
|
||||
int emeta_alloc_type;
|
||||
|
||||
/* Pre-allocated metadata for data lines */
|
||||
|
Loading…
Reference in New Issue
Block a user