Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

Name:throtl_pending_timer_fn

Proto:static void throtl_pending_timer_fn(struct timer_list *t)

Type:void

Parameter:

TypeParameterName
struct timer_list *t
1255  sq = from_timer(sq, t, pending_timer)
1256  tg = sq_to_tg - return the throl_grp the specified service queue belongs to*@sq: the throtl_service_queue of interest* Return the throtl_grp @sq belongs to. If @sq is the top-level one* embedded in throtl_data, %NULL is returned.
1257  td = sq_to_td - return throtl_data the specified service queue belongs to*@sq: the throtl_service_queue of interest* A service_queue can be embedded in either a throtl_grp or throtl_data.* Determine the associated throtl_data accordingly and return it.
1258  q = queue
1263  spin_lock_irq( & queue_lock)
1264  If throtl_can_upgrade(td, NULL) Then throtl_upgrade_state(td)
1267  again :
1268  parent_sq = the parent service_queue
1269  dispatched = false
1271  When (true) cycle
1272  hrotl_log - log debug message via blktrace*@sq: the service_queue being reported*@fmt: printf format string*@args: printf args* The messages are prefixed with "throtl BLKG_NAME" if @sq belongs to a* throtl_grp; otherwise, just "throtl".(sq, "dispatch nr_queued=%u read=%u write=%u", number of queued bios [generic data direction definitions ] + number of queued bios [WRITE], number of queued bios [generic data direction definitions ], number of queued bios [WRITE])
1276  ret = throtl_select_dispatch(sq)
1277  If ret Then
1279  dispatched = true
1282  If hrotl_schedule_next_dispatch - schedule the next dispatch cycle*@sq: the service_queue to schedule dispatch for*@force: force scheduling* Arm @sq->pending_timer so that the next dispatch cycle starts on the* dispatch time of the first pending child Then Break
1286  spin_unlock_irq( & queue_lock)
1287  cpu_relax()
1288  spin_lock_irq( & queue_lock)
1291  If Not dispatched Then Go to out_unlock
1294  If parent_sq Then
1305  Else
1307  queue_work - queue work on a workqueue*@wq: workqueue to use*@work: work to queue* Returns %false if @work was already on a queue, %true otherwise.* We queue the work to the CPU on which it was submitted, but if the CPU dies
1309  out_unlock :
1310  spin_unlock_irq( & queue_lock)