mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'for-4.4/io-poll' of git://git.kernel.dk/linux-block
Pull block IO poll support from Jens Axboe: "Various groups have been doing experimentation around IO polling for (really) fast devices. The code has been reviewed and has been sitting on the side for a few releases, but this is now good enough for coordinated benchmarking and further experimentation. Currently O_DIRECT sync read/write are supported. A framework is in the works that allows scalable stats tracking so we can auto-tune this. And we'll add libaio support as well soon. Fow now, it's an opt-in feature for test purposes" * 'for-4.4/io-poll' of git://git.kernel.dk/linux-block: direct-io: be sure to assign dio->bio_bdev for both paths directio: add block polling support NVMe: add blk polling support block: add block polling support blk-mq: return tag/queue combo in the make_request_fn handlers block: change ->make_request_fn() and users to return a queue cookie
This commit is contained in:
commit
3419b45039
33 changed files with 286 additions and 90 deletions
|
|
@ -323,7 +323,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static void brd_make_request(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t brd_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct block_device *bdev = bio->bi_bdev;
|
||||
struct brd_device *brd = bdev->bd_disk->private_data;
|
||||
|
|
@ -358,9 +358,10 @@ static void brd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
out:
|
||||
bio_endio(bio);
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
io_error:
|
||||
bio_io_error(bio);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
static int brd_rw_page(struct block_device *bdev, sector_t sector,
|
||||
|
|
|
|||
|
|
@ -1448,7 +1448,7 @@ extern int proc_details;
|
|||
/* drbd_req */
|
||||
extern void do_submit(struct work_struct *ws);
|
||||
extern void __drbd_make_request(struct drbd_device *, struct bio *, unsigned long);
|
||||
extern void drbd_make_request(struct request_queue *q, struct bio *bio);
|
||||
extern blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio);
|
||||
extern int drbd_read_remote(struct drbd_device *device, struct drbd_request *req);
|
||||
extern int is_valid_ar_handle(struct drbd_request *, sector_t);
|
||||
|
||||
|
|
|
|||
|
|
@ -1494,7 +1494,7 @@ void do_submit(struct work_struct *ws)
|
|||
}
|
||||
}
|
||||
|
||||
void drbd_make_request(struct request_queue *q, struct bio *bio)
|
||||
blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct drbd_device *device = (struct drbd_device *) q->queuedata;
|
||||
unsigned long start_jif;
|
||||
|
|
@ -1510,6 +1510,7 @@ void drbd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
inc_ap_bio(device);
|
||||
__drbd_make_request(device, bio, start_jif);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
void request_timer_fn(unsigned long data)
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ static struct nullb_queue *nullb_to_queue(struct nullb *nullb)
|
|||
return &nullb->queues[index];
|
||||
}
|
||||
|
||||
static void null_queue_bio(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t null_queue_bio(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct nullb *nullb = q->queuedata;
|
||||
struct nullb_queue *nq = nullb_to_queue(nullb);
|
||||
|
|
@ -331,6 +331,7 @@ static void null_queue_bio(struct request_queue *q, struct bio *bio)
|
|||
cmd->bio = bio;
|
||||
|
||||
null_handle_cmd(cmd);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
static int null_rq_prep_fn(struct request_queue *q, struct request *req)
|
||||
|
|
|
|||
|
|
@ -2441,7 +2441,7 @@ static void pkt_make_request_write(struct request_queue *q, struct bio *bio)
|
|||
}
|
||||
}
|
||||
|
||||
static void pkt_make_request(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t pkt_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct pktcdvd_device *pd;
|
||||
char b[BDEVNAME_SIZE];
|
||||
|
|
@ -2467,7 +2467,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
*/
|
||||
if (bio_data_dir(bio) == READ) {
|
||||
pkt_make_request_read(pd, bio);
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
if (!test_bit(PACKET_WRITABLE, &pd->flags)) {
|
||||
|
|
@ -2499,13 +2499,12 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
pkt_make_request_write(q, split);
|
||||
} while (split != bio);
|
||||
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
end_io:
|
||||
bio_io_error(bio);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void pkt_init_queue(struct pktcdvd_device *pd)
|
||||
{
|
||||
struct request_queue *q = pd->disk->queue;
|
||||
|
|
|
|||
|
|
@ -598,7 +598,7 @@ out:
|
|||
return next;
|
||||
}
|
||||
|
||||
static void ps3vram_make_request(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t ps3vram_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct ps3_system_bus_device *dev = q->queuedata;
|
||||
struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev);
|
||||
|
|
@ -614,11 +614,13 @@ static void ps3vram_make_request(struct request_queue *q, struct bio *bio)
|
|||
spin_unlock_irq(&priv->lock);
|
||||
|
||||
if (busy)
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
|
||||
do {
|
||||
bio = ps3vram_do_bio(dev, bio);
|
||||
} while (bio);
|
||||
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
static int ps3vram_probe(struct ps3_system_bus_device *dev)
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ static void bio_dma_done_cb(struct rsxx_cardinfo *card,
|
|||
}
|
||||
}
|
||||
|
||||
static void rsxx_make_request(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t rsxx_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct rsxx_cardinfo *card = q->queuedata;
|
||||
struct rsxx_bio_meta *bio_meta;
|
||||
|
|
@ -199,7 +199,7 @@ static void rsxx_make_request(struct request_queue *q, struct bio *bio)
|
|||
if (st)
|
||||
goto queue_err;
|
||||
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
|
||||
queue_err:
|
||||
kmem_cache_free(bio_meta_pool, bio_meta);
|
||||
|
|
@ -207,6 +207,7 @@ req_err:
|
|||
if (st)
|
||||
bio->bi_error = st;
|
||||
bio_endio(bio);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
/*----------------- Device Setup -------------------*/
|
||||
|
|
|
|||
|
|
@ -524,7 +524,7 @@ static int mm_check_plugged(struct cardinfo *card)
|
|||
return !!blk_check_plugged(mm_unplug, card, sizeof(struct blk_plug_cb));
|
||||
}
|
||||
|
||||
static void mm_make_request(struct request_queue *q, struct bio *bio)
|
||||
static blk_qc_t mm_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct cardinfo *card = q->queuedata;
|
||||
pr_debug("mm_make_request %llu %u\n",
|
||||
|
|
@ -541,7 +541,7 @@ static void mm_make_request(struct request_queue *q, struct bio *bio)
|
|||
activate(card);
|
||||
spin_unlock_irq(&card->lock);
|
||||
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
static irqreturn_t mm_interrupt(int irq, void *__card)
|
||||
|
|
|
|||
|
|
@ -894,7 +894,7 @@ out:
|
|||
/*
|
||||
* Handler function for all zram I/O requests.
|
||||
*/
|
||||
static void zram_make_request(struct request_queue *queue, struct bio *bio)
|
||||
static blk_qc_t zram_make_request(struct request_queue *queue, struct bio *bio)
|
||||
{
|
||||
struct zram *zram = queue->queuedata;
|
||||
|
||||
|
|
@ -911,11 +911,12 @@ static void zram_make_request(struct request_queue *queue, struct bio *bio)
|
|||
|
||||
__zram_make_request(zram, bio);
|
||||
zram_meta_put(zram);
|
||||
return;
|
||||
return BLK_QC_T_NONE;
|
||||
put_zram:
|
||||
zram_meta_put(zram);
|
||||
error:
|
||||
bio_io_error(bio);
|
||||
return BLK_QC_T_NONE;
|
||||
}
|
||||
|
||||
static void zram_slot_free_notify(struct block_device *bdev,
|
||||
|
|
|
|||
Loading…
Reference in a new issue