Merge tag 'for-5.20/block-2022-08-04' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / block / genhd.c
index e1d5b10..b901fea 100644 (file)
@@ -1151,6 +1151,7 @@ static void disk_release(struct device *dev)
                blk_mq_exit_queue(disk->queue);
 
        blkcg_exit_queue(disk->queue);
+       bioset_exit(&disk->bio_split);
 
        disk_release_events(disk);
        kfree(disk->random);
@@ -1342,9 +1343,12 @@ struct gendisk *__alloc_disk_node(struct request_queue *q, int node_id,
        if (!disk)
                goto out_put_queue;
 
+       if (bioset_init(&disk->bio_split, BIO_POOL_SIZE, 0, 0))
+               goto out_free_disk;
+
        disk->bdi = bdi_alloc(node_id);
        if (!disk->bdi)
-               goto out_free_disk;
+               goto out_free_bioset;
 
        /* bdev_alloc() might need the queue, set before the first call */
        disk->queue = q;
@@ -1382,6 +1386,8 @@ out_destroy_part_tbl:
        iput(disk->part0->bd_inode);
 out_free_bdi:
        bdi_put(disk->bdi);
+out_free_bioset:
+       bioset_exit(&disk->bio_split);
 out_free_disk:
        kfree(disk);
 out_put_queue: