函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:This function chooses the queue from which to pick the next extra* I/O request to inject, if it finds a compatible queue

函数原型:static struct bfq_queue *bfq_choose_bfqq_for_injection(struct bfq_data *bfqd)

返回类型:struct bfq_queue

参数:

类型参数名称
struct bfq_data *bfqd
4246  in_serv_bfqq等于 bfq_queue in service
4247  limit等于limit for request injection
4260  in_serv_always_inject等于actor by which the weight of this queue is multiplied 恒等于1或非bfq_bfqq_has_short_ttime(in_serv_bfqq)
4272  如果limit恒等于0且last total-service-time sample, see bfq_update_inject_limit() 恒等于0且bfq_bfqq_wait_request(in_serv_bfqq)且ime_is_before_eq_jiffies(a) return true if a is before or equal to jiffies(last_idling_start_jiffies + maximum idling time )则limit等于1
4279  如果 number of requests dispatched and waiting for completion 大于等于limit则返回:NULL
4294  list_for_each_entry - iterate over list of given type*@pos: the type * to use as a loop cursor.*@head: the head for your list.*@member: the name of the list_head within the struct.(bfqq, & list of all the bfq_queues active on the device , bfqq_list)
4295  如果非RB_EMPTY_ROOT( & sorted list of pending requests )且in_serv_always_injectactor by which the weight of this queue is multiplied 大于1的值且see the definition of bfq_async_charge_factor for details 小于等于bfq_bfqq_budget_left(bfqq)则
4316  如果blk_queue_nonrot( device request queue )且blk_rq_sectors( fifo isn't expired, next request to serve )大于等于BFQQ_SECT_THR_NONROTlimit等于min_t - return minimum of two values, using the specified type*@type: data type to use*@x: first value*@y: second value(unsignedint, 1, limit)
4320  否则limit等于limit for request injection
4325  返回:bfqq
4329  返回:NULL
调用者
名称描述
bfq_select_queueSelect a queue for service. If we have a current queue in service,* check whether to continue servicing it, or retrieve and set a new one.