mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
block: remove support for bio remapping from ->make_request
There is very little benefit in allowing to let a ->make_request instance update the bios device and sector and loop around it in __generic_make_request when we can archive the same through calling generic_make_request from the driver and letting the loop in generic_make_request handle it. Note that various drivers got the return value from ->make_request and returned non-zero values for errors. Signed-off-by: Christoph Hellwig <[email protected]> Acked-by: NeilBrown <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
c20e8de27f
commit
5a7bbad27a
25 changed files with 151 additions and 215 deletions
|
|
@ -159,7 +159,7 @@ aoeblk_release(struct gendisk *disk, fmode_t mode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
static void
|
||||
aoeblk_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct sk_buff_head queue;
|
||||
|
|
@ -172,25 +172,25 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio)
|
|||
if (bio == NULL) {
|
||||
printk(KERN_ERR "aoe: bio is NULL\n");
|
||||
BUG();
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
d = bio->bi_bdev->bd_disk->private_data;
|
||||
if (d == NULL) {
|
||||
printk(KERN_ERR "aoe: bd_disk->private_data is NULL\n");
|
||||
BUG();
|
||||
bio_endio(bio, -ENXIO);
|
||||
return 0;
|
||||
return;
|
||||
} else if (bio->bi_io_vec == NULL) {
|
||||
printk(KERN_ERR "aoe: bi_io_vec is NULL\n");
|
||||
BUG();
|
||||
bio_endio(bio, -ENXIO);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
buf = mempool_alloc(d->bufpool, GFP_NOIO);
|
||||
if (buf == NULL) {
|
||||
printk(KERN_INFO "aoe: buf allocation failure\n");
|
||||
bio_endio(bio, -ENOMEM);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
memset(buf, 0, sizeof(*buf));
|
||||
INIT_LIST_HEAD(&buf->bufs);
|
||||
|
|
@ -211,7 +211,7 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio)
|
|||
spin_unlock_irqrestore(&d->lock, flags);
|
||||
mempool_free(buf, d->bufpool);
|
||||
bio_endio(bio, -ENXIO);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
list_add_tail(&buf->bufs, &d->bufq);
|
||||
|
|
@ -222,8 +222,6 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
spin_unlock_irqrestore(&d->lock, flags);
|
||||
aoenet_xmit(&queue);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
|||
|
|
@ -323,7 +323,7 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int brd_make_request(struct request_queue *q, struct bio *bio)
|
||||
static void 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;
|
||||
|
|
@ -359,8 +359,6 @@ static int brd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
out:
|
||||
bio_endio(bio, err);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_XIP
|
||||
|
|
|
|||
|
|
@ -1507,7 +1507,7 @@ extern void drbd_free_mdev(struct drbd_conf *mdev);
|
|||
extern int proc_details;
|
||||
|
||||
/* drbd_req */
|
||||
extern int drbd_make_request(struct request_queue *q, struct bio *bio);
|
||||
extern void drbd_make_request(struct request_queue *q, struct bio *bio);
|
||||
extern int drbd_read_remote(struct drbd_conf *mdev, struct drbd_request *req);
|
||||
extern int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct bio_vec *bvec);
|
||||
extern int is_valid_ar_handle(struct drbd_request *, sector_t);
|
||||
|
|
|
|||
|
|
@ -1073,7 +1073,7 @@ static int drbd_fail_request_early(struct drbd_conf *mdev, int is_write)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int drbd_make_request(struct request_queue *q, struct bio *bio)
|
||||
void drbd_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
unsigned int s_enr, e_enr;
|
||||
struct drbd_conf *mdev = (struct drbd_conf *) q->queuedata;
|
||||
|
|
@ -1081,7 +1081,7 @@ int drbd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
if (drbd_fail_request_early(mdev, bio_data_dir(bio) & WRITE)) {
|
||||
bio_endio(bio, -EPERM);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
start_time = jiffies;
|
||||
|
|
@ -1100,7 +1100,8 @@ int drbd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
if (likely(s_enr == e_enr)) {
|
||||
inc_ap_bio(mdev, 1);
|
||||
return drbd_make_request_common(mdev, bio, start_time);
|
||||
drbd_make_request_common(mdev, bio, start_time);
|
||||
return;
|
||||
}
|
||||
|
||||
/* can this bio be split generically?
|
||||
|
|
@ -1148,7 +1149,6 @@ int drbd_make_request(struct request_queue *q, struct bio *bio)
|
|||
|
||||
bio_pair_release(bp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* This is called by bio_add_page(). With this function we reduce
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ static struct bio *loop_get_bio(struct loop_device *lo)
|
|||
return bio_list_pop(&lo->lo_bio_list);
|
||||
}
|
||||
|
||||
static int loop_make_request(struct request_queue *q, struct bio *old_bio)
|
||||
static void loop_make_request(struct request_queue *q, struct bio *old_bio)
|
||||
{
|
||||
struct loop_device *lo = q->queuedata;
|
||||
int rw = bio_rw(old_bio);
|
||||
|
|
@ -532,12 +532,11 @@ static int loop_make_request(struct request_queue *q, struct bio *old_bio)
|
|||
loop_add_bio(lo, old_bio);
|
||||
wake_up(&lo->lo_event);
|
||||
spin_unlock_irq(&lo->lo_lock);
|
||||
return 0;
|
||||
return;
|
||||
|
||||
out:
|
||||
spin_unlock_irq(&lo->lo_lock);
|
||||
bio_io_error(old_bio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct switch_request {
|
||||
|
|
|
|||
|
|
@ -2444,7 +2444,7 @@ static void pkt_end_io_read_cloned(struct bio *bio, int err)
|
|||
pkt_bio_finished(pd);
|
||||
}
|
||||
|
||||
static int pkt_make_request(struct request_queue *q, struct bio *bio)
|
||||
static void pkt_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct pktcdvd_device *pd;
|
||||
char b[BDEVNAME_SIZE];
|
||||
|
|
@ -2473,7 +2473,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
cloned_bio->bi_end_io = pkt_end_io_read_cloned;
|
||||
pd->stats.secs_r += bio->bi_size >> 9;
|
||||
pkt_queue_bio(pd, cloned_bio);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!test_bit(PACKET_WRITABLE, &pd->flags)) {
|
||||
|
|
@ -2509,7 +2509,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
pkt_make_request(q, &bp->bio1);
|
||||
pkt_make_request(q, &bp->bio2);
|
||||
bio_pair_release(bp);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2533,7 +2533,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
}
|
||||
spin_unlock(&pkt->lock);
|
||||
spin_unlock(&pd->cdrw.active_list_lock);
|
||||
return 0;
|
||||
return;
|
||||
} else {
|
||||
blocked_bio = 1;
|
||||
}
|
||||
|
|
@ -2584,10 +2584,9 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio)
|
|||
*/
|
||||
wake_up(&pd->wqueue);
|
||||
}
|
||||
return 0;
|
||||
return;
|
||||
end_io:
|
||||
bio_io_error(bio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -596,7 +596,7 @@ out:
|
|||
return next;
|
||||
}
|
||||
|
||||
static int ps3vram_make_request(struct request_queue *q, struct bio *bio)
|
||||
static void 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);
|
||||
|
|
@ -610,13 +610,11 @@ static int ps3vram_make_request(struct request_queue *q, struct bio *bio)
|
|||
spin_unlock_irq(&priv->lock);
|
||||
|
||||
if (busy)
|
||||
return 0;
|
||||
return;
|
||||
|
||||
do {
|
||||
bio = ps3vram_do_bio(dev, bio);
|
||||
} while (bio);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit ps3vram_probe(struct ps3_system_bus_device *dev)
|
||||
|
|
|
|||
|
|
@ -513,7 +513,7 @@ static void process_page(unsigned long data)
|
|||
}
|
||||
}
|
||||
|
||||
static int mm_make_request(struct request_queue *q, struct bio *bio)
|
||||
static void mm_make_request(struct request_queue *q, struct bio *bio)
|
||||
{
|
||||
struct cardinfo *card = q->queuedata;
|
||||
pr_debug("mm_make_request %llu %u\n",
|
||||
|
|
@ -525,7 +525,7 @@ static int mm_make_request(struct request_queue *q, struct bio *bio)
|
|||
card->biotail = &bio->bi_next;
|
||||
spin_unlock_irq(&card->lock);
|
||||
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
static irqreturn_t mm_interrupt(int irq, void *__card)
|
||||
|
|
|
|||
Loading…
Reference in a new issue