Lines Matching refs:dcc

998 	struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;  in __create_discard_cmd()  local
1004 pend_list = &dcc->pend_list[plist_idx(len)]; in __create_discard_cmd()
1020 atomic_inc(&dcc->discard_cmd_cnt); in __create_discard_cmd()
1021 dcc->undiscard_blks += len; in __create_discard_cmd()
1032 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __attach_discard_cmd() local
1038 rb_insert_color_cached(&dc->rb_node, &dcc->root, leftmost); in __attach_discard_cmd()
1043 static void __detach_discard_cmd(struct discard_cmd_control *dcc, in __detach_discard_cmd() argument
1047 atomic_sub(dc->queued, &dcc->queued_discard); in __detach_discard_cmd()
1050 rb_erase_cached(&dc->rb_node, &dcc->root); in __detach_discard_cmd()
1051 dcc->undiscard_blks -= dc->len; in __detach_discard_cmd()
1055 atomic_dec(&dcc->discard_cmd_cnt); in __detach_discard_cmd()
1061 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __remove_discard_cmd() local
1083 __detach_discard_cmd(dcc, dc); in __remove_discard_cmd()
1134 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __init_discard_policy() local
1155 if (atomic_read(&dcc->discard_cmd_cnt)) in __init_discard_policy()
1187 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __submit_discard_cmd() local
1189 &(dcc->fstrim_list) : &(dcc->wait_list); in __submit_discard_cmd()
1258 atomic_inc(&dcc->queued_discard); in __submit_discard_cmd()
1270 atomic_inc(&dcc->issued_discard); in __submit_discard_cmd()
1281 dcc->undiscard_blks -= len; in __submit_discard_cmd()
1293 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __insert_discard_tree() local
1304 p = f2fs_lookup_rb_tree_for_insert(sbi, &dcc->root, &parent, in __insert_discard_tree()
1311 static void __relocate_discard_cmd(struct discard_cmd_control *dcc, in __relocate_discard_cmd() argument
1314 list_move_tail(&dc->list, &dcc->pend_list[plist_idx(dc->len)]); in __relocate_discard_cmd()
1320 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __punch_discard_cmd() local
1329 dcc->undiscard_blks -= di.len; in __punch_discard_cmd()
1333 dcc->undiscard_blks += dc->len; in __punch_discard_cmd()
1334 __relocate_discard_cmd(dcc, dc); in __punch_discard_cmd()
1348 dcc->undiscard_blks += dc->len; in __punch_discard_cmd()
1349 __relocate_discard_cmd(dcc, dc); in __punch_discard_cmd()
1358 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __update_discard_tree_range() local
1368 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __update_discard_tree_range()
1410 dcc->undiscard_blks += di.len; in __update_discard_tree_range()
1411 __relocate_discard_cmd(dcc, prev_dc); in __update_discard_tree_range()
1424 dcc->undiscard_blks += di.len; in __update_discard_tree_range()
1425 __relocate_discard_cmd(dcc, next_dc); in __update_discard_tree_range()
1469 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd_orderly() local
1474 unsigned int pos = dcc->next_pos; in __issue_discard_cmd_orderly()
1478 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd_orderly()
1479 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __issue_discard_cmd_orderly()
1501 dcc->next_pos = dc->lstart + dc->len; in __issue_discard_cmd_orderly()
1516 dcc->next_pos = 0; in __issue_discard_cmd_orderly()
1518 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_orderly()
1531 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd() local
1554 pend_list = &dcc->pend_list[i]; in __issue_discard_cmd()
1556 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd()
1559 if (unlikely(dcc->rbtree_check)) in __issue_discard_cmd()
1561 &dcc->root, false)); in __issue_discard_cmd()
1583 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd()
1602 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __drop_discard_cmd() local
1608 mutex_lock(&dcc->cmd_lock); in __drop_discard_cmd()
1610 pend_list = &dcc->pend_list[i]; in __drop_discard_cmd()
1617 mutex_unlock(&dcc->cmd_lock); in __drop_discard_cmd()
1630 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __wait_one_discard_bio() local
1634 mutex_lock(&dcc->cmd_lock); in __wait_one_discard_bio()
1642 mutex_unlock(&dcc->cmd_lock); in __wait_one_discard_bio()
1651 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __wait_discard_cmd_range() local
1653 &(dcc->fstrim_list) : &(dcc->wait_list); in __wait_discard_cmd_range()
1661 mutex_lock(&dcc->cmd_lock); in __wait_discard_cmd_range()
1678 mutex_unlock(&dcc->cmd_lock); in __wait_discard_cmd_range()
1709 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_wait_discard_bio() local
1713 mutex_lock(&dcc->cmd_lock); in f2fs_wait_discard_bio()
1714 dc = (struct discard_cmd *)f2fs_lookup_rb_tree(&dcc->root, in f2fs_wait_discard_bio()
1724 mutex_unlock(&dcc->cmd_lock); in f2fs_wait_discard_bio()
1732 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_stop_discard_thread() local
1734 if (dcc && dcc->f2fs_issue_discard) { in f2fs_stop_discard_thread()
1735 struct task_struct *discard_thread = dcc->f2fs_issue_discard; in f2fs_stop_discard_thread()
1737 dcc->f2fs_issue_discard = NULL; in f2fs_stop_discard_thread()
1745 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_issue_discard_timeout() local
1750 dcc->discard_granularity); in f2fs_issue_discard_timeout()
1757 f2fs_bug_on(sbi, atomic_read(&dcc->discard_cmd_cnt)); in f2fs_issue_discard_timeout()
1764 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in issue_discard_thread() local
1765 wait_queue_head_t *q = &dcc->discard_wait_queue; in issue_discard_thread()
1778 dcc->discard_granularity); in issue_discard_thread()
1780 if (!atomic_read(&dcc->discard_cmd_cnt)) in issue_discard_thread()
1785 dcc->discard_wake, in issue_discard_thread()
1788 if (dcc->discard_wake) in issue_discard_thread()
1789 dcc->discard_wake = 0; in issue_discard_thread()
1792 if (atomic_read(&dcc->queued_discard)) in issue_discard_thread()
1805 if (!atomic_read(&dcc->discard_cmd_cnt)) in issue_discard_thread()
2013 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_clear_prefree_segments() local
2014 struct list_head *head = &dcc->entry_list; in f2fs_clear_prefree_segments()
2111 dcc->nr_discards -= total_len; in f2fs_clear_prefree_segments()
2121 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_start_discard_thread() local
2127 dcc->f2fs_issue_discard = kthread_run(issue_discard_thread, sbi, in f2fs_start_discard_thread()
2129 if (IS_ERR(dcc->f2fs_issue_discard)) in f2fs_start_discard_thread()
2130 err = PTR_ERR(dcc->f2fs_issue_discard); in f2fs_start_discard_thread()
2137 struct discard_cmd_control *dcc; in create_discard_cmd_control() local
2141 dcc = SM_I(sbi)->dcc_info; in create_discard_cmd_control()
2145 dcc = f2fs_kzalloc(sbi, sizeof(struct discard_cmd_control), GFP_KERNEL); in create_discard_cmd_control()
2146 if (!dcc) in create_discard_cmd_control()
2149 dcc->discard_granularity = DEFAULT_DISCARD_GRANULARITY; in create_discard_cmd_control()
2151 dcc->discard_granularity = sbi->blocks_per_seg; in create_discard_cmd_control()
2153 dcc->discard_granularity = BLKS_PER_SEC(sbi); in create_discard_cmd_control()
2155 INIT_LIST_HEAD(&dcc->entry_list); in create_discard_cmd_control()
2157 INIT_LIST_HEAD(&dcc->pend_list[i]); in create_discard_cmd_control()
2158 INIT_LIST_HEAD(&dcc->wait_list); in create_discard_cmd_control()
2159 INIT_LIST_HEAD(&dcc->fstrim_list); in create_discard_cmd_control()
2160 mutex_init(&dcc->cmd_lock); in create_discard_cmd_control()
2161 atomic_set(&dcc->issued_discard, 0); in create_discard_cmd_control()
2162 atomic_set(&dcc->queued_discard, 0); in create_discard_cmd_control()
2163 atomic_set(&dcc->discard_cmd_cnt, 0); in create_discard_cmd_control()
2164 dcc->nr_discards = 0; in create_discard_cmd_control()
2165 dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg; in create_discard_cmd_control()
2166 dcc->undiscard_blks = 0; in create_discard_cmd_control()
2167 dcc->next_pos = 0; in create_discard_cmd_control()
2168 dcc->root = RB_ROOT_CACHED; in create_discard_cmd_control()
2169 dcc->rbtree_check = false; in create_discard_cmd_control()
2171 init_waitqueue_head(&dcc->discard_wait_queue); in create_discard_cmd_control()
2172 SM_I(sbi)->dcc_info = dcc; in create_discard_cmd_control()
2176 kfree(dcc); in create_discard_cmd_control()
2185 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in destroy_discard_cmd_control() local
2187 if (!dcc) in destroy_discard_cmd_control()
2196 if (unlikely(atomic_read(&dcc->discard_cmd_cnt))) in destroy_discard_cmd_control()
2199 kfree(dcc); in destroy_discard_cmd_control()
3055 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd_range() local
3066 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3067 if (unlikely(dcc->rbtree_check)) in __issue_discard_cmd_range()
3069 &dcc->root, false)); in __issue_discard_cmd_range()
3071 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __issue_discard_cmd_range()
3089 list_move_tail(&dc->list, &dcc->fstrim_list); in __issue_discard_cmd_range()
3102 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3118 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_range()