Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

fs/ceph/mds_client.c trim_caps_cb() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 0 mdsc 4096-ptr_max
PARAM_VALUE 0 mdsc->fsc 4096-ptr_max
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 2 queue_release 1
CAPPED_DATA 1 cap 1
CAPPED_DATA 1 cap->mds 1
DATA_SOURCE 0 mdsc r ceph_sb_to_mdsc
DATA_SOURCE 1 cap r __get_cap_for_mds
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 1 cap unit_byte
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &mdsc->snap_rwsem
HALF_LOCKED2 &s->lock
HALF_LOCKED2 &session->s_mutex
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/caps.c __ceph_remove_caps() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 2 queue_release 1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 1 cap unit_byte
LOCK2 &ci->i_ceph_lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/caps.c handle_cap_export() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 0 mdsc 4096-ptr_max
PARAM_VALUE 0 mdsc->fsc 4096-ptr_max
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->type 0-1
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 2 queue_release 0
CAPPED_DATA 0 &mdsc->snap_rwsem 1
CAPPED_DATA 1 cap->cap_id 1
CAPPED_DATA 1 cap->mds 1
DATA_SOURCE 1 cap r __get_cap_for_mds
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 mdsc->max_sessions
LOCK2 &ci->i_ceph_lock
LOCK2 0 &mdsc->snap_rwsem
HALF_LOCKED2 &session->s_mutex
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/caps.c handle_cap_export() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 0 mdsc 4096-ptr_max
PARAM_VALUE 0 mdsc->fsc 4096-ptr_max
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->type 0-1
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 2 queue_release 0
CAPPED_DATA 0 &mdsc->snap_rwsem 1
CAPPED_DATA 1 cap 1
CAPPED_DATA 1 cap->cap_id 1
CAPPED_DATA 1 cap->mds 1
DATA_SOURCE 1 cap r __get_cap_for_mds
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 mdsc->max_sessions
UNITS 1 cap unit_byte
LOCK2 &ci->i_ceph_lock
LOCK2 0 &mdsc->snap_rwsem
HALF_LOCKED2 &session->s_mutex
HALF_LOCKED2 &tsession->s_mutex
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/caps.c handle_cap_export() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 0 mdsc 4096-ptr_max
PARAM_VALUE 0 mdsc->caps_list_lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 mdsc->fsc 4096-ptr_max
PARAM_VALUE 0 mdsc->mdsmap 4096-ptr_max
PARAM_VALUE 0 mdsc->sessions 4096-ptr_max
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->handoff_set 1
PARAM_VALUE 0 mdsc->snap_rwsem.first_waiter->type 0-1
PARAM_VALUE 0 *mdsc->sessions 4096-ptr_max
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 2 queue_release 0
CAPPED_DATA 0 &mdsc->snap_rwsem 1
CAPPED_DATA 1 cap 1
CAPPED_DATA 1 cap->cap_id 1
CAPPED_DATA 1 cap->mds 1
DATA_SOURCE 1 cap r __get_cap_for_mds
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
NO_OVERFLOW_SIMPLE 0 mdsc->max_sessions
UNITS 1 cap unit_byte
LOCK2 &ci->i_ceph_lock
LOCK2 &session->s_mutex
LOCK2 &tsession->s_mutex
LOCK2 0 &mdsc->snap_rwsem
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem
TYPE_LOCK (struct ceph_mds_session)->s_mutex

fs/ceph/caps.c handle_cap_import() -> ceph_remove_cap()

Type Parameter Key Value
PARAM_VALUE 0 mdsc 4096-ptr_max
PARAM_VALUE 0 mdsc->fsc 4096-ptr_max
PARAM_VALUE 1 cap 4096-ptr_max
PARAM_VALUE 1 cap->mds 0-s32max
CAPPED_DATA 1 cap->cap_id 1
CAPPED_DATA 1 cap->mds 1
DATA_SOURCE 0 mdsc $0
BIT_INFO 2 queue_release 0x0,0x2
NOCHECK_CALL
HALF_LOCKED2 &ci->i_ceph_lock