aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/lightnvm/pblk-core.c')
-rw-r--r--drivers/lightnvm/pblk-core.c13
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
39static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd) 40static 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
1629void pblk_line_mark_bb(struct work_struct *work) 1630void 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
1654void pblk_line_run_ws(struct pblk *pblk, struct pblk_line *line, void *priv, 1655void 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