Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

block: change ->make_request_fn() and users to return a queue cookie

No functional changes in this patch, but it prepares us for returning
a more useful cookie related to the IO that was queued up.

Signed-off-by: Jens Axboe <axboe@fb.com>
Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: Keith Busch <keith.busch@intel.com>

+127 -71
+2 -1
arch/m68k/emu/nfblock.c
··· 59 59 struct gendisk *disk; 60 60 }; 61 61 62 - static void nfhd_make_request(struct request_queue *queue, struct bio *bio) 62 + static blk_qc_t nfhd_make_request(struct request_queue *queue, struct bio *bio) 63 63 { 64 64 struct nfhd_device *dev = queue->queuedata; 65 65 struct bio_vec bvec; ··· 77 77 sec += len; 78 78 } 79 79 bio_endio(bio); 80 + return BLK_QC_T_NONE; 80 81 } 81 82 82 83 static int nfhd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
+3 -2
arch/powerpc/sysdev/axonram.c
··· 103 103 * axon_ram_make_request - make_request() method for block device 104 104 * @queue, @bio: see blk_queue_make_request() 105 105 */ 106 - static void 106 + static blk_qc_t 107 107 axon_ram_make_request(struct request_queue *queue, struct bio *bio) 108 108 { 109 109 struct axon_ram_bank *bank = bio->bi_bdev->bd_disk->private_data; ··· 120 120 bio_for_each_segment(vec, bio, iter) { 121 121 if (unlikely(phys_mem + vec.bv_len > phys_end)) { 122 122 bio_io_error(bio); 123 - return; 123 + return BLK_QC_T_NONE; 124 124 } 125 125 126 126 user_mem = page_address(vec.bv_page) + vec.bv_offset; ··· 133 133 transfered += vec.bv_len; 134 134 } 135 135 bio_endio(bio); 136 + return BLK_QC_T_NONE; 136 137 } 137 138 138 139 /**
+2 -1
arch/xtensa/platforms/iss/simdisk.c
··· 101 101 spin_unlock(&dev->lock); 102 102 } 103 103 104 - static void simdisk_make_request(struct request_queue *q, struct bio *bio) 104 + static blk_qc_t simdisk_make_request(struct request_queue *q, struct bio *bio) 105 105 { 106 106 struct simdisk *dev = q->queuedata; 107 107 struct bio_vec bvec; ··· 119 119 } 120 120 121 121 bio_endio(bio); 122 + return BLK_QC_T_NONE; 122 123 } 123 124 124 125 static int simdisk_open(struct block_device *bdev, fmode_t mode)
+16 -10
block/blk-core.c
··· 809 809 } 810 810 EXPORT_SYMBOL(blk_init_queue_node); 811 811 812 - static void blk_queue_bio(struct request_queue *q, struct bio *bio); 812 + static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio); 813 813 814 814 struct request_queue * 815 815 blk_init_allocated_queue(struct request_queue *q, request_fn_proc *rfn, ··· 1678 1678 blk_rq_bio_prep(req->q, req, bio); 1679 1679 } 1680 1680 1681 - static void blk_queue_bio(struct request_queue *q, struct bio *bio) 1681 + static blk_qc_t blk_queue_bio(struct request_queue *q, struct bio *bio) 1682 1682 { 1683 1683 const bool sync = !!(bio->bi_rw & REQ_SYNC); 1684 1684 struct blk_plug *plug; ··· 1698 1698 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) { 1699 1699 bio->bi_error = -EIO; 1700 1700 bio_endio(bio); 1701 - return; 1701 + return BLK_QC_T_NONE; 1702 1702 } 1703 1703 1704 1704 if (bio->bi_rw & (REQ_FLUSH | REQ_FUA)) { ··· 1713 1713 */ 1714 1714 if (!blk_queue_nomerges(q)) { 1715 1715 if (blk_attempt_plug_merge(q, bio, &request_count, NULL)) 1716 - return; 1716 + return BLK_QC_T_NONE; 1717 1717 } else 1718 1718 request_count = blk_plug_queued_count(q); 1719 1719 ··· 1791 1791 out_unlock: 1792 1792 spin_unlock_irq(q->queue_lock); 1793 1793 } 1794 + 1795 + return BLK_QC_T_NONE; 1794 1796 } 1795 1797 1796 1798 /* ··· 1998 1996 * a lower device by calling into generic_make_request recursively, which 1999 1997 * means the bio should NOT be touched after the call to ->make_request_fn. 2000 1998 */ 2001 - void generic_make_request(struct bio *bio) 1999 + blk_qc_t generic_make_request(struct bio *bio) 2002 2000 { 2003 2001 struct bio_list bio_list_on_stack; 2002 + blk_qc_t ret = BLK_QC_T_NONE; 2004 2003 2005 2004 if (!generic_make_request_checks(bio)) 2006 - return; 2005 + goto out; 2007 2006 2008 2007 /* 2009 2008 * We only want one ->make_request_fn to be active at a time, else ··· 2018 2015 */ 2019 2016 if (current->bio_list) { 2020 2017 bio_list_add(current->bio_list, bio); 2021 - return; 2018 + goto out; 2022 2019 } 2023 2020 2024 2021 /* following loop may be a bit non-obvious, and so deserves some ··· 2043 2040 2044 2041 if (likely(blk_queue_enter(q, __GFP_WAIT) == 0)) { 2045 2042 2046 - q->make_request_fn(q, bio); 2043 + ret = q->make_request_fn(q, bio); 2047 2044 2048 2045 blk_queue_exit(q); 2049 2046 ··· 2056 2053 } 2057 2054 } while (bio); 2058 2055 current->bio_list = NULL; /* deactivate */ 2056 + 2057 + out: 2058 + return ret; 2059 2059 } 2060 2060 EXPORT_SYMBOL(generic_make_request); 2061 2061 ··· 2072 2066 * interfaces; @bio must be presetup and ready for I/O. 2073 2067 * 2074 2068 */ 2075 - void submit_bio(int rw, struct bio *bio) 2069 + blk_qc_t submit_bio(int rw, struct bio *bio) 2076 2070 { 2077 2071 bio->bi_rw |= rw; 2078 2072 ··· 2106 2100 } 2107 2101 } 2108 2102 2109 - generic_make_request(bio); 2103 + return generic_make_request(bio); 2110 2104 } 2111 2105 EXPORT_SYMBOL(submit_bio); 2112 2106
+14 -12
block/blk-mq.c
··· 1235 1235 * but will attempt to bypass the hctx queueing if we can go straight to 1236 1236 * hardware for SYNC IO. 1237 1237 */ 1238 - static void blk_mq_make_request(struct request_queue *q, struct bio *bio) 1238 + static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio) 1239 1239 { 1240 1240 const int is_sync = rw_is_sync(bio->bi_rw); 1241 1241 const int is_flush_fua = bio->bi_rw & (REQ_FLUSH | REQ_FUA); ··· 1249 1249 1250 1250 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) { 1251 1251 bio_io_error(bio); 1252 - return; 1252 + return BLK_QC_T_NONE; 1253 1253 } 1254 1254 1255 1255 blk_queue_split(q, &bio, q->bio_split); ··· 1257 1257 if (!is_flush_fua && !blk_queue_nomerges(q)) { 1258 1258 if (blk_attempt_plug_merge(q, bio, &request_count, 1259 1259 &same_queue_rq)) 1260 - return; 1260 + return BLK_QC_T_NONE; 1261 1261 } else 1262 1262 request_count = blk_plug_queued_count(q); 1263 1263 1264 1264 rq = blk_mq_map_request(q, bio, &data); 1265 1265 if (unlikely(!rq)) 1266 - return; 1266 + return BLK_QC_T_NONE; 1267 1267 1268 1268 if (unlikely(is_flush_fua)) { 1269 1269 blk_mq_bio_to_request(rq, bio); ··· 1302 1302 old_rq = rq; 1303 1303 blk_mq_put_ctx(data.ctx); 1304 1304 if (!old_rq) 1305 - return; 1305 + return BLK_QC_T_NONE; 1306 1306 if (!blk_mq_direct_issue_request(old_rq)) 1307 - return; 1307 + return BLK_QC_T_NONE; 1308 1308 blk_mq_insert_request(old_rq, false, true, true); 1309 - return; 1309 + return BLK_QC_T_NONE; 1310 1310 } 1311 1311 1312 1312 if (!blk_mq_merge_queue_io(data.hctx, data.ctx, rq, bio)) { ··· 1320 1320 blk_mq_run_hw_queue(data.hctx, !is_sync || is_flush_fua); 1321 1321 } 1322 1322 blk_mq_put_ctx(data.ctx); 1323 + return BLK_QC_T_NONE; 1323 1324 } 1324 1325 1325 1326 /* 1326 1327 * Single hardware queue variant. This will attempt to use any per-process 1327 1328 * plug for merging and IO deferral. 1328 1329 */ 1329 - static void blk_sq_make_request(struct request_queue *q, struct bio *bio) 1330 + static blk_qc_t blk_sq_make_request(struct request_queue *q, struct bio *bio) 1330 1331 { 1331 1332 const int is_sync = rw_is_sync(bio->bi_rw); 1332 1333 const int is_flush_fua = bio->bi_rw & (REQ_FLUSH | REQ_FUA); ··· 1340 1339 1341 1340 if (bio_integrity_enabled(bio) && bio_integrity_prep(bio)) { 1342 1341 bio_io_error(bio); 1343 - return; 1342 + return BLK_QC_T_NONE; 1344 1343 } 1345 1344 1346 1345 blk_queue_split(q, &bio, q->bio_split); 1347 1346 1348 1347 if (!is_flush_fua && !blk_queue_nomerges(q) && 1349 1348 blk_attempt_plug_merge(q, bio, &request_count, NULL)) 1350 - return; 1349 + return BLK_QC_T_NONE; 1351 1350 1352 1351 rq = blk_mq_map_request(q, bio, &data); 1353 1352 if (unlikely(!rq)) 1354 - return; 1353 + return BLK_QC_T_NONE; 1355 1354 1356 1355 if (unlikely(is_flush_fua)) { 1357 1356 blk_mq_bio_to_request(rq, bio); ··· 1375 1374 } 1376 1375 list_add_tail(&rq->queuelist, &plug->mq_list); 1377 1376 blk_mq_put_ctx(data.ctx); 1378 - return; 1377 + return BLK_QC_T_NONE; 1379 1378 } 1380 1379 1381 1380 if (!blk_mq_merge_queue_io(data.hctx, data.ctx, rq, bio)) { ··· 1390 1389 } 1391 1390 1392 1391 blk_mq_put_ctx(data.ctx); 1392 + return BLK_QC_T_NONE; 1393 1393 } 1394 1394 1395 1395 /*
+3 -2
drivers/block/brd.c
··· 323 323 return err; 324 324 } 325 325 326 - static void brd_make_request(struct request_queue *q, struct bio *bio) 326 + static blk_qc_t brd_make_request(struct request_queue *q, struct bio *bio) 327 327 { 328 328 struct block_device *bdev = bio->bi_bdev; 329 329 struct brd_device *brd = bdev->bd_disk->private_data; ··· 358 358 359 359 out: 360 360 bio_endio(bio); 361 - return; 361 + return BLK_QC_T_NONE; 362 362 io_error: 363 363 bio_io_error(bio); 364 + return BLK_QC_T_NONE; 364 365 } 365 366 366 367 static int brd_rw_page(struct block_device *bdev, sector_t sector,
+1 -1
drivers/block/drbd/drbd_int.h
··· 1448 1448 /* drbd_req */ 1449 1449 extern void do_submit(struct work_struct *ws); 1450 1450 extern void __drbd_make_request(struct drbd_device *, struct bio *, unsigned long); 1451 - extern void drbd_make_request(struct request_queue *q, struct bio *bio); 1451 + extern blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio); 1452 1452 extern int drbd_read_remote(struct drbd_device *device, struct drbd_request *req); 1453 1453 extern int is_valid_ar_handle(struct drbd_request *, sector_t); 1454 1454
+2 -1
drivers/block/drbd/drbd_req.c
··· 1494 1494 } 1495 1495 } 1496 1496 1497 - void drbd_make_request(struct request_queue *q, struct bio *bio) 1497 + blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio) 1498 1498 { 1499 1499 struct drbd_device *device = (struct drbd_device *) q->queuedata; 1500 1500 unsigned long start_jif; ··· 1510 1510 1511 1511 inc_ap_bio(device); 1512 1512 __drbd_make_request(device, bio, start_jif); 1513 + return BLK_QC_T_NONE; 1513 1514 } 1514 1515 1515 1516 void request_timer_fn(unsigned long data)
+2 -1
drivers/block/null_blk.c
··· 321 321 return &nullb->queues[index]; 322 322 } 323 323 324 - static void null_queue_bio(struct request_queue *q, struct bio *bio) 324 + static blk_qc_t null_queue_bio(struct request_queue *q, struct bio *bio) 325 325 { 326 326 struct nullb *nullb = q->queuedata; 327 327 struct nullb_queue *nq = nullb_to_queue(nullb); ··· 331 331 cmd->bio = bio; 332 332 333 333 null_handle_cmd(cmd); 334 + return BLK_QC_T_NONE; 334 335 } 335 336 336 337 static int null_rq_prep_fn(struct request_queue *q, struct request *req)
+4 -5
drivers/block/pktcdvd.c
··· 2441 2441 } 2442 2442 } 2443 2443 2444 - static void pkt_make_request(struct request_queue *q, struct bio *bio) 2444 + static blk_qc_t pkt_make_request(struct request_queue *q, struct bio *bio) 2445 2445 { 2446 2446 struct pktcdvd_device *pd; 2447 2447 char b[BDEVNAME_SIZE]; ··· 2467 2467 */ 2468 2468 if (bio_data_dir(bio) == READ) { 2469 2469 pkt_make_request_read(pd, bio); 2470 - return; 2470 + return BLK_QC_T_NONE; 2471 2471 } 2472 2472 2473 2473 if (!test_bit(PACKET_WRITABLE, &pd->flags)) { ··· 2499 2499 pkt_make_request_write(q, split); 2500 2500 } while (split != bio); 2501 2501 2502 - return; 2502 + return BLK_QC_T_NONE; 2503 2503 end_io: 2504 2504 bio_io_error(bio); 2505 + return BLK_QC_T_NONE; 2505 2506 } 2506 - 2507 - 2508 2507 2509 2508 static void pkt_init_queue(struct pktcdvd_device *pd) 2510 2509 {
+4 -2
drivers/block/ps3vram.c
··· 598 598 return next; 599 599 } 600 600 601 - static void ps3vram_make_request(struct request_queue *q, struct bio *bio) 601 + static blk_qc_t ps3vram_make_request(struct request_queue *q, struct bio *bio) 602 602 { 603 603 struct ps3_system_bus_device *dev = q->queuedata; 604 604 struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev); ··· 614 614 spin_unlock_irq(&priv->lock); 615 615 616 616 if (busy) 617 - return; 617 + return BLK_QC_T_NONE; 618 618 619 619 do { 620 620 bio = ps3vram_do_bio(dev, bio); 621 621 } while (bio); 622 + 623 + return BLK_QC_T_NONE; 622 624 } 623 625 624 626 static int ps3vram_probe(struct ps3_system_bus_device *dev)
+3 -2
drivers/block/rsxx/dev.c
··· 145 145 } 146 146 } 147 147 148 - static void rsxx_make_request(struct request_queue *q, struct bio *bio) 148 + static blk_qc_t rsxx_make_request(struct request_queue *q, struct bio *bio) 149 149 { 150 150 struct rsxx_cardinfo *card = q->queuedata; 151 151 struct rsxx_bio_meta *bio_meta; ··· 199 199 if (st) 200 200 goto queue_err; 201 201 202 - return; 202 + return BLK_QC_T_NONE; 203 203 204 204 queue_err: 205 205 kmem_cache_free(bio_meta_pool, bio_meta); ··· 207 207 if (st) 208 208 bio->bi_error = st; 209 209 bio_endio(bio); 210 + return BLK_QC_T_NONE; 210 211 } 211 212 212 213 /*----------------- Device Setup -------------------*/
+2 -2
drivers/block/umem.c
··· 524 524 return !!blk_check_plugged(mm_unplug, card, sizeof(struct blk_plug_cb)); 525 525 } 526 526 527 - static void mm_make_request(struct request_queue *q, struct bio *bio) 527 + static blk_qc_t mm_make_request(struct request_queue *q, struct bio *bio) 528 528 { 529 529 struct cardinfo *card = q->queuedata; 530 530 pr_debug("mm_make_request %llu %u\n", ··· 541 541 activate(card); 542 542 spin_unlock_irq(&card->lock); 543 543 544 - return; 544 + return BLK_QC_T_NONE; 545 545 } 546 546 547 547 static irqreturn_t mm_interrupt(int irq, void *__card)
+3 -2
drivers/block/zram/zram_drv.c
··· 894 894 /* 895 895 * Handler function for all zram I/O requests. 896 896 */ 897 - static void zram_make_request(struct request_queue *queue, struct bio *bio) 897 + static blk_qc_t zram_make_request(struct request_queue *queue, struct bio *bio) 898 898 { 899 899 struct zram *zram = queue->queuedata; 900 900 ··· 911 911 912 912 __zram_make_request(zram, bio); 913 913 zram_meta_put(zram); 914 - return; 914 + return BLK_QC_T_NONE; 915 915 put_zram: 916 916 zram_meta_put(zram); 917 917 error: 918 918 bio_io_error(bio); 919 + return BLK_QC_T_NONE; 919 920 } 920 921 921 922 static void zram_slot_free_notify(struct block_device *bdev,
+5 -4
drivers/lightnvm/rrpc.c
··· 803 803 return NVM_IO_OK; 804 804 } 805 805 806 - static void rrpc_make_rq(struct request_queue *q, struct bio *bio) 806 + static blk_qc_t rrpc_make_rq(struct request_queue *q, struct bio *bio) 807 807 { 808 808 struct rrpc *rrpc = q->queuedata; 809 809 struct nvm_rq *rqd; ··· 811 811 812 812 if (bio->bi_rw & REQ_DISCARD) { 813 813 rrpc_discard(rrpc, bio); 814 - return; 814 + return BLK_QC_T_NONE; 815 815 } 816 816 817 817 rqd = mempool_alloc(rrpc->rq_pool, GFP_KERNEL); 818 818 if (!rqd) { 819 819 pr_err_ratelimited("rrpc: not able to queue bio."); 820 820 bio_io_error(bio); 821 - return; 821 + return BLK_QC_T_NONE; 822 822 } 823 823 memset(rqd, 0, sizeof(struct nvm_rq)); 824 824 825 825 err = rrpc_submit_io(rrpc, bio, rqd, NVM_IOTYPE_NONE); 826 826 switch (err) { 827 827 case NVM_IO_OK: 828 - return; 828 + return BLK_QC_T_NONE; 829 829 case NVM_IO_ERR: 830 830 bio_io_error(bio); 831 831 break; ··· 841 841 } 842 842 843 843 mempool_free(rqd, rrpc->rq_pool); 844 + return BLK_QC_T_NONE; 844 845 } 845 846 846 847 static void rrpc_requeue(struct work_struct *work)
+8 -3
drivers/md/bcache/request.c
··· 958 958 959 959 /* Cached devices - read & write stuff */ 960 960 961 - static void cached_dev_make_request(struct request_queue *q, struct bio *bio) 961 + static blk_qc_t cached_dev_make_request(struct request_queue *q, 962 + struct bio *bio) 962 963 { 963 964 struct search *s; 964 965 struct bcache_device *d = bio->bi_bdev->bd_disk->private_data; ··· 998 997 else 999 998 generic_make_request(bio); 1000 999 } 1000 + 1001 + return BLK_QC_T_NONE; 1001 1002 } 1002 1003 1003 1004 static int cached_dev_ioctl(struct bcache_device *d, fmode_t mode, ··· 1073 1070 continue_at(cl, search_free, NULL); 1074 1071 } 1075 1072 1076 - static void flash_dev_make_request(struct request_queue *q, struct bio *bio) 1073 + static blk_qc_t flash_dev_make_request(struct request_queue *q, 1074 + struct bio *bio) 1077 1075 { 1078 1076 struct search *s; 1079 1077 struct closure *cl; ··· 1097 1093 continue_at_nobarrier(&s->cl, 1098 1094 flash_dev_nodata, 1099 1095 bcache_wq); 1100 - return; 1096 + return BLK_QC_T_NONE; 1101 1097 } else if (rw) { 1102 1098 bch_keybuf_check_overlapping(&s->iop.c->moving_gc_keys, 1103 1099 &KEY(d->id, bio->bi_iter.bi_sector, 0), ··· 1113 1109 } 1114 1110 1115 1111 continue_at(cl, search_free, NULL); 1112 + return BLK_QC_T_NONE; 1116 1113 } 1117 1114 1118 1115 static int flash_dev_ioctl(struct bcache_device *d, fmode_t mode,
+3 -3
drivers/md/dm.c
··· 1755 1755 * The request function that just remaps the bio built up by 1756 1756 * dm_merge_bvec. 1757 1757 */ 1758 - static void dm_make_request(struct request_queue *q, struct bio *bio) 1758 + static blk_qc_t dm_make_request(struct request_queue *q, struct bio *bio) 1759 1759 { 1760 1760 int rw = bio_data_dir(bio); 1761 1761 struct mapped_device *md = q->queuedata; ··· 1774 1774 queue_io(md, bio); 1775 1775 else 1776 1776 bio_io_error(bio); 1777 - return; 1777 + return BLK_QC_T_NONE; 1778 1778 } 1779 1779 1780 1780 __split_and_process_bio(md, map, bio); 1781 1781 dm_put_live_table(md, srcu_idx); 1782 - return; 1782 + return BLK_QC_T_NONE; 1783 1783 } 1784 1784 1785 1785 int dm_request_based(struct mapped_device *md)
+5 -3
drivers/md/md.c
··· 250 250 * call has finished, the bio has been linked into some internal structure 251 251 * and so is visible to ->quiesce(), so we don't need the refcount any more. 252 252 */ 253 - static void md_make_request(struct request_queue *q, struct bio *bio) 253 + static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio) 254 254 { 255 255 const int rw = bio_data_dir(bio); 256 256 struct mddev *mddev = q->queuedata; ··· 262 262 if (mddev == NULL || mddev->pers == NULL 263 263 || !mddev->ready) { 264 264 bio_io_error(bio); 265 - return; 265 + return BLK_QC_T_NONE; 266 266 } 267 267 if (mddev->ro == 1 && unlikely(rw == WRITE)) { 268 268 if (bio_sectors(bio) != 0) 269 269 bio->bi_error = -EROFS; 270 270 bio_endio(bio); 271 - return; 271 + return BLK_QC_T_NONE; 272 272 } 273 273 smp_rmb(); /* Ensure implications of 'active' are visible */ 274 274 rcu_read_lock(); ··· 302 302 303 303 if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended) 304 304 wake_up(&mddev->sb_wait); 305 + 306 + return BLK_QC_T_NONE; 305 307 } 306 308 307 309 /* mddev_suspend makes sure no new requests are submitted
+2 -1
drivers/nvdimm/blk.c
··· 161 161 return err; 162 162 } 163 163 164 - static void nd_blk_make_request(struct request_queue *q, struct bio *bio) 164 + static blk_qc_t nd_blk_make_request(struct request_queue *q, struct bio *bio) 165 165 { 166 166 struct block_device *bdev = bio->bi_bdev; 167 167 struct gendisk *disk = bdev->bd_disk; ··· 208 208 209 209 out: 210 210 bio_endio(bio); 211 + return BLK_QC_T_NONE; 211 212 } 212 213 213 214 static int nd_blk_rw_bytes(struct nd_namespace_common *ndns,
+2 -1
drivers/nvdimm/btt.c
··· 1150 1150 return ret; 1151 1151 } 1152 1152 1153 - static void btt_make_request(struct request_queue *q, struct bio *bio) 1153 + static blk_qc_t btt_make_request(struct request_queue *q, struct bio *bio) 1154 1154 { 1155 1155 struct bio_integrity_payload *bip = bio_integrity(bio); 1156 1156 struct btt *btt = q->queuedata; ··· 1198 1198 1199 1199 out: 1200 1200 bio_endio(bio); 1201 + return BLK_QC_T_NONE; 1201 1202 } 1202 1203 1203 1204 static int btt_rw_page(struct block_device *bdev, sector_t sector,
+2 -1
drivers/nvdimm/pmem.c
··· 64 64 kunmap_atomic(mem); 65 65 } 66 66 67 - static void pmem_make_request(struct request_queue *q, struct bio *bio) 67 + static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio) 68 68 { 69 69 bool do_acct; 70 70 unsigned long start; ··· 84 84 wmb_pmem(); 85 85 86 86 bio_endio(bio); 87 + return BLK_QC_T_NONE; 87 88 } 88 89 89 90 static int pmem_rw_page(struct block_device *bdev, sector_t sector,
+5 -3
drivers/s390/block/dcssblk.c
··· 27 27 28 28 static int dcssblk_open(struct block_device *bdev, fmode_t mode); 29 29 static void dcssblk_release(struct gendisk *disk, fmode_t mode); 30 - static void dcssblk_make_request(struct request_queue *q, struct bio *bio); 30 + static blk_qc_t dcssblk_make_request(struct request_queue *q, 31 + struct bio *bio); 31 32 static long dcssblk_direct_access(struct block_device *bdev, sector_t secnum, 32 33 void __pmem **kaddr, unsigned long *pfn); 33 34 ··· 816 815 up_write(&dcssblk_devices_sem); 817 816 } 818 817 819 - static void 818 + static blk_qc_t 820 819 dcssblk_make_request(struct request_queue *q, struct bio *bio) 821 820 { 822 821 struct dcssblk_dev_info *dev_info; ··· 875 874 bytes_done += bvec.bv_len; 876 875 } 877 876 bio_endio(bio); 878 - return; 877 + return BLK_QC_T_NONE; 879 878 fail: 880 879 bio_io_error(bio); 880 + return BLK_QC_T_NONE; 881 881 } 882 882 883 883 static long
+3 -2
drivers/s390/block/xpram.c
··· 181 181 /* 182 182 * Block device make request function. 183 183 */ 184 - static void xpram_make_request(struct request_queue *q, struct bio *bio) 184 + static blk_qc_t xpram_make_request(struct request_queue *q, struct bio *bio) 185 185 { 186 186 xpram_device_t *xdev = bio->bi_bdev->bd_disk->private_data; 187 187 struct bio_vec bvec; ··· 223 223 } 224 224 } 225 225 bio_endio(bio); 226 - return; 226 + return BLK_QC_T_NONE; 227 227 fail: 228 228 bio_io_error(bio); 229 + return BLK_QC_T_NONE; 229 230 } 230 231 231 232 static int xpram_getgeo(struct block_device *bdev, struct hd_geometry *geo)
+3 -2
drivers/staging/lustre/lustre/llite/lloop.c
··· 333 333 return count; 334 334 } 335 335 336 - static void loop_make_request(struct request_queue *q, struct bio *old_bio) 336 + static blk_qc_t loop_make_request(struct request_queue *q, struct bio *old_bio) 337 337 { 338 338 struct lloop_device *lo = q->queuedata; 339 339 int rw = bio_rw(old_bio); ··· 364 364 goto err; 365 365 } 366 366 loop_add_bio(lo, old_bio); 367 - return; 367 + return BLK_QC_T_NONE; 368 368 err: 369 369 bio_io_error(old_bio); 370 + return BLK_QC_T_NONE; 370 371 } 371 372 372 373 static inline void loop_handle_bio(struct lloop_device *lo, struct bio *bio)
+24
include/linux/blk_types.h
··· 244 244 #define REQ_MQ_INFLIGHT (1ULL << __REQ_MQ_INFLIGHT) 245 245 #define REQ_NO_TIMEOUT (1ULL << __REQ_NO_TIMEOUT) 246 246 247 + typedef unsigned int blk_qc_t; 248 + #define BLK_QC_T_NONE -1U 249 + #define BLK_QC_T_SHIFT 16 250 + 251 + static inline bool blk_qc_t_valid(blk_qc_t cookie) 252 + { 253 + return cookie != BLK_QC_T_NONE; 254 + } 255 + 256 + static inline blk_qc_t blk_tag_to_qc_t(unsigned int tag, unsigned int queue_num) 257 + { 258 + return tag | (queue_num << BLK_QC_T_SHIFT); 259 + } 260 + 261 + static inline unsigned int blk_qc_t_to_queue_num(blk_qc_t cookie) 262 + { 263 + return cookie >> BLK_QC_T_SHIFT; 264 + } 265 + 266 + static inline unsigned int blk_qc_t_to_tag(blk_qc_t cookie) 267 + { 268 + return cookie & 0xffff; 269 + } 270 + 247 271 #endif /* __LINUX_BLK_TYPES_H */
+2 -2
include/linux/blkdev.h
··· 209 209 struct blk_queue_ctx; 210 210 211 211 typedef void (request_fn_proc) (struct request_queue *q); 212 - typedef void (make_request_fn) (struct request_queue *q, struct bio *bio); 212 + typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio); 213 213 typedef int (prep_rq_fn) (struct request_queue *, struct request *); 214 214 typedef void (unprep_rq_fn) (struct request_queue *, struct request *); 215 215 ··· 761 761 762 762 extern int blk_register_queue(struct gendisk *disk); 763 763 extern void blk_unregister_queue(struct gendisk *disk); 764 - extern void generic_make_request(struct bio *bio); 764 + extern blk_qc_t generic_make_request(struct bio *bio); 765 765 extern void blk_rq_init(struct request_queue *q, struct request *rq); 766 766 extern void blk_put_request(struct request *); 767 767 extern void __blk_put_request(struct request_queue *, struct request *);
+1 -1
include/linux/fs.h
··· 2625 2625 extern void inode_sb_list_add(struct inode *inode); 2626 2626 2627 2627 #ifdef CONFIG_BLOCK 2628 - extern void submit_bio(int, struct bio *); 2628 + extern blk_qc_t submit_bio(int, struct bio *); 2629 2629 extern int bdev_read_only(struct block_device *); 2630 2630 #endif 2631 2631 extern int set_blocksize(struct block_device *, int);
+1 -1
include/linux/lightnvm.h
··· 426 426 return ppa; 427 427 } 428 428 429 - typedef void (nvm_tgt_make_rq_fn)(struct request_queue *, struct bio *); 429 + typedef blk_qc_t (nvm_tgt_make_rq_fn)(struct request_queue *, struct bio *); 430 430 typedef sector_t (nvm_tgt_capacity_fn)(void *); 431 431 typedef int (nvm_tgt_end_io_fn)(struct nvm_rq *, int); 432 432 typedef void *(nvm_tgt_init_fn)(struct nvm_dev *, struct gendisk *, int, int);