--- initial
+++ final
@@ -1,53 +1,53 @@
 struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) {
   int iter_size;
   struct cache_set *c = kzalloc(sizeof(struct cache_set), GFP_KERNEL);
   if (!c) return NULL;
   __module_get(THIS_MODULE);
   closure_init(&c->cl, NULL);
   set_closure_fn(&c->cl, cache_set_free, system_wq);
   closure_init(&c->caching, &c->cl);
   set_closure_fn(&c->caching, __cache_set_unregister, system_wq);
   /* Maybe create continue_at_noreturn() and use it here? */
   closure_set_stopped(&c->cl);
   closure_put(&c->cl);
   kobject_init(&c->kobj, &bch_cache_set_ktype);
   kobject_init(&c->internal, &bch_cache_set_internal_ktype);
   bch_cache_accounting_init(&c->accounting, &c->cl);
   memcpy(c->sb.set_uuid, sb->set_uuid, 16);
   c->sb.block_size = sb->block_size;
   c->sb.bucket_size = sb->bucket_size;
   c->sb.nr_in_set = sb->nr_in_set;
   c->sb.last_mount = sb->last_mount;
   c->bucket_bits = ilog2(sb->bucket_size);
   c->block_bits = ilog2(sb->block_size);
   c->nr_uuids = bucket_bytes(c) / sizeof(struct uuid_entry);
   c->btree_pages = bucket_pages(c);
   if (c->btree_pages > BTREE_MAX_PAGES) c->btree_pages = max_t(int, c->btree_pages / 4, BTREE_MAX_PAGES);
   sema_init(&c->sb_write_mutex, 1);
   mutex_init(&c->bucket_lock);
   init_waitqueue_head(&c->btree_cache_wait);
   init_waitqueue_head(&c->bucket_wait);
   init_waitqueue_head(&c->gc_wait);
   sema_init(&c->uuid_write_mutex, 1);
   spin_lock_init(&c->btree_gc_time.lock);
   spin_lock_init(&c->btree_split_time.lock);
   spin_lock_init(&c->btree_read_time.lock);
   bch_moving_init_cache_set(c);
   INIT_LIST_HEAD(&c->list);
   INIT_LIST_HEAD(&c->cached_devs);
   INIT_LIST_HEAD(&c->btree_cache);
   INIT_LIST_HEAD(&c->btree_cache_freeable);
   INIT_LIST_HEAD(&c->btree_cache_freed);
   INIT_LIST_HEAD(&c->data_buckets);
   c->search = mempool_create_slab_pool(32, bch_search_cache);
   if (!c->search) goto err;
   iter_size = (sb->bucket_size / sb->block_size + 1) * sizeof(struct btree_iter_set);
-  if (!(c->devices = kzalloc(c->nr_uuids * sizeof(void *), GFP_KERNEL)) || !(c->bio_meta = mempool_create_kmalloc_pool(2, sizeof(struct bbio) + sizeof(struct bio_vec) * bucket_pages(c))) || !(c->fill_iter = mempool_create_kmalloc_pool(1, iter_size)) || !(c->bio_split = bioset_create(4, offsetof(struct bbio, bio))) || !(c->uuids = alloc_bucket_pages(GFP_KERNEL, c)) || !(c->moving_gc_wq = alloc_workqueue("bcache_gc", WQ_MEM_RECLAIM, 0)) || bch_journal_alloc(c) || bch_btree_cache_alloc(c) || bch_open_buckets_alloc(c) || bch_bset_sort_state_init(&c->sort, ilog2(c->btree_pages))) goto err;
+  if (!(c->devices = kzalloc(c->nr_uuids * sizeof(void *), GFP_KERNEL)) || !(c->bio_meta = mempool_create_kmalloc_pool(2, sizeof(struct bbio) + sizeof(struct bio_vec) * bucket_pages(c))) || !(c->fill_iter = mempool_create_kmalloc_pool(1, iter_size)) || !(c->bio_split = bioset_create(4, offsetof(struct bbio, bio), BIOSET_NEED_BVECS)) || !(c->uuids = alloc_bucket_pages(GFP_KERNEL, c)) || !(c->moving_gc_wq = alloc_workqueue("bcache_gc", WQ_MEM_RECLAIM, 0)) || bch_journal_alloc(c) || bch_btree_cache_alloc(c) || bch_open_buckets_alloc(c) || bch_bset_sort_state_init(&c->sort, ilog2(c->btree_pages))) goto err;
   c->congested_read_threshold_us = 2000;
   c->congested_write_threshold_us = 20000;
   c->error_limit = 8 << IO_ERROR_SHIFT;
   return c;
 err:
   bch_cache_set_unregister(c);
   return NULL;
 }<sep>@@
expression e1,e2;
@@
-bioset_create(e1,e2)
+bioset_create(e1,e2,BIOSET_NEED_BVECS)