Defined in 1 files as a function:

Referenced in 7 files:

Smatch caller information:

fs/f2fs/gc.c f2fs_resize_fs() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi r F2FS_I_SB
CAPABLE 0 21
PREEMPT_ADD <- disables preempt
LOCK2 0 &sbi->cp_rwsem.internal_rwsem
LOCK2 0 &sbi->gc_lock.internal_rwsem
LOCK2 0 &sbi->stat_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/gc.c f2fs_resize_fs() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi r F2FS_I_SB
CAPABLE 0 21
PREEMPT_ADD <- disables preempt
LOCK2 0 &sbi->cp_global_sem.internal_rwsem
LOCK2 0 &sbi->gc_lock.internal_rwsem
LOCK2 0 &sbi->stat_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/inode.c has_enough_free_blks() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/segment.c build_sit_entries() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
CAPPED_DATA 0 sbi->segs_per_sec 1
DATA_SOURCE 0 sbi $0
NO_OVERFLOW_SIMPLE 0 sbi->total_sections

fs/f2fs/segment.c build_sit_entries() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
CAPPED_DATA 0 sbi->segs_per_sec 1
DATA_SOURCE 0 sbi $0
NO_OVERFLOW_SIMPLE 0 sbi->total_sections

fs/f2fs/segment.c utilization() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 128
BUF_SIZE 0 sbi 128
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 sbi->compress_inode->i_bytes
NO_OVERFLOW_SIMPLE 0 sbi->compress_inode->i_mapping->host->i_size
NO_OVERFLOW_SIMPLE 0 sbi->compress_inode->i_size
NO_OVERFLOW_SIMPLE 0 sbi->meta_inode->i_bytes
NO_OVERFLOW_SIMPLE 0 sbi->meta_inode->i_mapping->host->i_size
NO_OVERFLOW_SIMPLE 0 sbi->meta_inode->i_size
NO_OVERFLOW_SIMPLE 0 sbi->node_inode->i_bytes
NO_OVERFLOW_SIMPLE 0 sbi->node_inode->i_mapping->host->i_size
NO_OVERFLOW_SIMPLE 0 sbi->node_inode->i_size

fs/f2fs/debug.c update_general_status() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &s->lock
LOCK2 global &f2fs_stat_lock
TYPE_LOCK (struct seq_file)->lock

fs/f2fs/debug.c utilization() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
LOCK2 &s->lock
LOCK2 global &f2fs_stat_lock
TYPE_LOCK (struct seq_file)->lock

fs/f2fs/checkpoint.c __prepare_cp_block() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 0 sbi->sb 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->cp_global_sem.internal_rwsem
LOCK2 0 &sbi->cp_rwsem.internal_rwsem
LOCK2 0 &sbi->node_change.internal_rwsem
LOCK2 0 &sbi->node_write.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/data.c has_enough_free_blks() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &io->io_rwsem.internal_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/data.c utilization() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
HALF_LOCKED2 &fio->sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem

fs/f2fs/xattr.c has_enough_free_blks() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/sysfs.c __sbi_store() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
DATA_SOURCE 0 sbi $1
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &of->mutex
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &of->prealloc_mutex
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 0 &sbi->sb->s_umount
TYPE_LOCK (struct f2fs_sb_info)->stat_lock
TYPE_LOCK (struct kernfs_open_file)->mutex

fs/f2fs/namei.c has_enough_free_blks() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/file.c has_enough_free_blks() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
DATA_SOURCE 0 sbi $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct f2fs_sb_info)->stat_lock

fs/f2fs/super.c f2fs_statfs() -> valid_user_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->stat_lock
HALF_LOCKED2 &s->s_umount
TYPE_LOCK (struct f2fs_sb_info)->stat_lock