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 15/18] z2ram: dequeue in-flight request Date: Fri, 8 May 2009 11:54:13 +0900 [thread overview] Message-ID: <1241751256-17435-16-git-send-email-tj@kernel.org> (raw) In-Reply-To: <1241751256-17435-1-git-send-email-tj@kernel.org> z2ram processes requests one-by-one synchronously and can be easily converted to dequeueing model. Convert it. [ Impact: dequeue in-flight request ] Signed-off-by: Tejun Heo <tj@kernel.org> --- drivers/block/z2ram.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index 6a13838..c909c1a 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c @@ -70,15 +70,21 @@ static struct gendisk *z2ram_gendisk; static void do_z2_request(struct request_queue *q) { struct request *req; - while ((req = elv_next_request(q)) != NULL) { + + req = elv_next_request(q); + if (req) + blkdev_dequeue_request(req); + + while (req) { unsigned long start = blk_rq_pos(req) << 9; unsigned long len = blk_rq_cur_bytes(req); + int err = 0; if (start + len > z2ram_size) { printk( KERN_ERR DEVICE_NAME ": bad access: block=%lu, count=%u\n", blk_rq_pos(req), blk_rq_cur_sectors(req)); - __blk_end_request_cur(req, -EIO); - continue; + err = -EIO; + goto done; } while (len) { unsigned long addr = start & Z2RAM_CHUNKMASK; @@ -93,7 +99,12 @@ static void do_z2_request(struct request_queue *q) start += size; len -= size; } - __blk_end_request_cur(req, 0); + done: + if (!__blk_end_request_cur(req, err)) { + req = elv_next_request(q); + if (req) + blkdev_dequeue_request(req); + } } } -- 1.6.0.2
WARNING: multiple messages have this Message-ID (diff)
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.com, paul.clements@steeleye.com, tim@cyberelk.net, Geert.Uytterhoeven@sonycom.com, davem@davemloft.net, Laurent@lvivier.info, jgarzik@pobox.com, jeremy@xensource.com, grant.likely@secretlab.ca, adrian@mcmen.demon.co.uk, sfr@canb.auug.org.au, bzolnier@gmail.com, petkovbb@googlemail.com, sshtylyov@ru.mvista.com, oakad@yahoo.com, drzeus@drzeus.cx, dwmw2@infradead.org, Markus.Lidel@shadowconnect.com, wein@de.ibm.com, schwidefsky@de.ibm.com, zaitcev@redhat.com, fujita.tomonori@lab.ntt.co.jp, axboe@kernel.dk Cc: Tejun Heo <tj@kernel.org> Subject: [PATCH 15/18] z2ram: dequeue in-flight request Date: Fri, 8 May 2009 11:54:13 +0900 [thread overview] Message-ID: <1241751256-17435-16-git-send-email-tj@kernel.org> (raw) In-Reply-To: <1241751256-17435-1-git-send-email-tj@kernel.org> z2ram processes requests one-by-one synchronously and can be easily converted to dequeueing model. Convert it. [ Impact: dequeue in-flight request ] Signed-off-by: Tejun Heo <tj@kernel.org> --- drivers/block/z2ram.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index 6a13838..c909c1a 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c @@ -70,15 +70,21 @@ static struct gendisk *z2ram_gendisk; static void do_z2_request(struct request_queue *q) { struct request *req; - while ((req = elv_next_request(q)) != NULL) { + + req = elv_next_request(q); + if (req) + blkdev_dequeue_request(req); + + while (req) { unsigned long start = blk_rq_pos(req) << 9; unsigned long len = blk_rq_cur_bytes(req); + int err = 0; if (start + len > z2ram_size) { printk( KERN_ERR DEVICE_NAME ": bad access: block=%lu, count=%u\n", blk_rq_pos(req), blk_rq_cur_sectors(req)); - __blk_end_request_cur(req, -EIO); - continue; + err = -EIO; + goto done; } while (len) { unsigned long addr = start & Z2RAM_CHUNKMASK; @@ -93,7 +99,12 @@ static void do_z2_request(struct request_queue *q) start += size; len -= size; } - __blk_end_request_cur(req, 0); + done: + if (!__blk_end_request_cur(req, err)) { + req = elv_next_request(q); + if (req) + blkdev_dequeue_request(req); + } } } -- 1.6.0.2
next prev parent reply other threads:[~2009-05-08 2:57 UTC|newest] Thread overview: 52+ 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 ` Tejun Heo 2009-05-08 2:53 ` [PATCH 01/18] ide: dequeue in-flight request Tejun Heo 2009-05-08 2:53 ` 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 ` 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 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 04/18] hd: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 05/18] ataflop: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 06/18] swim3: dequeue " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 07/18] xsysace: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 08/18] paride: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 09/18] ps3disk: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 10/18] amiflop: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 11/18] swim: " Tejun Heo 2009-05-08 2:54 ` 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 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 13/18] mtd_blkdevs: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 14/18] jsflash: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 2:54 ` Tejun Heo [this message] 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 ` [PATCH 16/18] gdrom: " Tejun Heo 2009-05-08 2:54 ` Tejun Heo 2009-05-08 19:53 ` 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 ` Tejun Heo 2009-05-08 2:54 ` [PATCH 18/18] block: implement and enforce request peek/start/fetch Tejun Heo 2009-05-08 2:54 ` 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-10 11:28 ` 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-16-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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.