Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 2 files:

Smatch caller information:

fs/ceph/caps.c handle_cap_grant() -> __ceph_caps_revoking_other()

Type Parameter Key Value
PARAM_VALUE 0 ci 4096-ptr_max
PARAM_VALUE 0 ci->i_caps.rb_node 0,4096-ptr_max
PARAM_VALUE 1 ocap 4096-ptr_max
PARAM_VALUE 2 mask s32min-(-1),1024-s32max
CAPPED_DATA 0 ci->i_auth_cap 1
CAPPED_DATA 1 ocap 1
DATA_SOURCE 0 ci r ceph_inode
DATA_SOURCE 1 ocap $2
PARAM_COMPARE 1 ocap == $0->i_auth_cap
PARAM_COMPARE 1 ocap == $0->i_auth_cap
PARAM_COMPARE 1 ocap->issued != $2
PARAM_COMPARE 2 mask != $1->issued
BIT_INFO 1 ocap->seq 0x0,0x7fffffff
UNITS 1 ocap unit_byte

fs/ceph/inode.c ceph_do_invalidate_pages() -> __ceph_caps_revoking_other()

Type Parameter Key Value
PARAM_VALUE 0 ci 4096-ptr_max
PARAM_VALUE 1 ocap 0
PARAM_VALUE 2 mask 1024
CAPPED_DATA 0 &ci->i_truncate_mutex 1
DATA_SOURCE 0 ci r ceph_inode
PARAM_COMPARE 0 ci->i_rdcache_gen != $0->i_rdcache_revoking
PREEMPT_ADD <- disables preempt
LOCK2 0 &ci->i_ceph_lock
LOCK2 0 &ci->i_truncate_mutex
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_inode_info)->i_truncate_mutex

fs/ceph/inode.c ceph_do_invalidate_pages() -> __ceph_caps_revoking_other()

Type Parameter Key Value
PARAM_VALUE 0 ci 4096-ptr_max
PARAM_VALUE 1 ocap 0
PARAM_VALUE 2 mask 1024
CAPPED_DATA 0 ci->i_rdcache_gen 1
CAPPED_DATA 0 ci->i_rdcache_revoking 1
CAPPED_DATA 0 &ci->i_truncate_mutex 1
DATA_SOURCE 0 ci r ceph_inode
PARAM_COMPARE 0 ci->i_rdcache_gen == $0->i_rdcache_revoking
PREEMPT_ADD <- disables preempt
LOCK2 0 &ci->i_ceph_lock
LOCK2 0 &ci->i_truncate_mutex
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_inode_info)->i_truncate_mutex