blk_end_request: add new request completion interface (take 4)
[linux-2.6-block.git] / include / linux / blkdev.h
index 49b7a4c31a6d5d35af9c3e11e24791afe86faaf4..3b212f02db8df6b5570306e24fe8d482e7a69fec 100644 (file)
@@ -537,6 +537,8 @@ enum {
 #define blk_fua_rq(rq)         ((rq)->cmd_flags & REQ_FUA)
 #define blk_bidi_rq(rq)                ((rq)->next_rq != NULL)
 #define blk_empty_barrier(rq)  (blk_barrier_rq(rq) && blk_fs_request(rq) && !(rq)->hard_nr_sectors)
+/* rq->queuelist of dequeued request must be list_empty() */
+#define blk_queued_rq(rq)      (!list_empty(&(rq)->queuelist))
 
 #define list_entry_rq(ptr)     list_entry((ptr), struct request, queuelist)
 
@@ -724,6 +726,8 @@ static inline void blk_run_address_space(struct address_space *mapping)
  * for parts of the original function. This prevents
  * code duplication in drivers.
  */
+extern int blk_end_request(struct request *rq, int error, int nr_bytes);
+extern int __blk_end_request(struct request *rq, int error, int nr_bytes);
 extern int end_that_request_first(struct request *, int, int);
 extern int end_that_request_chunk(struct request *, int, int);
 extern void end_that_request_last(struct request *, int);