Skip to content

Commit b906bbb

Browse files
koverstreetaxboe
authored andcommitted
lightnvm: convert to bioset_init()/mempool_init()
Convert lightnvm to embedded bio sets. Reviewed-by: Javier González <[email protected]> Signed-off-by: Kent Overstreet <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 64c4bc4 commit b906bbb

File tree

6 files changed

+65
-65
lines changed

6 files changed

+65
-65
lines changed

drivers/lightnvm/pblk-core.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static void pblk_line_mark_bb(struct work_struct *work)
4040
}
4141

4242
kfree(ppa);
43-
mempool_free(line_ws, pblk->gen_ws_pool);
43+
mempool_free(line_ws, &pblk->gen_ws_pool);
4444
}
4545

4646
static void pblk_mark_bb(struct pblk *pblk, struct pblk_line *line,
@@ -102,7 +102,7 @@ static void pblk_end_io_erase(struct nvm_rq *rqd)
102102
struct pblk *pblk = rqd->private;
103103

104104
__pblk_end_io_erase(pblk, rqd);
105-
mempool_free(rqd, pblk->e_rq_pool);
105+
mempool_free(rqd, &pblk->e_rq_pool);
106106
}
107107

108108
/*
@@ -237,15 +237,15 @@ struct nvm_rq *pblk_alloc_rqd(struct pblk *pblk, int type)
237237
switch (type) {
238238
case PBLK_WRITE:
239239
case PBLK_WRITE_INT:
240-
pool = pblk->w_rq_pool;
240+
pool = &pblk->w_rq_pool;
241241
rq_size = pblk_w_rq_size;
242242
break;
243243
case PBLK_READ:
244-
pool = pblk->r_rq_pool;
244+
pool = &pblk->r_rq_pool;
245245
rq_size = pblk_g_rq_size;
246246
break;
247247
default:
248-
pool = pblk->e_rq_pool;
248+
pool = &pblk->e_rq_pool;
249249
rq_size = pblk_g_rq_size;
250250
}
251251

@@ -265,13 +265,13 @@ void pblk_free_rqd(struct pblk *pblk, struct nvm_rq *rqd, int type)
265265
case PBLK_WRITE:
266266
kfree(((struct pblk_c_ctx *)nvm_rq_to_pdu(rqd))->lun_bitmap);
267267
case PBLK_WRITE_INT:
268-
pool = pblk->w_rq_pool;
268+
pool = &pblk->w_rq_pool;
269269
break;
270270
case PBLK_READ:
271-
pool = pblk->r_rq_pool;
271+
pool = &pblk->r_rq_pool;
272272
break;
273273
case PBLK_ERASE:
274-
pool = pblk->e_rq_pool;
274+
pool = &pblk->e_rq_pool;
275275
break;
276276
default:
277277
pr_err("pblk: trying to free unknown rqd type\n");
@@ -292,7 +292,7 @@ void pblk_bio_free_pages(struct pblk *pblk, struct bio *bio, int off,
292292

293293
for (i = off; i < nr_pages + off; i++) {
294294
bv = bio->bi_io_vec[i];
295-
mempool_free(bv.bv_page, pblk->page_bio_pool);
295+
mempool_free(bv.bv_page, &pblk->page_bio_pool);
296296
}
297297
}
298298

@@ -304,12 +304,12 @@ int pblk_bio_add_pages(struct pblk *pblk, struct bio *bio, gfp_t flags,
304304
int i, ret;
305305

306306
for (i = 0; i < nr_pages; i++) {
307-
page = mempool_alloc(pblk->page_bio_pool, flags);
307+
page = mempool_alloc(&pblk->page_bio_pool, flags);
308308

309309
ret = bio_add_pc_page(q, bio, page, PBLK_EXPOSED_PAGE_SIZE, 0);
310310
if (ret != PBLK_EXPOSED_PAGE_SIZE) {
311311
pr_err("pblk: could not add page to bio\n");
312-
mempool_free(page, pblk->page_bio_pool);
312+
mempool_free(page, &pblk->page_bio_pool);
313313
goto err;
314314
}
315315
}
@@ -1593,7 +1593,7 @@ static void pblk_line_put_ws(struct work_struct *work)
15931593
struct pblk_line *line = line_put_ws->line;
15941594

15951595
__pblk_line_put(pblk, line);
1596-
mempool_free(line_put_ws, pblk->gen_ws_pool);
1596+
mempool_free(line_put_ws, &pblk->gen_ws_pool);
15971597
}
15981598

15991599
void pblk_line_put(struct kref *ref)
@@ -1610,7 +1610,7 @@ void pblk_line_put_wq(struct kref *ref)
16101610
struct pblk *pblk = line->pblk;
16111611
struct pblk_line_ws *line_put_ws;
16121612

1613-
line_put_ws = mempool_alloc(pblk->gen_ws_pool, GFP_ATOMIC);
1613+
line_put_ws = mempool_alloc(&pblk->gen_ws_pool, GFP_ATOMIC);
16141614
if (!line_put_ws)
16151615
return;
16161616

@@ -1752,7 +1752,7 @@ void pblk_line_close_ws(struct work_struct *work)
17521752
struct pblk_line *line = line_ws->line;
17531753

17541754
pblk_line_close(pblk, line);
1755-
mempool_free(line_ws, pblk->gen_ws_pool);
1755+
mempool_free(line_ws, &pblk->gen_ws_pool);
17561756
}
17571757

17581758
void pblk_gen_run_ws(struct pblk *pblk, struct pblk_line *line, void *priv,
@@ -1761,7 +1761,7 @@ void pblk_gen_run_ws(struct pblk *pblk, struct pblk_line *line, void *priv,
17611761
{
17621762
struct pblk_line_ws *line_ws;
17631763

1764-
line_ws = mempool_alloc(pblk->gen_ws_pool, gfp_mask);
1764+
line_ws = mempool_alloc(&pblk->gen_ws_pool, gfp_mask);
17651765

17661766
line_ws->pblk = pblk;
17671767
line_ws->line = line;

drivers/lightnvm/pblk-init.c

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache,
2424
*pblk_w_rq_cache;
2525
static DECLARE_RWSEM(pblk_lock);
26-
struct bio_set *pblk_bio_set;
26+
struct bio_set pblk_bio_set;
2727

2828
static int pblk_rw_io(struct request_queue *q, struct pblk *pblk,
2929
struct bio *bio)
@@ -341,7 +341,7 @@ static int pblk_core_init(struct pblk *pblk)
341341
{
342342
struct nvm_tgt_dev *dev = pblk->dev;
343343
struct nvm_geo *geo = &dev->geo;
344-
int max_write_ppas;
344+
int ret, max_write_ppas;
345345

346346
atomic64_set(&pblk->user_wa, 0);
347347
atomic64_set(&pblk->pad_wa, 0);
@@ -375,33 +375,33 @@ static int pblk_core_init(struct pblk *pblk)
375375
goto fail_free_pad_dist;
376376

377377
/* Internal bios can be at most the sectors signaled by the device. */
378-
pblk->page_bio_pool = mempool_create_page_pool(NVM_MAX_VLBA, 0);
379-
if (!pblk->page_bio_pool)
378+
ret = mempool_init_page_pool(&pblk->page_bio_pool, NVM_MAX_VLBA, 0);
379+
if (ret)
380380
goto free_global_caches;
381381

382-
pblk->gen_ws_pool = mempool_create_slab_pool(PBLK_GEN_WS_POOL_SIZE,
383-
pblk_ws_cache);
384-
if (!pblk->gen_ws_pool)
382+
ret = mempool_init_slab_pool(&pblk->gen_ws_pool, PBLK_GEN_WS_POOL_SIZE,
383+
pblk_ws_cache);
384+
if (ret)
385385
goto free_page_bio_pool;
386386

387-
pblk->rec_pool = mempool_create_slab_pool(geo->all_luns,
388-
pblk_rec_cache);
389-
if (!pblk->rec_pool)
387+
ret = mempool_init_slab_pool(&pblk->rec_pool, geo->all_luns,
388+
pblk_rec_cache);
389+
if (ret)
390390
goto free_gen_ws_pool;
391391

392-
pblk->r_rq_pool = mempool_create_slab_pool(geo->all_luns,
393-
pblk_g_rq_cache);
394-
if (!pblk->r_rq_pool)
392+
ret = mempool_init_slab_pool(&pblk->r_rq_pool, geo->all_luns,
393+
pblk_g_rq_cache);
394+
if (ret)
395395
goto free_rec_pool;
396396

397-
pblk->e_rq_pool = mempool_create_slab_pool(geo->all_luns,
398-
pblk_g_rq_cache);
399-
if (!pblk->e_rq_pool)
397+
ret = mempool_init_slab_pool(&pblk->e_rq_pool, geo->all_luns,
398+
pblk_g_rq_cache);
399+
if (ret)
400400
goto free_r_rq_pool;
401401

402-
pblk->w_rq_pool = mempool_create_slab_pool(geo->all_luns,
403-
pblk_w_rq_cache);
404-
if (!pblk->w_rq_pool)
402+
ret = mempool_init_slab_pool(&pblk->w_rq_pool, geo->all_luns,
403+
pblk_w_rq_cache);
404+
if (ret)
405405
goto free_e_rq_pool;
406406

407407
pblk->close_wq = alloc_workqueue("pblk-close-wq",
@@ -433,17 +433,17 @@ static int pblk_core_init(struct pblk *pblk)
433433
free_close_wq:
434434
destroy_workqueue(pblk->close_wq);
435435
free_w_rq_pool:
436-
mempool_destroy(pblk->w_rq_pool);
436+
mempool_exit(&pblk->w_rq_pool);
437437
free_e_rq_pool:
438-
mempool_destroy(pblk->e_rq_pool);
438+
mempool_exit(&pblk->e_rq_pool);
439439
free_r_rq_pool:
440-
mempool_destroy(pblk->r_rq_pool);
440+
mempool_exit(&pblk->r_rq_pool);
441441
free_rec_pool:
442-
mempool_destroy(pblk->rec_pool);
442+
mempool_exit(&pblk->rec_pool);
443443
free_gen_ws_pool:
444-
mempool_destroy(pblk->gen_ws_pool);
444+
mempool_exit(&pblk->gen_ws_pool);
445445
free_page_bio_pool:
446-
mempool_destroy(pblk->page_bio_pool);
446+
mempool_exit(&pblk->page_bio_pool);
447447
free_global_caches:
448448
pblk_free_global_caches(pblk);
449449
fail_free_pad_dist:
@@ -462,12 +462,12 @@ static void pblk_core_free(struct pblk *pblk)
462462
if (pblk->bb_wq)
463463
destroy_workqueue(pblk->bb_wq);
464464

465-
mempool_destroy(pblk->page_bio_pool);
466-
mempool_destroy(pblk->gen_ws_pool);
467-
mempool_destroy(pblk->rec_pool);
468-
mempool_destroy(pblk->r_rq_pool);
469-
mempool_destroy(pblk->e_rq_pool);
470-
mempool_destroy(pblk->w_rq_pool);
465+
mempool_exit(&pblk->page_bio_pool);
466+
mempool_exit(&pblk->gen_ws_pool);
467+
mempool_exit(&pblk->rec_pool);
468+
mempool_exit(&pblk->r_rq_pool);
469+
mempool_exit(&pblk->e_rq_pool);
470+
mempool_exit(&pblk->w_rq_pool);
471471

472472
pblk_free_global_caches(pblk);
473473
kfree(pblk->pad_dist);
@@ -1297,18 +1297,18 @@ static int __init pblk_module_init(void)
12971297
{
12981298
int ret;
12991299

1300-
pblk_bio_set = bioset_create(BIO_POOL_SIZE, 0, 0);
1301-
if (!pblk_bio_set)
1302-
return -ENOMEM;
1300+
ret = bioset_init(&pblk_bio_set, BIO_POOL_SIZE, 0, 0);
1301+
if (ret)
1302+
return ret;
13031303
ret = nvm_register_tgt_type(&tt_pblk);
13041304
if (ret)
1305-
bioset_free(pblk_bio_set);
1305+
bioset_exit(&pblk_bio_set);
13061306
return ret;
13071307
}
13081308

13091309
static void pblk_module_exit(void)
13101310
{
1311-
bioset_free(pblk_bio_set);
1311+
bioset_exit(&pblk_bio_set);
13121312
nvm_unregister_tgt_type(&tt_pblk);
13131313
}
13141314

drivers/lightnvm/pblk-read.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ static int pblk_partial_read_bio(struct pblk *pblk, struct nvm_rq *rqd,
294294
kunmap_atomic(src_p);
295295
kunmap_atomic(dst_p);
296296

297-
mempool_free(src_bv.bv_page, pblk->page_bio_pool);
297+
mempool_free(src_bv.bv_page, &pblk->page_bio_pool);
298298

299299
hole = find_next_zero_bit(read_bitmap, nr_secs, hole + 1);
300300
} while (hole < nr_secs);
@@ -429,7 +429,7 @@ int pblk_submit_read(struct pblk *pblk, struct bio *bio)
429429
struct bio *int_bio = NULL;
430430

431431
/* Clone read bio to deal with read errors internally */
432-
int_bio = bio_clone_fast(bio, GFP_KERNEL, pblk_bio_set);
432+
int_bio = bio_clone_fast(bio, GFP_KERNEL, &pblk_bio_set);
433433
if (!int_bio) {
434434
pr_err("pblk: could not clone read bio\n");
435435
goto fail_end_io;

drivers/lightnvm/pblk-recovery.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void pblk_submit_rec(struct work_struct *work)
6060
goto err;
6161
}
6262

63-
mempool_free(recovery, pblk->rec_pool);
63+
mempool_free(recovery, &pblk->rec_pool);
6464
return;
6565

6666
err:

drivers/lightnvm/pblk-write.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static void pblk_end_w_fail(struct pblk *pblk, struct nvm_rq *rqd)
122122
if (unlikely(nr_ppas == 1))
123123
ppa_list = &rqd->ppa_addr;
124124

125-
recovery = mempool_alloc(pblk->rec_pool, GFP_ATOMIC);
125+
recovery = mempool_alloc(&pblk->rec_pool, GFP_ATOMIC);
126126

127127
INIT_LIST_HEAD(&recovery->failed);
128128

@@ -134,15 +134,15 @@ static void pblk_end_w_fail(struct pblk *pblk, struct nvm_rq *rqd)
134134
/* Logic error */
135135
if (bit > c_ctx->nr_valid) {
136136
WARN_ONCE(1, "pblk: corrupted write request\n");
137-
mempool_free(recovery, pblk->rec_pool);
137+
mempool_free(recovery, &pblk->rec_pool);
138138
goto out;
139139
}
140140

141141
ppa = ppa_list[bit];
142142
entry = pblk_rb_sync_scan_entry(&pblk->rwb, &ppa);
143143
if (!entry) {
144144
pr_err("pblk: could not scan entry on write failure\n");
145-
mempool_free(recovery, pblk->rec_pool);
145+
mempool_free(recovery, &pblk->rec_pool);
146146
goto out;
147147
}
148148

@@ -156,7 +156,7 @@ static void pblk_end_w_fail(struct pblk *pblk, struct nvm_rq *rqd)
156156
ret = pblk_recov_setup_rq(pblk, c_ctx, recovery, comp_bits, c_entries);
157157
if (ret) {
158158
pr_err("pblk: could not recover from write failure\n");
159-
mempool_free(recovery, pblk->rec_pool);
159+
mempool_free(recovery, &pblk->rec_pool);
160160
goto out;
161161
}
162162

drivers/lightnvm/pblk.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -664,12 +664,12 @@ struct pblk {
664664

665665
struct list_head compl_list;
666666

667-
mempool_t *page_bio_pool;
668-
mempool_t *gen_ws_pool;
669-
mempool_t *rec_pool;
670-
mempool_t *r_rq_pool;
671-
mempool_t *w_rq_pool;
672-
mempool_t *e_rq_pool;
667+
mempool_t page_bio_pool;
668+
mempool_t gen_ws_pool;
669+
mempool_t rec_pool;
670+
mempool_t r_rq_pool;
671+
mempool_t w_rq_pool;
672+
mempool_t e_rq_pool;
673673

674674
struct workqueue_struct *close_wq;
675675
struct workqueue_struct *bb_wq;
@@ -841,7 +841,7 @@ void pblk_write_should_kick(struct pblk *pblk);
841841
/*
842842
* pblk read path
843843
*/
844-
extern struct bio_set *pblk_bio_set;
844+
extern struct bio_set pblk_bio_set;
845845
int pblk_submit_read(struct pblk *pblk, struct bio *bio);
846846
int pblk_submit_read_gc(struct pblk *pblk, struct pblk_gc_rq *gc_rq);
847847
/*

0 commit comments

Comments
 (0)