struct xfs_ioend        *ioend;
        struct bio              *bio;
 
-       bio = bio_alloc_bioset(GFP_NOFS, BIO_MAX_PAGES, xfs_ioend_bioset);
+       bio = bio_alloc_bioset(GFP_NOFS, BIO_MAX_PAGES, &xfs_ioend_bioset);
        xfs_init_bio_from_bh(bio, bh);
 
        ioend = container_of(bio, struct xfs_ioend, io_inline_bio);
 
 #ifndef __XFS_AOPS_H__
 #define __XFS_AOPS_H__
 
-extern struct bio_set *xfs_ioend_bioset;
+extern struct bio_set xfs_ioend_bioset;
 
 /*
  * Types of I/O for bmap clustering and I/O completion tracking.
 
 #include <linux/parser.h>
 
 static const struct super_operations xfs_super_operations;
-struct bio_set *xfs_ioend_bioset;
+struct bio_set xfs_ioend_bioset;
 
 static struct kset *xfs_kset;          /* top-level xfs sysfs dir */
 #ifdef DEBUG
 STATIC int __init
 xfs_init_zones(void)
 {
-       xfs_ioend_bioset = bioset_create(4 * MAX_BUF_PER_PAGE,
+       if (bioset_init(&xfs_ioend_bioset, 4 * MAX_BUF_PER_PAGE,
                        offsetof(struct xfs_ioend, io_inline_bio),
-                       BIOSET_NEED_BVECS);
-       if (!xfs_ioend_bioset)
+                       BIOSET_NEED_BVECS))
                goto out;
 
        xfs_log_ticket_zone = kmem_zone_init(sizeof(xlog_ticket_t),
  out_destroy_log_ticket_zone:
        kmem_zone_destroy(xfs_log_ticket_zone);
  out_free_ioend_bioset:
-       bioset_free(xfs_ioend_bioset);
+       bioset_exit(&xfs_ioend_bioset);
  out:
        return -ENOMEM;
 }
        kmem_zone_destroy(xfs_btree_cur_zone);
        kmem_zone_destroy(xfs_bmap_free_item_zone);
        kmem_zone_destroy(xfs_log_ticket_zone);
-       bioset_free(xfs_ioend_bioset);
+       bioset_exit(&xfs_ioend_bioset);
 }
 
 STATIC int __init