mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: axboe@kernel.dk, linux-kernel@vger.kernel.org
Cc: Tejun Heo <tj@kernel.org>
Subject: [PATCH 08/14] block: kill blk_end_request_callback()
Date: Fri, 13 Mar 2009 14:02:52 +0900	[thread overview]
Message-ID: <1236920578-2179-9-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1236920578-2179-1-git-send-email-tj@kernel.org>

Impact: removal of unnecessary convoluted interface

The only user of blk_end_request_callback() is cdrom_newpc_intr()
which calls it with a dummy callback to update data completion without
actually completing the request, for which blk_update_request() can be
used.

Use blk_update_request() in cdrom_newpc_intr() and kill
blk_end_request_callback().

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 block/blk-core.c       |   48 +++---------------------------------------------
 drivers/ide/ide-cd.c   |   16 ++--------------
 include/linux/blkdev.h |    3 ---
 3 files changed, 5 insertions(+), 62 deletions(-)

diff --git a/block/blk-core.c b/block/blk-core.c
index 0d97fbe..9595c4f 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1957,10 +1957,6 @@ static void end_that_request_last(struct request *req, int error)
  * @error:        %0 for success, < %0 for error
  * @nr_bytes:     number of bytes to complete @rq
  * @bidi_bytes:   number of bytes to complete @rq->next_rq
- * @drv_callback: function called between completion of bios in the request
- *                and completion of the request.
- *                If the callback returns non %0, this helper returns without
- *                completion of the request.
  *
  * Description:
  *     Ends I/O on a number of bytes attached to @rq and @rq->next_rq.
@@ -1971,8 +1967,7 @@ static void end_that_request_last(struct request *req, int error)
  *     %1 - this request is not freed yet, it still has pending buffers.
  **/
 static int blk_end_io(struct request *rq, int error, unsigned int nr_bytes,
-		      unsigned int bidi_bytes,
-		      int (drv_callback)(struct request *))
+		      unsigned int bidi_bytes)
 {
 	struct request_queue *q = rq->q;
 	unsigned long flags = 0UL;
@@ -1980,10 +1975,6 @@ static int blk_end_io(struct request *rq, int error, unsigned int nr_bytes,
 	if (end_that_request_data(rq, error, nr_bytes, bidi_bytes))
 		return 1;
 
-	/* Special feature for tricky drivers */
-	if (drv_callback && drv_callback(rq))
-		return 1;
-
 	add_disk_randomness(rq->rq_disk);
 
 	spin_lock_irqsave(q->queue_lock, flags);
@@ -2009,7 +2000,7 @@ static int blk_end_io(struct request *rq, int error, unsigned int nr_bytes,
  **/
 int blk_end_request(struct request *rq, int error, unsigned int nr_bytes)
 {
-	return blk_end_io(rq, error, nr_bytes, 0, NULL);
+	return blk_end_io(rq, error, nr_bytes, 0);
 }
 EXPORT_SYMBOL_GPL(blk_end_request);
 
@@ -2056,7 +2047,7 @@ EXPORT_SYMBOL_GPL(__blk_end_request);
 int blk_end_bidi_request(struct request *rq, int error, unsigned int nr_bytes,
 			 unsigned int bidi_bytes)
 {
-	return blk_end_io(rq, error, nr_bytes, bidi_bytes, NULL);
+	return blk_end_io(rq, error, nr_bytes, bidi_bytes);
 }
 EXPORT_SYMBOL_GPL(blk_end_bidi_request);
 
@@ -2117,39 +2108,6 @@ void blk_update_request(struct request *rq, int error, unsigned int nr_bytes)
 }
 EXPORT_SYMBOL_GPL(blk_update_request);
 
-/**
- * blk_end_request_callback - Special helper function for tricky drivers
- * @rq:           the request being processed
- * @error:        %0 for success, < %0 for error
- * @nr_bytes:     number of bytes to complete
- * @drv_callback: function called between completion of bios in the request
- *                and completion of the request.
- *                If the callback returns non %0, this helper returns without
- *                completion of the request.
- *
- * Description:
- *     Ends I/O on a number of bytes attached to @rq.
- *     If @rq has leftover, sets it up for the next range of segments.
- *
- *     This special helper function is used only for existing tricky drivers.
- *     (e.g. cdrom_newpc_intr() of ide-cd)
- *     This interface will be removed when such drivers are rewritten.
- *     Don't use this interface in other places anymore.
- *
- * Return:
- *     %0 - we are done with this request
- *     %1 - this request is not freed yet.
- *          this request still has pending buffers or
- *          the driver doesn't want to finish this request yet.
- **/
-int blk_end_request_callback(struct request *rq, int error,
-			     unsigned int nr_bytes,
-			     int (drv_callback)(struct request *))
-{
-	return blk_end_io(rq, error, nr_bytes, 0, drv_callback);
-}
-EXPORT_SYMBOL_GPL(blk_end_request_callback);
-
 void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
 		     struct bio *bio)
 {
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index ddfbea4..f825d50 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -748,16 +748,6 @@ int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd,
 	return (flags & REQ_FAILED) ? -EIO : 0;
 }
 
-/*
- * Called from blk_end_request_callback() after the data of the request is
- * completed and before the request itself is completed. By returning value '1',
- * blk_end_request_callback() returns immediately without completing it.
- */
-static int cdrom_newpc_intr_dummy_cb(struct request *rq)
-{
-	return 1;
-}
-
 static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
 {
 	ide_hwif_t *hwif = drive->hwif;
@@ -932,12 +922,10 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
 			/*
 			 * The request can't be completed until DRQ is cleared.
 			 * So complete the data, but don't complete the request
-			 * using the dummy function for the callback feature
-			 * of blk_end_request_callback().
+			 * using blk_update_request().
 			 */
 			if (rq->bio)
-				blk_end_request_callback(rq, 0, blen,
-						 cdrom_newpc_intr_dummy_cb);
+				blk_update_request(rq, 0, blen);
 			else
 				rq->data += blen;
 		}
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index cdfac4f..e8175c8 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -833,9 +833,6 @@ extern int __blk_end_request(struct request *rq, int error,
 extern int blk_end_bidi_request(struct request *rq, int error,
 				unsigned int nr_bytes, unsigned int bidi_bytes);
 extern void end_request(struct request *, int);
-extern int blk_end_request_callback(struct request *rq, int error,
-				unsigned int nr_bytes,
-				int (drv_callback)(struct request *));
 extern void blk_complete_request(struct request *);
 extern void __blk_complete_request(struct request *);
 extern void blk_abort_request(struct request *);
-- 
1.6.0.2


  parent reply	other threads:[~2009-03-13  5:05 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-13  5:02 [GIT PATCH] block: cleanup patches Tejun Heo
2009-03-13  5:02 ` [PATCH 01/14] block: merge blk_invoke_request_fn() into __blk_run_queue() Tejun Heo
2009-03-13  5:02 ` [PATCH 02/14] block: kill blk_start_queueing() Tejun Heo
2009-03-13  5:02 ` [PATCH 03/14] block: don't set REQ_NOMERGE unnecessarily Tejun Heo
2009-03-13  5:02 ` [PATCH 04/14] block: cleanup REQ_SOFTBARRIER usages Tejun Heo
2009-03-13  5:02 ` [PATCH 05/14] block: clean up misc stuff after block layer timeout conversion Tejun Heo
2009-03-13  5:02 ` [PATCH 06/14] block: reorder request completion functions Tejun Heo
2009-03-13  5:02 ` [PATCH 07/14] block: reorganize request fetching functions Tejun Heo
2009-03-13  5:02 ` Tejun Heo [this message]
2009-03-13  5:02 ` [PATCH 09/14] block: clean up request completion API Tejun Heo
2009-03-16  9:12   ` Boaz Harrosh
2009-03-16  9:45     ` Tejun Heo
2009-03-13  5:02 ` [PATCH 10/14] block: move rq->start_time initialization to blk_rq_init() Tejun Heo
2009-03-13  5:02 ` [PATCH 11/14] block: implement and use [__]blk_end_request_all() Tejun Heo
2009-03-13 19:21   ` Bartlomiej Zolnierkiewicz
2009-03-14  1:56     ` Tejun Heo
2009-03-14  2:10       ` Tejun Heo
2009-03-14 19:23       ` Bartlomiej Zolnierkiewicz
2009-03-14 19:56         ` James Bottomley
2009-03-14 20:19           ` Bartlomiej Zolnierkiewicz
2009-03-15 16:48             ` Jens Axboe
2009-03-15 17:40               ` Bartlomiej Zolnierkiewicz
2009-03-15 18:39                 ` Jens Axboe
2009-03-15 20:34                   ` Bartlomiej Zolnierkiewicz
2009-03-15 20:48                     ` Jens Axboe
2009-03-15 21:34                       ` Bartlomiej Zolnierkiewicz
2009-03-16  1:39                         ` Tejun Heo
2009-03-13  5:02 ` [PATCH 12/14] block: kill end_request() Tejun Heo
2009-03-13  5:02 ` [PATCH 13/14] ubd: simplify block request completion Tejun Heo
2009-03-13  5:02 ` [PATCH 14/14] block: clean up unnecessary stuff from block drivers Tejun Heo
2009-03-14  2:00 ` [GIT PATCH] block: cleanup patches Tejun Heo
2009-03-15 16:45   ` Jens Axboe
2009-03-16  1:15     ` Tejun Heo
2009-03-16  7:22       ` Jens Axboe
2009-03-16  7:53         ` Tejun Heo
2009-03-16  7:57           ` Jens Axboe
2009-04-21 16:37 [GIT PATCH linux-2.6-block] block: cleanup patches, take#3 Tejun Heo
2009-04-21 16:37 ` [PATCH 08/14] block: kill blk_end_request_callback() Tejun Heo

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=1236920578-2179-9-git-send-email-tj@kernel.org \
    --to=tj@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    /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

Powered by JetHome