ANDROID: add hooks into blk-flush.c for customized I/O scheduler
android_vh_blk_alloc_flush_queue: Expand the flush request size to carry more customized information Bug: 319582497 Change-Id: I728852bd29ff7f851545c52fbdeafa7cd3a4addf Signed-off-by: hao lv <hao.lv5@transsion.com>
This commit is contained in:
parent
d269992366
commit
f76294a655
@ -467,11 +467,13 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blkdev_issue_flush);
|
EXPORT_SYMBOL(blkdev_issue_flush);
|
||||||
|
|
||||||
|
#include <trace/hooks/block.h>
|
||||||
struct blk_flush_queue *blk_alloc_flush_queue(int node, int cmd_size,
|
struct blk_flush_queue *blk_alloc_flush_queue(int node, int cmd_size,
|
||||||
gfp_t flags)
|
gfp_t flags)
|
||||||
{
|
{
|
||||||
struct blk_flush_queue *fq;
|
struct blk_flush_queue *fq;
|
||||||
int rq_sz = sizeof(struct request);
|
int rq_sz = sizeof(struct request);
|
||||||
|
bool skip = false;
|
||||||
|
|
||||||
fq = kzalloc_node(sizeof(*fq), flags, node);
|
fq = kzalloc_node(sizeof(*fq), flags, node);
|
||||||
if (!fq)
|
if (!fq)
|
||||||
@ -479,8 +481,12 @@ struct blk_flush_queue *blk_alloc_flush_queue(int node, int cmd_size,
|
|||||||
|
|
||||||
spin_lock_init(&fq->mq_flush_lock);
|
spin_lock_init(&fq->mq_flush_lock);
|
||||||
|
|
||||||
rq_sz = round_up(rq_sz + cmd_size, cache_line_size());
|
trace_android_vh_blk_alloc_flush_queue(&skip, cmd_size, flags, node,
|
||||||
fq->flush_rq = kzalloc_node(rq_sz, flags, node);
|
fq);
|
||||||
|
if (!skip) {
|
||||||
|
rq_sz = round_up(rq_sz + cmd_size, cache_line_size());
|
||||||
|
fq->flush_rq = kzalloc_node(rq_sz, flags, node);
|
||||||
|
}
|
||||||
if (!fq->flush_rq)
|
if (!fq->flush_rq)
|
||||||
goto fail_rq;
|
goto fail_rq;
|
||||||
|
|
||||||
|
@ -531,6 +531,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_exit_queue);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_alloc_tag_set);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_alloc_tag_set);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_blk_allocated_queue_init);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_blk_allocated_queue_init);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_blk_flush_plug_list);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_blk_flush_plug_list);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_alloc_flush_queue);
|
||||||
/*
|
/*
|
||||||
* For type visibility
|
* For type visibility
|
||||||
*/
|
*/
|
||||||
|
@ -27,6 +27,7 @@ struct bio;
|
|||||||
struct request_queue;
|
struct request_queue;
|
||||||
struct request;
|
struct request;
|
||||||
struct blk_plug;
|
struct blk_plug;
|
||||||
|
struct blk_flush_queue;
|
||||||
|
|
||||||
DECLARE_HOOK(android_vh_blk_alloc_rqs,
|
DECLARE_HOOK(android_vh_blk_alloc_rqs,
|
||||||
TP_PROTO(size_t *rq_size, struct blk_mq_tag_set *set,
|
TP_PROTO(size_t *rq_size, struct blk_mq_tag_set *set,
|
||||||
@ -107,6 +108,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_blk_flush_plug_list,
|
|||||||
TP_PROTO(struct blk_plug *plug, bool from_schedule),
|
TP_PROTO(struct blk_plug *plug, bool from_schedule),
|
||||||
TP_ARGS(plug, from_schedule), 1);
|
TP_ARGS(plug, from_schedule), 1);
|
||||||
|
|
||||||
|
DECLARE_HOOK(android_vh_blk_alloc_flush_queue,
|
||||||
|
TP_PROTO(bool *skip, int cmd_size, int flags, int node,
|
||||||
|
struct blk_flush_queue *fq),
|
||||||
|
TP_ARGS(skip, cmd_size, flags, node, fq));
|
||||||
|
|
||||||
#endif /* _TRACE_HOOK_BLOCK_H */
|
#endif /* _TRACE_HOOK_BLOCK_H */
|
||||||
|
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
|
Loading…
Reference in New Issue
Block a user