switch (bio_op(*bio)) {
        case REQ_OP_DISCARD:
        case REQ_OP_SECURE_ERASE:
-               split = blk_bio_discard_split(q, *bio, q->bio_split, &nsegs);
+               split = blk_bio_discard_split(q, *bio, &q->bio_split, &nsegs);
                break;
        case REQ_OP_WRITE_ZEROES:
-               split = blk_bio_write_zeroes_split(q, *bio, q->bio_split, &nsegs);
+               split = blk_bio_write_zeroes_split(q, *bio, &q->bio_split, &nsegs);
                break;
        case REQ_OP_WRITE_SAME:
-               split = blk_bio_write_same_split(q, *bio, q->bio_split, &nsegs);
+               split = blk_bio_write_same_split(q, *bio, &q->bio_split, &nsegs);
                break;
        default:
-               split = blk_bio_segment_split(q, *bio, q->bio_split, &nsegs);
+               split = blk_bio_segment_split(q, *bio, &q->bio_split, &nsegs);
                break;
        }
 
 
 #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(&page_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(&bounce_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(&bounce_bio_split, BIO_POOL_SIZE, 0, 0);
+       BUG_ON(ret);
 
        return 0;
 }
  */
 int init_emergency_isa_pool(void)
 {
-       if (isa_page_pool)
+       int ret;
+
+       if (mempool_initialized(&isa_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(&isa_page_pool, ISA_POOL_SIZE, mempool_alloc_pages_isa,
+                          mempool_free_pages, (void *) 0);
+       BUG_ON(ret);
 
        pr_info("isa pool size: %d pages\n", ISA_POOL_SIZE);
        return 0;
 
 static void bounce_end_io_write(struct bio *bio)
 {
-       bounce_end_io(bio, page_pool);
+       bounce_end_io(bio, &page_pool);
 }
 
 static void bounce_end_io_write_isa(struct bio *bio)
 {
 
-       bounce_end_io(bio, isa_page_pool);
+       bounce_end_io(bio, &isa_page_pool);
 }
 
 static void __bounce_end_io_read(struct bio *bio, mempool_t *pool)
 
 static void bounce_end_io_read(struct bio *bio)
 {
-       __bounce_end_io_read(bio, page_pool);
+       __bounce_end_io_read(bio, &page_pool);
 }
 
 static void bounce_end_io_read_isa(struct bio *bio)
 {
-       __bounce_end_io_read(bio, isa_page_pool);
+       __bounce_end_io_read(bio, &isa_page_pool);
 }
 
 static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig,
                return;
 
        if (!passthrough && sectors < bio_sectors(*bio_orig)) {
-               bio = bio_split(*bio_orig, sectors, GFP_NOIO, bounce_bio_split);
+               bio = bio_split(*bio_orig, sectors, GFP_NOIO, &bounce_bio_split);
                bio_chain(bio, *bio_orig);
                generic_make_request(*bio_orig);
                *bio_orig = bio;
        }
        bio = bio_clone_bioset(*bio_orig, GFP_NOIO, passthrough ? NULL :
-                       bounce_bio_set);
+                       &bounce_bio_set);
 
        bio_for_each_segment_all(to, bio, i) {
                struct page *page = to->bv_page;
 
        bio->bi_flags |= (1 << BIO_BOUNCED);
 
-       if (pool == page_pool) {
+       if (pool == &page_pool) {
                bio->bi_end_io = bounce_end_io_write;
                if (rw == READ)
                        bio->bi_end_io = bounce_end_io_read;
        if (!(q->bounce_gfp & GFP_DMA)) {
                if (q->limits.bounce_pfn >= blk_max_pfn)
                        return;
-               pool = page_pool;
+               pool = &page_pool;
        } else {
-               BUG_ON(!isa_page_pool);
-               pool = isa_page_pool;
+               BUG_ON(!mempool_initialized(&isa_page_pool));
+               pool = &isa_page_pool;
        }
 
        /*