Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

Name:bfq_bfqq_handle_idle_busy_switch

Proto:static void bfq_bfqq_handle_idle_busy_switch(struct bfq_data *bfqd, struct bfq_queue *bfqq, int old_wr_coeff, struct request *rq, bool *interactive)

Type:void

Parameter:

TypeParameterName
struct bfq_data *bfqd
struct bfq_queue *bfqq
intold_wr_coeff
struct request *rq
bool *interactive
1656  idle_for_long_time = bfq_bfqq_idle_for_long_time(bfqd, bfqq) , arrived_in_time = ktime_get_ns() <= completion time of the last request + maximum idling time * 3
1676  in_burst = bfq_bfqq_in_large_burst(bfqq)
1677  soft_rt = Max service-rate for a soft real-time queue, in sectors/sec > 0 && Not Sync random I/O is likely to be confused with soft real-time I/O,* because it is characterized by limited throughput and apparently* isochronous arrival pattern(bfqq) && Not in_burst && ime_is_before_jiffies(a) return true if a is before jiffies (Minimum time instant such that, only if a new request is* enqueued after this time instant in an idle @bfq_queue with* no outstanding requests, then the task associated with the* queue it is deemed as soft real-time (see the comments on* the function ) && umber of requests on the dispatch list or inside driver == 0
1682  interactive = Not in_burst && idle_for_long_time
1683  wr_or_deserves_wr = if set to true, low-latency heuristics are enabled && ( actor by which the weight of this queue is multiplied > 1 || bfq_bfqq_sync(bfqq) && Pointer to the bfq_io_cq owning the bfq_queue, set to %NULL* if the queue is shared. && (interactive || soft_rt) )
1692  bfqq_wants_to_preempt = The next function, invoked after the input queue bfqq switches from* idle to busy, updates the budget of bfqq. The function also tells* whether the in-service queue should be expired, by returning* true
1709  If Value is more likely to compile time(!bfq_bfqq_just_created(bfqq)) && idle_for_long_time && ime_is_before_jiffies(a) return true if a is before jiffies (udget expiration (in jiffies) + msecs_to_jiffies: - convert milliseconds to jiffies*@m: time in milliseconds* conversion is done as follows:* - negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET)* - 'too large' values [that would result in larger than) Then
1714  hlist_del_init( & de for the device's burst list )
1715  bfq_clear_bfqq_in_large_burst(bfqq)
1718  bfq_clear_bfqq_just_created(bfqq)
1721  If Not bfq_bfqq_IO_bound(bfqq) Then
1722  If arrived_in_time Then
1727  Else Number of consecutive pairs of request completion and* arrival, such that the queue becomes idle after the* completion, but the next request arrives within an idle* time slice; used only if the queue's IO_bound flag has been* cleared. = 0
1731  If if set to true, low-latency heuristics are enabled Then
1732  If Value for the false possibility is greater at compile time(ime_is_after_jiffies(a) return true if a is after jiffies (ime of last split )) Then ime of last split = jiffies - * Minimum idle period after which weight-raising may be * reactivated for a queue (in jiffies). - 1
1751  Time of the last transition of the @bfq_queue from idle to* backlogged. = jiffies
1752  Cumulative service received from the @bfq_queue since the* last transition from idle to backlogged. = 0
1753  bfq_clear_bfqq_softrt_update(bfqq)
1755  Called when an inactive queue receives a new request.
1789  If bfq_queue in service && ( bfqq_wants_to_preempt && actor by which the weight of this queue is multiplied >= actor by which the weight of this queue is multiplied || Return true if bfqq is in a higher priority class, or has a higher* weight than the in-service queue.) && next_queue_may_preempt(bfqd) Then q_bfqq_expire - expire a queue.*@bfqd: device owning the queue.*@bfqq: the queue to expire.*@compensate: if true, compensate for the time spent idling.*@reason: the reason causing the expiration.* If the process associated with bfqq does slow I/O (e
Caller
NameDescribe
bfq_add_request