Skip to content

Commit

Permalink
block: export __make_request
Browse files Browse the repository at this point in the history
Avoid the hacks need for request based device mappers currently by simply
exporting the symbol instead of trying to get it through the back door.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Sep 12, 2011
1 parent 484fc25 commit 166e1f9
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 15 deletions.
5 changes: 2 additions & 3 deletions block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_remap);
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap);
EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_complete);

static int __make_request(struct request_queue *q, struct bio *bio);

/*
* For the allocated request tables
*/
Expand Down Expand Up @@ -1213,7 +1211,7 @@ void init_request_from_bio(struct request *req, struct bio *bio)
blk_rq_bio_prep(req->q, req, bio);
}

static int __make_request(struct request_queue *q, struct bio *bio)
int __make_request(struct request_queue *q, struct bio *bio)
{
const bool sync = !!(bio->bi_rw & REQ_SYNC);
struct blk_plug *plug;
Expand Down Expand Up @@ -1317,6 +1315,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
out:
return 0;
}
EXPORT_SYMBOL_GPL(__make_request); /* for device mapper only */

/*
* If bio->bi_dev is a partition, remap the location
Expand Down
13 changes: 1 addition & 12 deletions drivers/md/dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,6 @@ struct mapped_device {
/* forced geometry settings */
struct hd_geometry geometry;

/* For saving the address of __make_request for request based dm */
make_request_fn *saved_make_request_fn;

/* sysfs handle */
struct kobject kobj;

Expand Down Expand Up @@ -1420,13 +1417,6 @@ static int _dm_request(struct request_queue *q, struct bio *bio)
return 0;
}

static int dm_make_request(struct request_queue *q, struct bio *bio)
{
struct mapped_device *md = q->queuedata;

return md->saved_make_request_fn(q, bio); /* call __make_request() */
}

static int dm_request_based(struct mapped_device *md)
{
return blk_queue_stackable(md->queue);
Expand All @@ -1437,7 +1427,7 @@ static int dm_request(struct request_queue *q, struct bio *bio)
struct mapped_device *md = q->queuedata;

if (dm_request_based(md))
return dm_make_request(q, bio);
return __make_request(q, bio);

return _dm_request(q, bio);
}
Expand Down Expand Up @@ -2172,7 +2162,6 @@ static int dm_init_request_based_queue(struct mapped_device *md)
return 0;

md->queue = q;
md->saved_make_request_fn = md->queue->make_request_fn;
dm_init_md_queue(md);
blk_queue_softirq_done(md->queue, dm_softirq_done);
blk_queue_prep_rq(md->queue, dm_prep_fn);
Expand Down
2 changes: 2 additions & 0 deletions include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,8 @@ extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,
struct scsi_ioctl_command __user *);

extern int __make_request(struct request_queue *q, struct bio *bio);

/*
* A queue has just exitted congestion. Note this in the global counter of
* congested queues, and wake up anyone who was waiting for requests to be
Expand Down

0 comments on commit 166e1f9

Please sign in to comment.