@@ -887,6 +887,8 @@ static void __blk_account_io_done(struct request *req, u64 now)
static inline void blk_account_io_done(struct request *req, u64 now)
{
+ trace_block_io_done(req);
+
/*
* Account IO completion. flush_rq isn't accounted as a
* normal IO on queueing nor completion. Accounting the
@@ -917,6 +919,8 @@ static void __blk_account_io_start(struct request *rq)
static inline void blk_account_io_start(struct request *req)
{
+ trace_block_io_start(req);
+
if (blk_do_io_stat(req))
__blk_account_io_start(req);
}
@@ -245,6 +245,32 @@ DEFINE_EVENT(block_rq, block_rq_merge,
TP_ARGS(rq)
);
+/**
+ * block_io_start - insert a request for execution
+ * @rq: block IO operation request
+ *
+ * Called when block operation request @rq is queued for execution
+ */
+DEFINE_EVENT(block_rq, block_io_start,
+
+ TP_PROTO(struct request *rq),
+
+ TP_ARGS(rq)
+);
+
+/**
+ * block_io_done - block IO operation request completed
+ * @rq: block IO operation request
+ *
+ * Called when block operation request @rq is completed
+ */
+DEFINE_EVENT(block_rq, block_io_done,
+
+ TP_PROTO(struct request *rq),
+
+ TP_ARGS(rq)
+);
+
/**
* block_bio_complete - completed all work on the block operation
* @q: queue holding the block operation
@@ -556,4 +582,3 @@ TRACE_EVENT(block_rq_remap,
/* This part must be outside protection */
#include <trace/define_trace.h>
-