函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\bfq-iosched.c Create Date:2022-07-27 19:31:20
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Attempt to schedule a merge of bfqq with the currently in-service* queue or with a close queue among the scheduled queues

函数原型:static struct bfq_queue *bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq, void *io_struct, bool request)

返回类型:struct bfq_queue

参数:

类型参数名称
struct bfq_data *bfqd
struct bfq_queue *bfqq
void *io_struct
boolrequest
2623  如果此条件成立可能性大(为编译器优化)( true if the device is non rotational and performs queueing )则返回:NULL
2637  如果bfq_too_late_for_merging(bfqq)则返回:NULL
2640  如果Shared bfq_queue if queue is cooperating with one or more* other queues.则返回:Shared bfq_queue if queue is cooperating with one or more* other queues.
2643  如果非io_struct此条件成立可能性小(为编译器优化)(bfqq == & fallback dummy bfqq for extreme OOM conditions )则返回:NULL
2647  如果bfq_tot_busy_queues(bfqd)恒等于1则返回:NULL
2650  in_service_bfqq等于 bfq_queue in service
2652  如果in_service_bfqqin_service_bfqq不等于bfqq此条件成立可能性大(为编译器优化)(in_service_bfqq != & fallback dummy bfqq for extreme OOM conditions )且bfq_rq_close_to_sector(io_struct, request, position of the last served request for the in-service queue )且 parent entity, for hierarchical scheduling 恒等于 parent entity, for hierarchical scheduling bfq_may_be_close_cooperator(bfqq, in_service_bfqq)则
2658  new_bfqq等于bfq_setup_merge(bfqq, in_service_bfqq)
2659  如果new_bfqq则返回:new_bfqq
2667  new_bfqq等于bfq_find_close_cooperator(bfqd, bfqq, bfq_io_struct_pos(io_struct, request))
2670  如果new_bfqq此条件成立可能性大(为编译器优化)(new_bfqq != & fallback dummy bfqq for extreme OOM conditions )且bfq_may_be_close_cooperator(bfqq, new_bfqq)则返回:bfq_setup_merge(bfqq, new_bfqq)
2674  返回:NULL
调用者
名称描述
bfq_allow_bio_merge
__bfq_insert_requestrns true if it causes the idle timer to be disabled