diff options
Diffstat (limited to 'drivers/lightnvm/pblk-core.c')
-rw-r--r-- | drivers/lightnvm/pblk-core.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c index f5fbb9a46784..b92532211866 100644 --- a/drivers/lightnvm/pblk-core.c +++ b/drivers/lightnvm/pblk-core.c | |||
@@ -33,7 +33,8 @@ static void pblk_mark_bb(struct pblk *pblk, struct pblk_line *line, | |||
33 | pr_err("pblk: attempted to erase bb: line:%d, pos:%d\n", | 33 | pr_err("pblk: attempted to erase bb: line:%d, pos:%d\n", |
34 | line->id, pos); | 34 | line->id, pos); |
35 | 35 | ||
36 | pblk_line_run_ws(pblk, NULL, ppa, pblk_line_mark_bb, pblk->bb_wq); | 36 | pblk_gen_run_ws(pblk, NULL, ppa, pblk_line_mark_bb, |
37 | GFP_ATOMIC, pblk->bb_wq); | ||
37 | } | 38 | } |
38 | 39 | ||
39 | static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd) | 40 | static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd) |
@@ -1623,7 +1624,7 @@ void pblk_line_close_ws(struct work_struct *work) | |||
1623 | struct pblk_line *line = line_ws->line; | 1624 | struct pblk_line *line = line_ws->line; |
1624 | 1625 | ||
1625 | pblk_line_close(pblk, line); | 1626 | pblk_line_close(pblk, line); |
1626 | mempool_free(line_ws, pblk->line_ws_pool); | 1627 | mempool_free(line_ws, pblk->gen_ws_pool); |
1627 | } | 1628 | } |
1628 | 1629 | ||
1629 | void pblk_line_mark_bb(struct work_struct *work) | 1630 | void pblk_line_mark_bb(struct work_struct *work) |
@@ -1648,16 +1649,16 @@ void pblk_line_mark_bb(struct work_struct *work) | |||
1648 | } | 1649 | } |
1649 | 1650 | ||
1650 | kfree(ppa); | 1651 | kfree(ppa); |
1651 | mempool_free(line_ws, pblk->line_ws_pool); | 1652 | mempool_free(line_ws, pblk->gen_ws_pool); |
1652 | } | 1653 | } |
1653 | 1654 | ||
1654 | void pblk_line_run_ws(struct pblk *pblk, struct pblk_line *line, void *priv, | 1655 | void pblk_gen_run_ws(struct pblk *pblk, struct pblk_line *line, void *priv, |
1655 | void (*work)(struct work_struct *), | 1656 | void (*work)(struct work_struct *), gfp_t gfp_mask, |
1656 | struct workqueue_struct *wq) | 1657 | struct workqueue_struct *wq) |
1657 | { | 1658 | { |
1658 | struct pblk_line_ws *line_ws; | 1659 | struct pblk_line_ws *line_ws; |
1659 | 1660 | ||
1660 | line_ws = mempool_alloc(pblk->line_ws_pool, GFP_ATOMIC); | 1661 | line_ws = mempool_alloc(pblk->gen_ws_pool, gfp_mask); |
1661 | if (!line_ws) | 1662 | if (!line_ws) |
1662 | return; | 1663 | return; |
1663 | 1664 | ||