/**
  * __blk_queue_split - split a bio and submit the second half
- * @q:       [in] request queue pointer
  * @bio:     [in, out] bio to be split
  * @nr_segs: [out] number of segments in the first bio
  *
  * Split a bio into two bios, chain the two bios, submit the second half and
  * store a pointer to the first half in *@bio. If the second bio is still too
  * big it will be split by a recursive call to this function. Since this
- * function may allocate a new bio from @q->bio_split, it is the responsibility
- * of the caller to ensure that @q is only released after processing of the
+ * function may allocate a new bio from @bio->bi_disk->queue->bio_split, it is
+ * the responsibility of the caller to ensure that
+ * @bio->bi_disk->queue->bio_split is only released after processing of the
  * split bio has finished.
  */
-void __blk_queue_split(struct request_queue *q, struct bio **bio,
-               unsigned int *nr_segs)
+void __blk_queue_split(struct bio **bio, unsigned int *nr_segs)
 {
+       struct request_queue *q = (*bio)->bi_disk->queue;
        struct bio *split = NULL;
 
        switch (bio_op(*bio)) {
 
 /**
  * blk_queue_split - split a bio and submit the second half
- * @q:   [in] request queue pointer
  * @bio: [in, out] bio to be split
  *
  * Split a bio into two bios, chains the two bios, submit the second half and
  * store a pointer to the first half in *@bio. Since this function may allocate
- * a new bio from @q->bio_split, it is the responsibility of the caller to
- * ensure that @q is only released after processing of the split bio has
- * finished.
+ * a new bio from @bio->bi_disk->queue->bio_split, it is the responsibility of
+ * the caller to ensure that @bio->bi_disk->queue->bio_split is only released
+ * after processing of the split bio has finished.
  */
-void blk_queue_split(struct request_queue *q, struct bio **bio)
+void blk_queue_split(struct bio **bio)
 {
        unsigned int nr_segs;
 
-       __blk_queue_split(q, bio, &nr_segs);
+       __blk_queue_split(bio, &nr_segs);
 }
 EXPORT_SYMBOL(blk_queue_split);
 
 
        blk_status_t ret;
 
        blk_queue_bounce(q, &bio);
-       __blk_queue_split(q, &bio, &nr_segs);
+       __blk_queue_split(&bio, &nr_segs);
 
        if (!bio_integrity_prep(bio))
                goto queue_exit;
 
 ssize_t part_timeout_store(struct device *, struct device_attribute *,
                                const char *, size_t);
 
-void __blk_queue_split(struct request_queue *q, struct bio **bio,
-               unsigned int *nr_segs);
+void __blk_queue_split(struct bio **bio, unsigned int *nr_segs);
 int ll_back_merge_fn(struct request *req, struct bio *bio,
                unsigned int nr_segs);
 int ll_front_merge_fn(struct request *req,  struct bio *bio,
 
        struct drbd_device *device = bio->bi_disk->private_data;
        unsigned long start_jif;
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        start_jif = jiffies;
 
 
        char b[BDEVNAME_SIZE];
        struct bio *split;
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        pd = q->queuedata;
        if (!pd) {
 
 
        dev_dbg(&dev->core, "%s\n", __func__);
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        spin_lock_irq(&priv->lock);
        busy = !bio_list_empty(&priv->list);
 
        struct rsxx_bio_meta *bio_meta;
        blk_status_t st = BLK_STS_IOERR;
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        might_sleep();
 
 
                 (unsigned long long)bio->bi_iter.bi_sector,
                 bio->bi_iter.bi_size);
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        spin_lock_irq(&card->lock);
        *card->biotail = bio;
 
         * constraint. Writes can be of arbitrary size.
         */
        if (bio_data_dir(bio) == READ) {
-               blk_queue_split(q, &bio);
+               blk_queue_split(&bio);
                pblk_submit_read(pblk, bio);
        } else {
                /* Prevent deadlock in the case of a modest LUN configuration
                 * leaves at least 256KB available for user I/O.
                 */
                if (pblk_get_secs(bio) > pblk_rl_max_io(&pblk->rl))
-                       blk_queue_split(q, &bio);
+                       blk_queue_split(&bio);
 
                pblk_write_to_cache(pblk, bio, PBLK_IOTYPE_USER);
        }
 
         */
        if (current->bio_list) {
                if (is_abnormal_io(bio))
-                       blk_queue_split(md->queue, &bio);
+                       blk_queue_split(&bio);
                else
                        dm_queue_split(md, ti, &bio);
        }
 
                return BLK_QC_T_NONE;
        }
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        if (mddev == NULL || mddev->pers == NULL) {
                bio_io_error(bio);
 
        int srcu_idx;
 
        /*
-        * The namespace might be going away and the bio might
-        * be moved to a different queue via blk_steal_bios(),
-        * so we need to use the bio_split pool from the original
-        * queue to allocate the bvecs from.
+        * The namespace might be going away and the bio might be moved to a
+        * different queue via blk_steal_bios(), so we need to use the bio_split
+        * pool from the original queue to allocate the bvecs from.
         */
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        srcu_idx = srcu_read_lock(&head->srcu);
        ns = nvme_find_path(head);
 
        unsigned long source_addr;
        unsigned long bytes_done;
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        bytes_done = 0;
        dev_info = bio->bi_disk->private_data;
 
        unsigned long page_addr;
        unsigned long bytes;
 
-       blk_queue_split(q, &bio);
+       blk_queue_split(&bio);
 
        if ((bio->bi_iter.bi_sector & 7) != 0 ||
            (bio->bi_iter.bi_size & 4095) != 0)
 
 extern blk_status_t blk_insert_cloned_request(struct request_queue *q,
                                     struct request *rq);
 extern int blk_rq_append_bio(struct request *rq, struct bio **bio);
-extern void blk_queue_split(struct request_queue *, struct bio **);
+extern void blk_queue_split(struct bio **);
 extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
 extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
                              unsigned int, void __user *);