--- initial
+++ final
@@ -1,93 +1,93 @@
 int ppl_init_log(struct r5conf *conf) {
   struct ppl_conf *ppl_conf;
   struct mddev *mddev = conf->mddev;
   int ret = 0;
   int i;
   bool need_cache_flush = false;
   pr_debug("md/raid:%s: enabling distributed Partial Parity Log\n", mdname(conf->mddev));
   if (PAGE_SIZE != 4096) return -EINVAL;
   if (mddev->level != 5) {
     pr_warn("md/raid:%s PPL is not compatible with raid level %d\n", mdname(mddev), mddev->level);
     return -EINVAL;
   }
   if (mddev->bitmap_info.file || mddev->bitmap_info.offset) {
     pr_warn("md/raid:%s PPL is not compatible with bitmap\n", mdname(mddev));
     return -EINVAL;
   }
   if (test_bit(MD_HAS_JOURNAL, &mddev->flags)) {
     pr_warn("md/raid:%s PPL is not compatible with journal\n", mdname(mddev));
     return -EINVAL;
   }
   ppl_conf = kzalloc(sizeof(struct ppl_conf), GFP_KERNEL);
   if (!ppl_conf) return -ENOMEM;
   ppl_conf->mddev = mddev;
   ppl_conf->io_kc = KMEM_CACHE(ppl_io_unit, 0);
   if (!ppl_conf->io_kc) {
     ret = -ENOMEM;
     goto err;
   }
   ppl_conf->io_pool = mempool_create(conf->raid_disks, ppl_io_pool_alloc, ppl_io_pool_free, ppl_conf->io_kc);
   if (!ppl_conf->io_pool) {
     ret = -ENOMEM;
     goto err;
   }
-  ppl_conf->bs = bioset_create(conf->raid_disks, 0);
+  ppl_conf->bs = bioset_create(conf->raid_disks, 0, 0);
   if (!ppl_conf->bs) {
     ret = -ENOMEM;
     goto err;
   }
   ppl_conf->count = conf->raid_disks;
   ppl_conf->child_logs = kcalloc(ppl_conf->count, sizeof(struct ppl_log), GFP_KERNEL);
   if (!ppl_conf->child_logs) {
     ret = -ENOMEM;
     goto err;
   }
   atomic64_set(&ppl_conf->seq, 0);
   INIT_LIST_HEAD(&ppl_conf->no_mem_stripes);
   spin_lock_init(&ppl_conf->no_mem_stripes_lock);
   if (!mddev->external) {
     ppl_conf->signature = ~crc32c_le(~0, mddev->uuid, sizeof(mddev->uuid));
     ppl_conf->block_size = 512;
   } else {
     ppl_conf->block_size = queue_logical_block_size(mddev->queue);
   }
   for (i = 0; i < ppl_conf->count; i++) {
     struct ppl_log *log = &ppl_conf->child_logs[i];
     struct md_rdev *rdev = conf->disks[i].rdev;
     mutex_init(&log->io_mutex);
     spin_lock_init(&log->io_list_lock);
     INIT_LIST_HEAD(&log->io_list);
     log->ppl_conf = ppl_conf;
     log->rdev = rdev;
     if (rdev) {
       struct request_queue *q;
       ret = ppl_validate_rdev(rdev);
       if (ret) goto err;
       q = bdev_get_queue(rdev->bdev);
       if (test_bit(QUEUE_FLAG_WC, &q->queue_flags)) need_cache_flush = true;
     }
   }
   if (need_cache_flush) pr_warn("md/raid:%s: Volatile write-back cache should be disabled on all member drives when using PPL!\n", mdname(mddev));
   /* load and possibly recover the logs from the member disks */
   ret = ppl_load(ppl_conf);
   if (ret) {
     goto err;
   } else if (!mddev->pers && mddev->recovery_cp == 0 && !mddev->degraded && ppl_conf->recovered_entries > 0 && ppl_conf->mismatch_count == 0) {
     /*
      * If we are starting a dirty array and the recovery succeeds
      * without any issues, set the array as clean.
      */
     mddev->recovery_cp = MaxSector;
     set_bit(MD_SB_CHANGE_CLEAN, &mddev->sb_flags);
   } else if (mddev->pers && ppl_conf->mismatch_count > 0) {
     /* no mismatch allowed when enabling PPL for a running array */
     ret = -EINVAL;
     goto err;
   }
   conf->log_private = ppl_conf;
   set_bit(MD_HAS_PPL, &ppl_conf->mddev->flags);
   return 0;
 err:
   __ppl_exit_log(ppl_conf);
   return ret;
 }<sep>@@
expression e1,e2;
identifier x;
@@
struct mddev *x;
...
?-bioset_create(e1,e2)
+bioset_create(e1,e2,0)