From 650e9cfd14a1ac9e077d72962ea0a80946cdb6f8 Mon Sep 17 00:00:00 2001 From: Kiyoshi Ueda Date: Tue, 11 Dec 2007 17:42:27 -0500 Subject: blk_end_request: changing arm (take 4) This patch converts arm's OMAP mailbox driver to use blk_end_request interfaces. If the original code was converted literally, blk_end_request would be called with '-EIO' because end_that_request_last() were called with '0' (i.e. failure). But I think these '0's are bugs in the original code because it's unlikely that all requests are treated as failure. (The bugs should have no effect unless these requests have an end_io callback.) So I changed them to pass '0' (i.e. success) to blk_end_request. Cc: Toshihiro Kobayashi Cc: Hiroshi DOYU Signed-off-by: Kiyoshi Ueda Signed-off-by: Jun'ichi Nomura Signed-off-by: Jens Axboe --- arch/arm/plat-omap/mailbox.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'arch') diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c index 0360b1f14d11..65e9c26f2054 100644 --- a/arch/arm/plat-omap/mailbox.c +++ b/arch/arm/plat-omap/mailbox.c @@ -116,8 +116,8 @@ static void mbox_tx_work(struct work_struct *work) } spin_lock(q->queue_lock); - blkdev_dequeue_request(rq); - end_that_request_last(rq, 0); + if (__blk_end_request(rq, 0, 0)) + BUG(); spin_unlock(q->queue_lock); } } @@ -149,10 +149,8 @@ static void mbox_rx_work(struct work_struct *work) msg = (mbox_msg_t) rq->data; - spin_lock_irqsave(q->queue_lock, flags); - blkdev_dequeue_request(rq); - end_that_request_last(rq, 0); - spin_unlock_irqrestore(q->queue_lock, flags); + if (blk_end_request(rq, 0, 0)) + BUG(); mbox->rxq->callback((void *)msg); } @@ -263,10 +261,8 @@ omap_mbox_read(struct device *dev, struct device_attribute *attr, char *buf) *p = (mbox_msg_t) rq->data; - spin_lock_irqsave(q->queue_lock, flags); - blkdev_dequeue_request(rq); - end_that_request_last(rq, 0); - spin_unlock_irqrestore(q->queue_lock, flags); + if (blk_end_request(rq, 0, 0)) + BUG(); if (unlikely(mbox_seq_test(mbox, *p))) { pr_info("mbox: Illegal seq bit!(%08x) ignored\n", *p); -- cgit v1.2.3-59-g8ed1b From 4898b53a5e3e4b9a58f1d89545b1e05c88c76798 Mon Sep 17 00:00:00 2001 From: Kiyoshi Ueda Date: Tue, 11 Dec 2007 17:42:53 -0500 Subject: blk_end_request: changing um (take 4) This patch converts um to use blk_end_request interfaces. Related 'uptodate' arguments are converted to 'error'. As a result, the interface of internal function, ubd_end_request(), is changed. Cc: Jeff Dike Signed-off-by: Kiyoshi Ueda Signed-off-by: Jun'ichi Nomura Signed-off-by: Jens Axboe --- arch/um/drivers/ubd_kern.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'arch') diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index b1a77b11f089..99f9f9605e9c 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -475,17 +475,9 @@ static void do_ubd_request(struct request_queue * q); /* Only changed by ubd_init, which is an initcall. */ int thread_fd = -1; -static void ubd_end_request(struct request *req, int bytes, int uptodate) +static void ubd_end_request(struct request *req, int bytes, int error) { - if (!end_that_request_first(req, uptodate, bytes >> 9)) { - struct ubd *dev = req->rq_disk->private_data; - unsigned long flags; - - add_disk_randomness(req->rq_disk); - spin_lock_irqsave(&dev->lock, flags); - end_that_request_last(req, uptodate); - spin_unlock_irqrestore(&dev->lock, flags); - } + blk_end_request(req, error, bytes); } /* Callable only from interrupt context - otherwise you need to do @@ -493,10 +485,10 @@ static void ubd_end_request(struct request *req, int bytes, int uptodate) static inline void ubd_finish(struct request *req, int bytes) { if(bytes < 0){ - ubd_end_request(req, 0, 0); + ubd_end_request(req, 0, -EIO); return; } - ubd_end_request(req, bytes, 1); + ubd_end_request(req, bytes, 0); } static LIST_HEAD(restart); -- cgit v1.2.3-59-g8ed1b