|
@@ -1790,17 +1790,6 @@ static void end_that_request_last(struct request *req, int error)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static inline void __end_request(struct request *rq, int uptodate,
|
|
|
- unsigned int nr_bytes)
|
|
|
-{
|
|
|
- int error = 0;
|
|
|
-
|
|
|
- if (uptodate <= 0)
|
|
|
- error = uptodate ? uptodate : -EIO;
|
|
|
-
|
|
|
- __blk_end_request(rq, error, nr_bytes);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* blk_rq_bytes - Returns bytes left to complete in the entire request
|
|
|
* @rq: the request being processed
|
|
@@ -1830,41 +1819,6 @@ unsigned int blk_rq_cur_bytes(struct request *rq)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(blk_rq_cur_bytes);
|
|
|
|
|
|
-/**
|
|
|
- * end_queued_request - end all I/O on a queued request
|
|
|
- * @rq: the request being processed
|
|
|
- * @uptodate: error value or %0/%1 uptodate flag
|
|
|
- *
|
|
|
- * Description:
|
|
|
- * Ends all I/O on a request, and removes it from the block layer queues.
|
|
|
- * Not suitable for normal I/O completion, unless the driver still has
|
|
|
- * the request attached to the block layer.
|
|
|
- *
|
|
|
- **/
|
|
|
-void end_queued_request(struct request *rq, int uptodate)
|
|
|
-{
|
|
|
- __end_request(rq, uptodate, blk_rq_bytes(rq));
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(end_queued_request);
|
|
|
-
|
|
|
-/**
|
|
|
- * end_dequeued_request - end all I/O on a dequeued request
|
|
|
- * @rq: the request being processed
|
|
|
- * @uptodate: error value or %0/%1 uptodate flag
|
|
|
- *
|
|
|
- * Description:
|
|
|
- * Ends all I/O on a request. The request must already have been
|
|
|
- * dequeued using blkdev_dequeue_request(), as is normally the case
|
|
|
- * for most drivers.
|
|
|
- *
|
|
|
- **/
|
|
|
-void end_dequeued_request(struct request *rq, int uptodate)
|
|
|
-{
|
|
|
- __end_request(rq, uptodate, blk_rq_bytes(rq));
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(end_dequeued_request);
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* end_request - end I/O on the current segment of the request
|
|
|
* @req: the request being processed
|
|
@@ -1879,14 +1833,16 @@ EXPORT_SYMBOL(end_dequeued_request);
|
|
|
* they have a residual value to account for. For that case this function
|
|
|
* isn't really useful, unless the residual just happens to be the
|
|
|
* full current segment. In other words, don't use this function in new
|
|
|
- * code. Use blk_end_request() or __blk_end_request() to end partial parts
|
|
|
- * of a request, or end_dequeued_request() and end_queued_request() to
|
|
|
- * completely end IO on a dequeued/queued request.
|
|
|
- *
|
|
|
+ * code. Use blk_end_request() or __blk_end_request() to end a request.
|
|
|
**/
|
|
|
void end_request(struct request *req, int uptodate)
|
|
|
{
|
|
|
- __end_request(req, uptodate, req->hard_cur_sectors << 9);
|
|
|
+ int error = 0;
|
|
|
+
|
|
|
+ if (uptodate <= 0)
|
|
|
+ error = uptodate ? uptodate : -EIO;
|
|
|
+
|
|
|
+ __blk_end_request(req, error, req->hard_cur_sectors << 9);
|
|
|
}
|
|
|
EXPORT_SYMBOL(end_request);
|
|
|
|