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 __destroy_snap_realm() -> ceph_put_snap_context()

Type Parameter Key Value
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mdsc->snap_rwsem

fs/ceph/snap.c build_snap_context() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
NOCHECK_CALL
LOCK2 &mdsc->snap_rwsem
HALF_LOCKED2 &session->s_mutex
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/snap.c build_snap_context() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
NOCHECK_CALL
LOCK2 &mdsc->snap_rwsem
HALF_LOCKED2 &session->s_mutex
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

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

Type Parameter Key Value
NOCHECK_CALL
LOCK2 &mdsc->snap_rwsem
HALF_LOCKED2 &session->s_mutex
TYPE_LOCK (struct ceph_mds_client)->snap_rwsem

fs/ceph/caps.c __ceph_put_cap_refs() -> ceph_put_snap_context()

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

fs/ceph/caps.c ceph_purge_inode_cap() -> ceph_put_snap_context()

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

fs/ceph/caps.c ceph_put_wrbuffer_cap_refs() -> ceph_put_snap_context()

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

fs/ceph/caps.c ceph_try_drop_cap_snap() -> ceph_put_snap_context()

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

fs/ceph/caps.c handle_cap_flush_ack() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 1-u64max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
UNITS 0 sc unit_byte
LOCK2 &mdsc->cap_dirty_lock
TYPE_LOCK (struct ceph_mds_client)->cap_dirty_lock

fs/ceph/caps.c handle_cap_flushsnap_ack() -> ceph_put_snap_context()

Type Parameter Key Value
NOCHECK_CALL
UNITS 0 sc unit_byte

fs/ceph/caps.c remove_capsnaps() -> ceph_put_snap_context()

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

drivers/block/rbd.c rbd_dev_update_header() -> ceph_put_snap_context()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &rbd_dev->header_rwsem
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &rbd_dev->lock_rwsem
TYPE_LOCK (struct rbd_device)->header_rwsem

drivers/block/rbd.c rbd_header_from_disk() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
PARAM_VALUE 0 sc->nref.refs.counter 1
PARAM_VALUE 0 sc->num_snaps 1-u32max
BUF_SIZE 0 sc (-1),24-s32max
BUF_SIZE 0 sc (-1),24-s32max
DATA_SOURCE 0 sc r ceph_create_snap_context
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &rbd_dev->header_rwsem
HALF_LOCKED2 &rbd_dev->lock_rwsem

drivers/block/rbd.c rbd_image_header_cleanup() -> ceph_put_snap_context()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &of->mutex

drivers/block/rbd.c rbd_img_request_destroy() -> ceph_put_snap_context()

Type Parameter Key Value
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

fs/ceph/addr.c ceph_define_writeback_range() -> ceph_put_snap_context()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 sc unit_page
HALF_LOCKED2 &mapping->invalidate_lock

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

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
PARAM_VALUE 0 sc->seq 0-18446744073709551614
CAPPED_DATA 0 sc->seq 1
DATA_SOURCE 0 sc r get_oldest_context
BIT_INFO 0 sc 0x0,0x0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

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

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
DATA_SOURCE 0 sc r get_oldest_context
BIT_INFO 0 sc 0x0,0x0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ceph/addr.c ceph_invalidate_folio() -> ceph_put_snap_context()

Type Parameter Key Value
BUF_SIZE 0 sc (-1),1-s32max
BUF_SIZE 0 sc (-1),1-s32max
DATA_SOURCE 0 sc r folio_detach_private
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 sc unit_byte

fs/ceph/addr.c ceph_netfs_check_write_begin() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
DATA_SOURCE 0 sc r ceph_find_incompatible
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &inode->i_rwsem

fs/ceph/addr.c ceph_page_mkwrite() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
DATA_SOURCE 0 sc r ceph_find_incompatible
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

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

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &dentry->d_lockref.lock

fs/ceph/addr.c ceph_writepages_start() -> ceph_put_snap_context()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 sc unit_page

fs/ceph/addr.c context_is_writeable_or_written() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
DATA_SOURCE 0 sc r get_oldest_context
BIT_INFO 0 sc 0x0,0x0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ceph/addr.c write_folio_nounlock() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
PARAM_VALUE 0 sc->seq 0-18446744073709551614
CAPPED_DATA 0 sc->seq 1
DATA_SOURCE 0 sc r get_oldest_context
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ceph/addr.c write_folio_nounlock() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
DATA_SOURCE 0 sc r get_oldest_context
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ceph/addr.c write_folio_nounlock() -> ceph_put_snap_context()

Type Parameter Key Value
PARAM_VALUE 0 sc 4096-ptr_max
CAPPED_DATA 0 sc 1
CAPPED_DATA 0 sc->seq 1
DATA_SOURCE 0 sc r page_snap_context
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 sc unit_byte

fs/ceph/addr.c writepages_finish() -> ceph_put_snap_context()

Type Parameter Key Value
BUF_SIZE 0 sc (-1),1-s32max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

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

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

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

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

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

Type Parameter Key Value
PARAM_VALUE 0 sc 0,4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &inode->i_mapping->invalidate_lock
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct address_space)->invalidate_lock
TYPE_LOCK (struct inode)->i_rwsem

net/ceph/osd_client.c ceph_osdc_release_request() -> ceph_put_snap_context()

Type Parameter Key Value
NOCHECK_CALL