aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-04-22 22:05:19 -0400
committerJens Axboe <jens.axboe@oracle.com>2009-04-28 01:37:36 -0400
commitf06d9a2b52e246a66b606130cea3f0d7b7be17a7 (patch)
tree020df1f9d54b00c72d8af02ac0827d496597e75a /include/linux/blkdev.h
parent40cbbb781d3eba5d6ac0860db078af490e5c7c6b (diff)
block: replace end_request() with [__]blk_end_request_cur()
end_request() has been kept around for backward compatibility; however, it's about time for it to go away. * There aren't too many users left. * Its use of @updtodate is pretty confusing. * In some cases, newer code ends up using mixture of end_request() and [__]blk_end_request[_all](), which is way too confusing. So, add [__]blk_end_request_cur() and replace end_request() with it. Most conversions are straightforward. Noteworthy ones are... * paride/pcd: next_request() updated to take 0/-errno instead of 1/0. * paride/pf: pf_end_request() and next_request() updated to take 0/-errno instead of 1/0. * xd: xd_readwrite() updated to return 0/-errno instead of 1/0. * mtd/mtd_blkdevs: blktrans_discard_request() updated to return 0/-errno instead of 1/0. Unnecessary local variable res initialization removed from mtd_blktrans_thread(). [ Impact: cleanup ] Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Joerg Dorchain <joerg@dorchain.net> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: Laurent Vivier <Laurent@lvivier.info> Cc: Tim Waugh <tim@cyberelk.net> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Paul Mackerras <paulus@samba.org> Cc: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: Markus Lidel <Markus.Lidel@shadowconnect.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Pete Zaitcev <zaitcev@redhat.com> Cc: unsik Kim <donari75@gmail.com>
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h46
1 files changed, 23 insertions, 23 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index e33c8356b3da..cfeb3c2feb27 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -845,9 +845,8 @@ extern unsigned int blk_rq_cur_bytes(struct request *rq);
845 * blk_update_request() completes given number of bytes and updates 845 * blk_update_request() completes given number of bytes and updates
846 * the request without completing it. 846 * the request without completing it.
847 * 847 *
848 * blk_end_request() and friends. __blk_end_request() and 848 * blk_end_request() and friends. __blk_end_request() must be called
849 * end_request() must be called with the request queue spinlock 849 * with the request queue spinlock acquired.
850 * acquired.
851 * 850 *
852 * Several drivers define their own end_request and call 851 * Several drivers define their own end_request and call
853 * blk_end_request() for parts of the original function. 852 * blk_end_request() for parts of the original function.
@@ -899,6 +898,19 @@ static inline void blk_end_request_all(struct request *rq, int error)
899} 898}
900 899
901/** 900/**
901 * blk_end_request_cur - Helper function to finish the current request chunk.
902 * @rq: the request to finish the current chunk for
903 * @err: %0 for success, < %0 for error
904 *
905 * Description:
906 * Complete the current consecutively mapped chunk from @rq.
907 */
908static inline void blk_end_request_cur(struct request *rq, int error)
909{
910 blk_end_request(rq, error, rq->hard_cur_sectors << 9);
911}
912
913/**
902 * __blk_end_request - Helper function for drivers to complete the request. 914 * __blk_end_request - Helper function for drivers to complete the request.
903 * @rq: the request being processed 915 * @rq: the request being processed
904 * @error: %0 for success, < %0 for error 916 * @error: %0 for success, < %0 for error
@@ -934,29 +946,17 @@ static inline void __blk_end_request_all(struct request *rq, int error)
934} 946}
935 947
936/** 948/**
937 * end_request - end I/O on the current segment of the request 949 * __blk_end_request_cur - Helper function to finish the current request chunk.
938 * @rq: the request being processed 950 * @rq: the request to finish the current chunk for
939 * @uptodate: error value or %0/%1 uptodate flag 951 * @err: %0 for success, < %0 for error
940 * 952 *
941 * Description: 953 * Description:
942 * Ends I/O on the current segment of a request. If that is the only 954 * Complete the current consecutively mapped chunk from @rq. Must
943 * remaining segment, the request is also completed and freed. 955 * be called with queue lock held.
944 * 956 */
945 * This is a remnant of how older block drivers handled I/O completions. 957static inline void __blk_end_request_cur(struct request *rq, int error)
946 * Modern drivers typically end I/O on the full request in one go, unless
947 * they have a residual value to account for. For that case this function
948 * isn't really useful, unless the residual just happens to be the
949 * full current segment. In other words, don't use this function in new
950 * code. Use blk_end_request() or __blk_end_request() to end a request.
951 **/
952static inline void end_request(struct request *rq, int uptodate)
953{ 958{
954 int error = 0; 959 __blk_end_request(rq, error, rq->hard_cur_sectors << 9);
955
956 if (uptodate <= 0)
957 error = uptodate ? uptodate : -EIO;
958
959 __blk_end_bidi_request(rq, error, rq->hard_cur_sectors << 9, 0);
960} 960}
961 961
962extern void blk_complete_request(struct request *); 962extern void blk_complete_request(struct request *);