Documented in 1 files:

Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

fs/gfs2/glock.c do_promote() -> find_first_holder()

Type Parameter Key Value
PARAM_VALUE 0 gl 4096-ptr_max
DATA_SOURCE 0 gl $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 gl->gl_name.ln_number 0-u64max
NO_OVERFLOW_SIMPLE 0 gl->gl_name.ln_sbd->sd_jdesc->jd_log_bio->bi_io_vec
LOCK2 0 &gl->gl_lockref.lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct lockref)->lock

fs/gfs2/glock.c gfs2_glock_nq() -> find_first_holder()

Type Parameter Key Value
PARAM_VALUE 0 gl 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 gl->gl_name.ln_number 0-u64max
LOCK2 0 &gl->gl_lockref.lock
HALF_LOCKED2 &fp->f_fl_mutex
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct lockref)->lock

fs/gfs2/glock.c gfs2_should_queue_trylock() -> find_first_holder()

Type Parameter Key Value
PARAM_VALUE 0 gl 4096-ptr_max
DATA_SOURCE 0 gl $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 gl->gl_name.ln_number 0-u64max
LOCK2 &gl->gl_lockref.lock
HALF_LOCKED2 &fp->f_fl_mutex
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct lockref)->lock

fs/gfs2/glock.c run_queue() -> find_first_holder()

Type Parameter Key Value
PARAM_VALUE 0 gl 4096-ptr_max
DATA_SOURCE 0 gl $0
PARAM_COMPARE 0 gl->gl_demote_state != $0->gl_state
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 gl->gl_name.ln_number 0-u64max
LOCK2 0 &gl->gl_lockref.lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct lockref)->lock

fs/gfs2/glock.c run_queue() -> find_first_holder()

Type Parameter Key Value
PARAM_VALUE 0 gl 4096-ptr_max
DATA_SOURCE 0 gl $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 gl->gl_name.ln_number 0-u64max
LOCK2 0 &gl->gl_lockref.lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct lockref)->lock