diff options
author | Tejun Heo <tj@kernel.org> | 2009-04-22 22:05:19 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-04-28 01:37:36 -0400 |
commit | f06d9a2b52e246a66b606130cea3f0d7b7be17a7 (patch) | |
tree | 020df1f9d54b00c72d8af02ac0827d496597e75a /include/linux/blkdev.h | |
parent | 40cbbb781d3eba5d6ac0860db078af490e5c7c6b (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.h | 46 |
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 | */ | ||
908 | static 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. | 957 | static 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 | **/ | ||
952 | static 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 | ||
962 | extern void blk_complete_request(struct request *); | 962 | extern void blk_complete_request(struct request *); |