diff options
Diffstat (limited to 'drivers/mtd/mtd_blkdevs.c')
| -rw-r--r-- | drivers/mtd/mtd_blkdevs.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index 5073cbc796d..43e30992a36 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c @@ -30,7 +30,6 @@  #include <linux/blkpg.h>  #include <linux/spinlock.h>  #include <linux/hdreg.h> -#include <linux/init.h>  #include <linux/mutex.h>  #include <asm/uaccess.h> @@ -83,12 +82,14 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,  	block = blk_rq_pos(req) << 9 >> tr->blkshift;  	nsect = blk_rq_cur_bytes(req) >> tr->blkshift; - -	buf = req->buffer; +	buf = bio_data(req->bio);  	if (req->cmd_type != REQ_TYPE_FS)  		return -EIO; +	if (req->cmd_flags & REQ_FLUSH) +		return tr->flush(dev); +  	if (blk_rq_pos(req) + blk_rq_cur_sectors(req) >  	    get_capacity(req->rq_disk))  		return -EIO; @@ -409,6 +410,9 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)  	if (!new->rq)  		goto error3; +	if (tr->flush) +		blk_queue_flush(new->rq, REQ_FLUSH); +  	new->rq->queuedata = new;  	blk_queue_logical_block_size(new->rq, tr->blksize);  | 
