Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\bfq-iosched.c Create Date:2022-07-28 17:56:31
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

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

Proto:static struct bfq_queue *bfq_choose_bfqq_for_injection(struct bfq_data *bfqd)

Type:struct bfq_queue

Parameter:

TypeParameterName
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 || Not bfq_bfqq_has_short_ttime(in_serv_bfqq)
4272  If 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 ) Then limit = 1
4279  If number of requests dispatched and waiting for completion >= limit Then Return 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  If Not RB_EMPTY_ROOT( & sorted list of pending requests ) && (in_serv_always_inject || actor 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) Then
4316  If blk_queue_nonrot( device request queue ) && blk_rq_sectors( fifo isn't expired, next request to serve ) >= BFQQ_SECT_THR_NONROT Then limit = 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  Else limit = limit for request injection
4325  Return bfqq
4329  Return NULL
Caller
NameDescribe
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.