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 | |
| 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')
| -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 *); |
