Re: [PATCH 01/12] block: convert bounce, q->bio_split to bioset_init()/mempool_init()

2018-05-22 Thread Christoph Hellwig
Looks good,

Reviewed-by: Christoph Hellwig 
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 01/12] block: convert bounce, q->bio_split to bioset_init()/mempool_init()

2018-05-20 Thread Kent Overstreet
Signed-off-by: Kent Overstreet 
---
 block/blk-core.c   |  7 ---
 block/blk-merge.c  |  8 +++
 block/blk-sysfs.c  |  3 +--
 block/bounce.c | 47 ++
 drivers/md/dm.c|  2 +-
 include/linux/bio.h|  5 +
 include/linux/blkdev.h |  2 +-
 7 files changed, 41 insertions(+), 33 deletions(-)

diff --git a/block/blk-core.c b/block/blk-core.c
index 43370faee9..a3a7462961 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -998,6 +998,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, 
int node_id,
   spinlock_t *lock)
 {
struct request_queue *q;
+   int ret;
 
q = kmem_cache_alloc_node(blk_requestq_cachep,
gfp_mask | __GFP_ZERO, node_id);
@@ -1008,8 +1009,8 @@ struct request_queue *blk_alloc_queue_node(gfp_t 
gfp_mask, int node_id,
if (q->id < 0)
goto fail_q;
 
-   q->bio_split = bioset_create(BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
-   if (!q->bio_split)
+   ret = bioset_init(>bio_split, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
+   if (ret)
goto fail_id;
 
q->backing_dev_info = bdi_alloc_node(gfp_mask, node_id);
@@ -1081,7 +1082,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t 
gfp_mask, int node_id,
 fail_stats:
bdi_put(q->backing_dev_info);
 fail_split:
-   bioset_free(q->bio_split);
+   bioset_exit(>bio_split);
 fail_id:
ida_simple_remove(_queue_ida, q->id);
 fail_q:
diff --git a/block/blk-merge.c b/block/blk-merge.c
index 5573d0fbec..d70ab08820 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -188,16 +188,16 @@ void blk_queue_split(struct request_queue *q, struct bio 
**bio)
switch (bio_op(*bio)) {
case REQ_OP_DISCARD:
case REQ_OP_SECURE_ERASE:
-   split = blk_bio_discard_split(q, *bio, q->bio_split, );
+   split = blk_bio_discard_split(q, *bio, >bio_split, );
break;
case REQ_OP_WRITE_ZEROES:
-   split = blk_bio_write_zeroes_split(q, *bio, q->bio_split, 
);
+   split = blk_bio_write_zeroes_split(q, *bio, >bio_split, 
);
break;
case REQ_OP_WRITE_SAME:
-   split = blk_bio_write_same_split(q, *bio, q->bio_split, );
+   split = blk_bio_write_same_split(q, *bio, >bio_split, 
);
break;
default:
-   split = blk_bio_segment_split(q, *bio, q->bio_split, );
+   split = blk_bio_segment_split(q, *bio, >bio_split, );
break;
}
 
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index cae525b7aa..18de028c38 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -824,8 +824,7 @@ static void __blk_release_queue(struct work_struct *work)
if (q->mq_ops)
blk_mq_debugfs_unregister(q);
 
-   if (q->bio_split)
-   bioset_free(q->bio_split);
+   bioset_exit(>bio_split);
 
ida_simple_remove(_queue_ida, q->id);
call_rcu(>rcu_head, blk_free_queue_rcu);
diff --git a/block/bounce.c b/block/bounce.c
index fea9c8146d..7a6c4d50b5 100644
--- a/block/bounce.c
+++ b/block/bounce.c
@@ -28,28 +28,29 @@
 #define POOL_SIZE  64
 #define ISA_POOL_SIZE  16
 
-static struct bio_set *bounce_bio_set, *bounce_bio_split;
-static mempool_t *page_pool, *isa_page_pool;
+static struct bio_set bounce_bio_set, bounce_bio_split;
+static mempool_t page_pool, isa_page_pool;
 
 #if defined(CONFIG_HIGHMEM)
 static __init int init_emergency_pool(void)
 {
+   int ret;
 #if defined(CONFIG_HIGHMEM) && !defined(CONFIG_MEMORY_HOTPLUG)
if (max_pfn <= max_low_pfn)
return 0;
 #endif
 
-   page_pool = mempool_create_page_pool(POOL_SIZE, 0);
-   BUG_ON(!page_pool);
+   ret = mempool_init_page_pool(_pool, POOL_SIZE, 0);
+   BUG_ON(ret);
pr_info("pool size: %d pages\n", POOL_SIZE);
 
-   bounce_bio_set = bioset_create(BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
-   BUG_ON(!bounce_bio_set);
+   ret = bioset_init(_bio_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
+   BUG_ON(ret);
if (bioset_integrity_create(bounce_bio_set, BIO_POOL_SIZE))
BUG_ON(1);
 
-   bounce_bio_split = bioset_create(BIO_POOL_SIZE, 0, 0);
-   BUG_ON(!bounce_bio_split);
+   ret = bioset_init(_bio_split, BIO_POOL_SIZE, 0, 0);
+   BUG_ON(ret);
 
return 0;
 }
@@ -91,12 +92,14 @@ static void *mempool_alloc_pages_isa(gfp_t gfp_mask, void 
*data)
  */
 int init_emergency_isa_pool(void)
 {
-   if (isa_page_pool)
+   int ret;
+
+   if (mempool_initialized(_page_pool))
return 0;
 
-   isa_page_pool = mempool_create(ISA_POOL_SIZE, mempool_alloc_pages_isa,
-  mempool_free_pages, (void *) 0);
-   BUG_ON(!isa_page_pool);
+   ret = mempool_init(_page_pool,