Defined in 1 files as a function:

Referenced in 3 files:

Smatch caller information:

fs/f2fs/gc.c add_victim_entry() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $2
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/gc.c atgc_lookup_victim() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/gc.c do_garbage_collect() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 0
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem

fs/f2fs/gc.c do_garbage_collect() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 0
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem

fs/f2fs/gc.c f2fs_gc_range() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/gc.c f2fs_gc_range() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
CAPABLE 0 21
RX_PATH
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/gc.c f2fs_gc_range() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &inode->i_rwsem
LOCK2 0 &sbi->gc_lock.internal_rwsem
LOCK2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem
TYPE_LOCK (struct inode)->i_rwsem

fs/f2fs/gc.c f2fs_get_victim() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 0
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
LOCK2 &dirty_i->seglist_lock
LOCK2 &sit_i->sentry_lock
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem
TYPE_LOCK (struct sit_info)->sentry_lock

fs/f2fs/gc.c f2fs_get_victim() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/gc.c gc_data_segment() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi 1-s32max
BUF_SIZE 0 sbi 1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $3
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/gc.c get_cb_cost() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/gc.c get_gc_cost() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/gc.c get_gc_cost() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/segment.c __allocate_new_segment() -> get_valid_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
DATA_SOURCE 0 sbi $0
DATA_SOURCE 2 use_section $2
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/segment.c __f2fs_restore_inmem_curseg() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->segs_per_sec 0-s32max
PARAM_VALUE 2 use_section 0
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 0 sbi->s_ndevs 1
CAPPED_DATA 0 sbi->sb 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &curseg->curseg_mutex
LOCK2 0 &sbi->cp_global_sem.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 curseg_info)->curseg_mutex
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/segment.c __f2fs_save_inmem_curseg() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->segs_per_sec 0-s32max
PARAM_VALUE 2 use_section 0
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 &curseg->curseg_mutex
LOCK2 0 &sbi->cp_global_sem.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 curseg_info)->curseg_mutex
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/segment.c __locate_dirty_segment() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->segs_per_sec 2-u32max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
FUZZY_MAX 0 sbi->segs_per_sec 2
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 sbi->total_sections
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->node_write.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/segment.c __remove_dirty_segment() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->node_write.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/segment.c check_zone_write_pointer() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem

fs/f2fs/segment.c f2fs_clear_prefree_segments() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->segs_per_sec 0-s32max
PARAM_VALUE 1 segno 0-2147483646
PARAM_VALUE 2 use_section 1
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 0 sbi->sb 1
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
FUZZY_MAX 0 sbi->segs_per_sec 2
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
LOCK2 0 &sbi->cp_global_sem.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 dirty_seglist_info)->seglist_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/segment.c f2fs_dirty_to_prefree() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-64
PARAM_VALUE 2 use_section 0
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno r find_next_bit
LOCK2 &dirty_i->seglist_lock
LOCK2 0 &sbi->gc_lock.internal_rwsem
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock
TYPE_LOCK (struct f2fs_rwsem)->internal_rwsem

fs/f2fs/segment.c get_free_segment() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-64
PARAM_VALUE 2 use_section 0
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno r find_next_bit
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &curseg->curseg_mutex
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->umount_mutex
TYPE_LOCK (struct curseg_info)->curseg_mutex
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/segment.c init_dirty_segmap() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->sm_info 4096-ptr_max
PARAM_VALUE 1 segno 0-64
PARAM_VALUE 2 use_section 0
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno r find_next_inuse

fs/f2fs/segment.c init_dirty_segmap() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 0 sbi->segs_per_sec 2-u32max
PARAM_VALUE 0 sbi->sm_info 4096-ptr_max
PARAM_VALUE 1 segno 0,2-4294967294
PARAM_VALUE 2 use_section 1
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
FUZZY_MAX 0 sbi->segs_per_sec 2
LOCK2 &dirty_i->seglist_lock
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/segment.c locate_dirty_segment() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 0
BUF_SIZE 0 sbi (-1),1-s32max
BUF_SIZE 0 sbi (-1),1-s32max
DATA_SOURCE 0 sbi $0
DATA_SOURCE 1 segno $1
RX_PATH
TASK_NOT_RUNNING
UNITS 0 sbi unit_byte
LOCK2 &dirty_i->seglist_lock
HALF_LOCKED2 &curseg->curseg_mutex
HALF_LOCKED2 &sit_i->sentry_lock
HALF_LOCKED2 0 &sbi->cp_global_sem.internal_rwsem
HALF_LOCKED2 0 &sbi->cp_rwsem.internal_rwsem
HALF_LOCKED2 0 &sbi->gc_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->io_order_lock.internal_rwsem
HALF_LOCKED2 0 &sbi->node_write.internal_rwsem
HALF_LOCKED2 0 &sbi->pin_sem.internal_rwsem
TYPE_LOCK (struct dirty_seglist_info)->seglist_lock

fs/f2fs/debug.c f2fs_update_sit_info() -> get_valid_blocks()

Type Parameter Key Value
PARAM_VALUE 0 sbi 4096-ptr_max
PARAM_VALUE 1 segno 0-4294967294
PARAM_VALUE 2 use_section 1
CAPPED_DATA 1 segno 1
DATA_SOURCE 0 sbi $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &s->lock
HALF_LOCKED2 global &f2fs_stat_lock