Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 6 files:

Smatch caller information:

fs/btrfs/qgroup.c btrfs_tree_unlock_rw() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
DATA_SOURCE 0 eb $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &eb->lock
HALF_LOCKED2 &fs_info->cleaner_mutex
HALF_LOCKED2 &root_eb->lock

fs/btrfs/tree-mod-log.c btrfs_get_old_root() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->tree_mod_log_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
CAPPED_DATA 0 eb 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/btrfs/tree-mod-log.c btrfs_get_old_root() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->mapping_tree_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->nodesize 0-65536
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb 1
DATA_SOURCE 0 eb r read_tree_block
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/tree-mod-log.c btrfs_get_old_root() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->tree_mod_log_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
CAPPED_DATA 0 eb 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/btrfs/tree-mod-log.c btrfs_get_old_root() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->nodesize 0-65536
PARAM_VALUE 0 eb->fs_info->tree_mod_log_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
CAPPED_DATA 0 eb 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/btrfs/tree-mod-log.c btrfs_tree_mod_log_rewind() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->eb_leak_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb->start 1
DATA_SOURCE 0 eb $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 eb->len
NO_OVERFLOW_SIMPLE 0 eb->start
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/tree-mod-log.c btrfs_tree_mod_log_rewind() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->eb_leak_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->nodesize 0-65536
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb->start 1
DATA_SOURCE 0 eb $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 eb->len
NO_OVERFLOW_SIMPLE 0 eb->start
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/tree-mod-log.c btrfs_tree_mod_log_rewind() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->eb_leak_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->nodesize 0-65536
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb->start 1
DATA_SOURCE 0 eb $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 eb->len
NO_OVERFLOW_SIMPLE 0 eb->start
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/locking.c btrfs_read_lock_root_node() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/locking.c btrfs_tree_unlock_rw() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 1-u64max
DATA_SOURCE 0 eb $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &fs_info->cleaner_mutex

fs/btrfs/locking.c btrfs_try_read_lock_root_node() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
NOCHECK_CALL
LOCK2 0 &eb->lock
HALF_LOCKED2 &cow->lock
HALF_LOCKED2 &fs_info->commit_root_sem
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/extent-tree.c btrfs_tree_unlock_rw() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
DATA_SOURCE 0 eb $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &fs_info->cleaner_mutex
HALF_LOCKED2 &node->lock
TYPE_LOCK (struct btrfs_fs_info)->cleaner_mutex

fs/btrfs/ref-verify.c btrfs_tree_unlock_rw() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 1-u64max
DATA_SOURCE 0 eb $0
NOCHECK_CALL

fs/btrfs/ctree.c btrfs_next_old_leaf() -> btrfs_tree_read_unlock()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &caching_ctl->mutex
HALF_LOCKED2 &fs_info->commit_root_sem
HALF_LOCKED2 &fs_info->commit_root_sem
HALF_LOCKED2 &next->lock
HALF_LOCKED2 &pool->lock

fs/btrfs/ctree.c btrfs_search_slot_get_root() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->refs.refs.counter (-1073741824),0-s32max
CAPPED_DATA 0 eb 1
NOCHECK_CALL
HALF_LOCKED2 &cow->lock
HALF_LOCKED2 &fs_info->commit_root_sem

fs/btrfs/ctree.c btrfs_tree_unlock_rw() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 1-u64max
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb 1
DATA_SOURCE 0 eb $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/btrfs/ctree.c read_block_for_search() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->mapping_tree_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/backref.c add_missing_keys() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.bio_counter.lock.owner (-1)
PARAM_VALUE 0 eb->fs_info->dev_replace.bio_counter.lock.owner_cpu u32max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->mapping_tree_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb 1
DATA_SOURCE 0 eb r read_tree_block
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &eb->lock
HALF_LOCKED2 &fs_info->commit_root_sem
TYPE_LOCK (struct extent_buffer)->lock

fs/btrfs/backref.c btrfs_ref_to_path() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 eb->start

fs/btrfs/backref.c find_parent_nodes() -> btrfs_tree_read_unlock()

Type Parameter Key Value
PARAM_VALUE 0 eb 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.bio_counter.lock.owner (-1)
PARAM_VALUE 0 eb->fs_info->dev_replace.bio_counter.lock.owner_cpu u32max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->dev_replace.replace_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 eb->fs_info->mapping_tree_lock.dep_map->name 0-255
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->handoff_set 0-1
PARAM_VALUE 0 eb->fs_info->stripe_root->node->lock.first_waiter->type 0-1
PARAM_VALUE 0 eb->lock.dep_map->name 0-255
PARAM_VALUE 0 eb->lock.first_waiter->list.next 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->list.prev 2212933610777083904
PARAM_VALUE 0 eb->lock.first_waiter->type 0-1
CAPPED_DATA 0 eb 1
DATA_SOURCE 0 eb r read_tree_block
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 0 &eb->lock
TYPE_LOCK (struct extent_buffer)->lock