From: Tejun Heo <tj@kernel.org>
To: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-ide@vger.kernel.org, rusty@rustcorp.com.au,
James.Bottomley@HansenPartnership.com, mike.miller@hp.com,
donari75@gmail.c
Cc: Tejun Heo <tj@kernel.org>
Subject: [PATCH 16/18] gdrom: dequeue in-flight request
Date: Fri, 8 May 2009 11:54:14 +0900 [thread overview]
Message-ID: <1241751256-17435-17-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1241751256-17435-1-git-send-email-tj@kernel.org>
gdrom already dequeues and fully completes requests on normal path and
the error paths can be easily converted to do so too. Clean it up and
dequeue requests on error paths too.
While at it remove superflous blk_fs_request() && !blk_rq_sectors()
condition check.
[ Impact: dequeue in-flight request, cleanup ]
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Adrian McMenamin <adrian@mcmen.demon.co.uk>
---
drivers/cdrom/gdrom.c | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c
index 488423c..3cc02bf 100644
--- a/drivers/cdrom/gdrom.c
+++ b/drivers/cdrom/gdrom.c
@@ -638,33 +638,31 @@ static void gdrom_readdisk_dma(struct work_struct *work)
kfree(read_command);
}
-static void gdrom_request_handler_dma(struct request *req)
-{
- /* dequeue, add to list of deferred work
- * and then schedule workqueue */
- blkdev_dequeue_request(req);
- list_add_tail(&req->queuelist, &gdrom_deferred);
- schedule_work(&work);
-}
-
static void gdrom_request(struct request_queue *rq)
{
struct request *req;
while ((req = elv_next_request(rq)) != NULL) {
+ blkdev_dequeue_request(req);
+
if (!blk_fs_request(req)) {
printk(KERN_DEBUG "GDROM: Non-fs request ignored\n");
- __blk_end_request_cur(req, -EIO);
+ __blk_end_request_all(req, -EIO);
+ continue;
}
if (rq_data_dir(req) != READ) {
printk(KERN_NOTICE "GDROM: Read only device -");
printk(" write request ignored\n");
- __blk_end_request_cur(req, -EIO);
+ __blk_end_request_all(req, -EIO);
+ continue;
}
- if (blk_rq_sectors(req))
- gdrom_request_handler_dma(req);
- else
- __blk_end_request_cur(req, -EIO);
+
+ /*
+ * Add to list of deferred work and then schedule
+ * workqueue.
+ */
+ list_add_tail(&req->queuelist, &gdrom_deferred);
+ schedule_work(&work);
}
}
--
1.6.0.2
next prev parent reply other threads:[~2009-05-08 2:56 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-08 2:53 [GIT PATCH] block: unify request processing model and implement peek/fetch Tejun Heo
2009-05-08 2:53 ` [PATCH 01/18] ide: dequeue in-flight request Tejun Heo
2009-05-09 6:56 ` Borislav Petkov
2009-05-09 15:58 ` Bartlomiej Zolnierkiewicz
2009-05-08 2:54 ` [PATCH 02/18] mg_disk: fix queue hang / infinite retry on !fs requests Tejun Heo
2009-05-08 2:54 ` [PATCH 03/18] mg_disk: dequeue and track in-flight request Tejun Heo
2009-05-08 2:54 ` [PATCH 04/18] hd: " Tejun Heo
2009-05-08 2:54 ` [PATCH 05/18] ataflop: " Tejun Heo
2009-05-08 2:54 ` [PATCH 06/18] swim3: dequeue " Tejun Heo
2009-05-08 2:54 ` [PATCH 07/18] xsysace: " Tejun Heo
2009-05-08 2:54 ` [PATCH 08/18] paride: " Tejun Heo
2009-05-08 2:54 ` [PATCH 09/18] ps3disk: " Tejun Heo
2009-05-08 2:54 ` [PATCH 10/18] amiflop: " Tejun Heo
2009-05-08 2:54 ` [PATCH 11/18] swim: " Tejun Heo
2009-05-16 13:42 ` Sergei Shtylyov
2009-05-16 14:37 ` Tejun Heo
2009-05-16 19:56 ` Sergei Shtylyov
2009-05-16 22:18 ` Tejun Heo
2009-05-08 2:54 ` [PATCH 12/18] xd: " Tejun Heo
2009-05-08 2:54 ` [PATCH 13/18] mtd_blkdevs: " Tejun Heo
2009-05-08 2:54 ` [PATCH 14/18] jsflash: " Tejun Heo
2009-05-08 2:54 ` [PATCH 15/18] z2ram: " Tejun Heo
2009-05-16 12:54 ` Sergei Shtylyov
2009-05-16 19:58 ` Sergei Shtylyov
2009-05-08 2:54 ` Tejun Heo [this message]
2009-05-08 19:53 ` [PATCH 16/18] gdrom: " Adrian McMenamin
2009-05-08 23:43 ` Tejun Heo
2009-05-08 2:54 ` [PATCH 17/18] block: convert to dequeueing model (easy ones) Tejun Heo
2009-05-08 2:54 ` [PATCH 18/18] block: implement and enforce request peek/start/fetch Tejun Heo
2009-05-10 21:52 ` Bartlomiej Zolnierkiewicz
2009-05-10 11:28 ` [GIT PATCH] block: unify request processing model and implement peek/fetch Tejun Heo
2009-05-11 7:52 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1241751256-17435-17-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=donari75@gmail.c \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mike.miller@hp.com \
--cc=rusty@rustcorp.com.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).