Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 7 files:

Smatch caller information:

fs/ceph/snap.c ceph_queue_cap_snap() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
LOCK2 &ci->i_ceph_lock
LOCK2 &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 __ceph_mark_dirty_caps() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &fsc->mdsc->snap_rwsem
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/caps.c ceph_take_cap_refs() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &mdsc->snap_rwsem
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

drivers/block/rbd.c rbd_img_object_requests() -> ceph_get_snap_context()

Type Parameter Key Value
LOCK2 &img_req->state_mutex
LOCK2 &rbd_dev->header_rwsem
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &rbd_dev->lock_rwsem
TYPE_LOCK (struct rbd_device)->header_rwsem
TYPE_LOCK (struct rbd_img_request)->state_mutex

fs/ceph/addr.c ceph_dirty_folio() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &((&xas)->xa)->xa_lock
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &ip->i_rw_mutex
HALF_LOCKED2 &log_ni->runlist.lock
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &mft_ni->mrec_lock
HALF_LOCKED2 &mftbmp_ni->runlist.lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &ni->file.run_lock
HALF_LOCKED2 &ni->ni_lock
HALF_LOCKED2 &nm_i->nat_tree_lock.internal_rwsem
HALF_LOCKED2 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 &session->mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 &src_inode->i_rwsem
HALF_LOCKED2 &vol->lcnbmp_lock
HALF_LOCKED2 &vol->mftbmp_lock
HALF_LOCKED2 _T->lock
HALF_LOCKED2 global &ksm_thread_mutex
HALF_LOCKED2 irq
HALF_LOCKED2 ptl
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/addr.c ceph_dirty_folio() -> ceph_get_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 1-u64max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &((&xas)->xa)->xa_lock
HALF_LOCKED2 &folio->private->lock
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &ip->i_rw_mutex
HALF_LOCKED2 &log_ni->runlist.lock
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &mft_ni->mrec_lock
HALF_LOCKED2 &mftbmp_ni->runlist.lock
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &ni->file.run_lock
HALF_LOCKED2 &ni->ni_lock
HALF_LOCKED2 &nm_i->nat_tree_lock.internal_rwsem
HALF_LOCKED2 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 &session->mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 &src_inode->i_rwsem
HALF_LOCKED2 &vol->lcnbmp_lock
HALF_LOCKED2 &vol->mftbmp_lock
HALF_LOCKED2 _T->lock
HALF_LOCKED2 global &ksm_thread_mutex
HALF_LOCKED2 irq
HALF_LOCKED2 ptl
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/addr.c ceph_find_incompatible() -> ceph_get_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
PARAM_VALUE 0 sc->seq 1-u64max
DATA_SOURCE 0 sc r page_snap_context
RX_PATH
TASK_NOT_RUNNING

fs/ceph/addr.c ceph_uninline_data() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
LOCK2 &fsc->mdsc->snap_rwsem
HALF_LOCKED2 &dentry->d_lockref.lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/addr.c ceph_uninline_data() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
LOCK2 &fsc->mdsc->snap_rwsem
HALF_LOCKED2 &dentry->d_lockref.lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/addr.c ceph_uninline_data() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
LOCK2 &fsc->mdsc->snap_rwsem
HALF_LOCKED2 &dentry->d_lockref.lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/addr.c get_oldest_context() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/addr.c get_oldest_context() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/file.c ceph_aio_retry_work() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/file.c ceph_aio_retry_work() -> ceph_get_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 1-u64max
PREEMPT_ADD <- disables preempt
LOCK2 &ci->i_ceph_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock

fs/ceph/file.c ceph_write_iter() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct inode)->i_rwsem

fs/ceph/file.c ceph_write_iter() -> ceph_get_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 1-u64max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct inode)->i_rwsem

fs/ceph/file.c ceph_zero_partial_object() -> ceph_get_snap_context()

Type Parameter Key Value
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sc unit_byte
LOCK2 &ci->i_ceph_lock
LOCK2 &inode->i_mapping->invalidate_lock
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct address_space)->invalidate_lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct inode)->i_rwsem

fs/ceph/file.c ceph_zero_partial_object() -> ceph_get_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 1-u64max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &ci->i_ceph_lock
LOCK2 &inode->i_mapping->invalidate_lock
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct address_space)->invalidate_lock
TYPE_LOCK (struct ceph_inode_info)->i_ceph_lock
TYPE_LOCK (struct inode)->i_rwsem

net/ceph/osd_client.c ceph_osdc_alloc_request() -> ceph_get_snap_context()

Type Parameter Key Value
DATA_SOURCE 0 sc $1
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &lreq->lock
HALF_LOCKED2 &mdsc->pool_perm_rwsem
HALF_LOCKED2 &obj_req->state_mutex
HALF_LOCKED2 &osdc->lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &rbd_dev->lock_rwsem
HALF_LOCKED2 &rbd_dev->watch_mutex