Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

block/blk-iocost.c adjust_inuse_and_calc_cost() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->abs_vdebt 0
PARAM_VALUE 0 iocg->hweight_active 1-u32max
PARAM_VALUE 0 iocg->hweight_inuse 1-u32max
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 0 iocg->level s32min-(-1),1-s32max
PARAM_VALUE 3 save 1
PARAM_VALUE 4 now 3907610017061425152,5497530922906451968
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg $0
DATA_SOURCE 4 now $3
PARAM_COMPARE 0 iocg->active != $0->inuse
PARAM_COMPARE 0 &iocg->active_list != $0->active_list.next
PARAM_COMPARE 1 active != $0->inuse
PARAM_COMPARE 2 inuse >= $2
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ioc->lock
LOCK2 flags
HALF_LOCKED2 &bio->bi_bdev->bd_queue->queue_lock
TYPE_LOCK (struct ioc)->lock

block/blk-iocost.c ioc_pd_free() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 1 active 0
PARAM_VALUE 2 inuse 0
PARAM_VALUE 3 save 0
PARAM_VALUE 4 now 7040180472332210176
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg r pd_to_iocg
PARAM_COMPARE 0 &iocg->active_list != $0->active_list.next
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ioc->lock
LOCK2 flags
HALF_LOCKED2 &blkcg->lock
HALF_LOCKED2 &q->blkcg_mutex
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 irq
TYPE_LOCK (struct ioc)->lock

block/blk-iocost.c iocg_activate() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->active_list.next 4096-ptr_max
PARAM_VALUE 0 iocg->active_list.prev 4096-ptr_max
PARAM_VALUE 0 iocg->child_active_sum 0
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 0 iocg->ioc->active_iocgs.next 4096-ptr_max
PARAM_VALUE 0 iocg->ioc->active_iocgs.next->next 4096-ptr_max
PARAM_VALUE 0 iocg->ioc->active_iocgs.next->prev 4096-ptr_max
PARAM_VALUE 0 iocg->ioc->lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 iocg->level s32min-(-1),1-s32max
PARAM_VALUE 3 save 1
PARAM_VALUE 4 now 5497530922906451968
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg $0
DATA_SOURCE 4 now $1
FUZZY_MAX 0 iocg->level 2
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ioc->lock
LOCK2 irq
HALF_LOCKED2 &bio->bi_bdev->bd_queue->queue_lock
TYPE_LOCK (struct ioc)->lock

block/blk-iocost.c iocg_handle_over_budget() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->abs_vdebt 0
PARAM_VALUE 0 iocg->hweight_active 1-u32max
PARAM_VALUE 0 iocg->hweight_inuse 1-u32max
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 0 iocg->level s32min-(-1),1-s32max
PARAM_VALUE 0 iocg->waitq.lock.rlock.dep_map->name 0-255
PARAM_VALUE 3 save 1
PARAM_VALUE 4 now 5497530922906451968
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg $1
DATA_SOURCE 4 now $3
PARAM_COMPARE 0 iocg->active != $0->inuse
PARAM_COMPARE 0 &iocg->active_list != $0->active_list.next
PARAM_COMPARE 1 active != $0->inuse
PARAM_COMPARE 2 inuse != $0->inuse
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 flags
LOCK2 0 &iocg->ioc->lock
LOCK2 0 &iocg->waitq.lock
HALF_LOCKED2 &bio->bi_bdev->bd_queue->queue_lock
TYPE_LOCK (struct ioc)->lock
TYPE_LOCK (struct wait_queue_head)->lock

block/blk-iocost.c iocg_incur_debt() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->abs_vdebt 0
PARAM_VALUE 0 iocg->hweight_active 1-u32max
PARAM_VALUE 0 iocg->hweight_inuse 1-u32max
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 0 iocg->level s32min-(-1),1-s32max
PARAM_VALUE 0 iocg->waitq.lock.rlock.dep_map->name 0-255
PARAM_VALUE 2 inuse 0
PARAM_VALUE 3 save 0
PARAM_VALUE 4 now 3907610017061425152,5497530922906451968
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg $0
DATA_SOURCE 4 now $2
PARAM_COMPARE 0 &iocg->active_list != $0->active_list.next
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 flags
LOCK2 0 &iocg->waitq.lock
HALF_LOCKED2 &bio->bi_bdev->bd_queue->queue_lock
HALF_LOCKED2 &ioc->lock
HALF_LOCKED2 0 &iocg->ioc->lock
TYPE_LOCK (struct ioc)->lock
TYPE_LOCK (struct wait_queue_head)->lock

block/blk-iocost.c iocg_pay_debt() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->abs_vdebt 0
PARAM_VALUE 0 iocg->active_list.next 4096-ptr_max
PARAM_VALUE 0 iocg->indebt_since 0
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 3 save 0
PARAM_VALUE 4 now 5497530922906451968,6482822333451345920,8240678478204813312
CAPPED_DATA 0 &iocg->active_list 1
DATA_SOURCE 0 iocg $0
DATA_SOURCE 4 now $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &iocg->waitq.lock
HALF_LOCKED2 &ioc->lock
HALF_LOCKED2 flags
HALF_LOCKED2 irq
HALF_LOCKED2 0 &iocg->ioc->lock
TYPE_LOCK (struct wait_queue_head)->lock

block/blk-iocost.c weight_updated() -> propagate_weights()

Type Parameter Key Value
PARAM_VALUE 0 iocg 4096-ptr_max
PARAM_VALUE 0 iocg->active 1-u32max
PARAM_VALUE 0 iocg->ioc 4096-ptr_max
PARAM_VALUE 0 iocg->pd.blkg->blkcg 0,4096-ptr_max
PARAM_VALUE 3 save 1
PARAM_VALUE 4 now 1514489097105772544,7018507348405301248
DATA_SOURCE 0 iocg $0
DATA_SOURCE 4 now $1
PARAM_COMPARE 0 iocg->weight != $1
PARAM_COMPARE 1 active != $0->weight
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 irq
HALF_LOCKED2 &bdev->bd_queue->rq_qos_mutex
HALF_LOCKED2 &blkcg->lock
HALF_LOCKED2 &ioc->lock
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &q->queue_lock
HALF_LOCKED2 flags
HALF_LOCKED2 0 &iocg->ioc->lock
TYPE_LOCK (struct ioc)->lock