Lines Matching full:dcc
1084 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __create_discard_cmd() local
1090 pend_list = &dcc->pend_list[plist_idx(len)]; in __create_discard_cmd()
1106 atomic_inc(&dcc->discard_cmd_cnt); in __create_discard_cmd()
1107 dcc->undiscard_blks += len; in __create_discard_cmd()
1118 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __attach_discard_cmd() local
1124 rb_insert_color_cached(&dc->rb_node, &dcc->root, leftmost); in __attach_discard_cmd()
1129 static void __detach_discard_cmd(struct discard_cmd_control *dcc, in __detach_discard_cmd() argument
1133 atomic_sub(dc->queued, &dcc->queued_discard); in __detach_discard_cmd()
1136 rb_erase_cached(&dc->rb_node, &dcc->root); in __detach_discard_cmd()
1137 dcc->undiscard_blks -= dc->len; in __detach_discard_cmd()
1141 atomic_dec(&dcc->discard_cmd_cnt); in __detach_discard_cmd()
1147 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __remove_discard_cmd() local
1169 __detach_discard_cmd(dcc, dc); in __remove_discard_cmd()
1220 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __init_discard_policy() local
1235 dcc->discard_type = discard_type; in __init_discard_policy()
1268 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __submit_discard_cmd() local
1270 &(dcc->fstrim_list) : &(dcc->wait_list); in __submit_discard_cmd()
1342 atomic_inc(&dcc->queued_discard); in __submit_discard_cmd()
1354 atomic_inc(&dcc->issued_discard); in __submit_discard_cmd()
1365 dcc->undiscard_blks -= len; in __submit_discard_cmd()
1377 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __insert_discard_tree() local
1388 p = f2fs_lookup_rb_tree_for_insert(sbi, &dcc->root, &parent, in __insert_discard_tree()
1395 static void __relocate_discard_cmd(struct discard_cmd_control *dcc, in __relocate_discard_cmd() argument
1398 list_move_tail(&dc->list, &dcc->pend_list[plist_idx(dc->len)]); in __relocate_discard_cmd()
1404 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __punch_discard_cmd() local
1413 dcc->undiscard_blks -= di.len; in __punch_discard_cmd()
1417 dcc->undiscard_blks += dc->len; in __punch_discard_cmd()
1418 __relocate_discard_cmd(dcc, dc); in __punch_discard_cmd()
1432 dcc->undiscard_blks += dc->len; in __punch_discard_cmd()
1433 __relocate_discard_cmd(dcc, dc); in __punch_discard_cmd()
1442 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __update_discard_tree_range() local
1452 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __update_discard_tree_range()
1494 dcc->undiscard_blks += di.len; in __update_discard_tree_range()
1495 __relocate_discard_cmd(dcc, prev_dc); in __update_discard_tree_range()
1508 dcc->undiscard_blks += di.len; in __update_discard_tree_range()
1509 __relocate_discard_cmd(dcc, next_dc); in __update_discard_tree_range()
1554 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd_orderly() local
1559 unsigned int pos = dcc->next_pos; in __issue_discard_cmd_orderly()
1565 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd_orderly()
1567 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __issue_discard_cmd_orderly()
1589 dcc->next_pos = dc->lstart + dc->len; in __issue_discard_cmd_orderly()
1604 dcc->next_pos = 0; in __issue_discard_cmd_orderly()
1606 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_orderly()
1619 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd() local
1631 if (unlikely(dcc->rbtree_check)) { in __issue_discard_cmd()
1632 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd()
1633 f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi, &dcc->root, false)); in __issue_discard_cmd()
1634 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd()
1655 pend_list = &dcc->pend_list[i]; in __issue_discard_cmd()
1657 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd()
1660 if (unlikely(dcc->rbtree_check)) in __issue_discard_cmd()
1662 &dcc->root, false)); in __issue_discard_cmd()
1681 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd()
1704 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __drop_discard_cmd() local
1710 mutex_lock(&dcc->cmd_lock); in __drop_discard_cmd()
1712 pend_list = &dcc->pend_list[i]; in __drop_discard_cmd()
1719 mutex_unlock(&dcc->cmd_lock); in __drop_discard_cmd()
1732 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __wait_one_discard_bio() local
1736 mutex_lock(&dcc->cmd_lock); in __wait_one_discard_bio()
1744 mutex_unlock(&dcc->cmd_lock); in __wait_one_discard_bio()
1753 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __wait_discard_cmd_range() local
1755 &(dcc->fstrim_list) : &(dcc->wait_list); in __wait_discard_cmd_range()
1763 mutex_lock(&dcc->cmd_lock); in __wait_discard_cmd_range()
1780 mutex_unlock(&dcc->cmd_lock); in __wait_discard_cmd_range()
1811 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_wait_discard_bio() local
1815 mutex_lock(&dcc->cmd_lock); in f2fs_wait_discard_bio()
1816 dc = (struct discard_cmd *)f2fs_lookup_rb_tree(&dcc->root, in f2fs_wait_discard_bio()
1826 mutex_unlock(&dcc->cmd_lock); in f2fs_wait_discard_bio()
1834 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_stop_discard_thread() local
1836 if (dcc && dcc->f2fs_issue_discard) { in f2fs_stop_discard_thread()
1837 struct task_struct *discard_thread = dcc->f2fs_issue_discard; in f2fs_stop_discard_thread()
1839 dcc->f2fs_issue_discard = NULL; in f2fs_stop_discard_thread()
1847 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_issue_discard_timeout() local
1858 f2fs_bug_on(sbi, atomic_read(&dcc->discard_cmd_cnt)); in f2fs_issue_discard_timeout()
1864 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in select_discard_type() local
1872 fs_available_blocks - dcc->undiscard_blks >= in select_discard_type()
1876 fs_available_blocks - dcc->undiscard_blks < in select_discard_type()
1888 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in issue_discard_thread() local
1889 wait_queue_head_t *q = &dcc->discard_wait_queue; in issue_discard_thread()
1902 dcc->discard_wake, in issue_discard_thread()
1905 if (dcc->discard_wake) in issue_discard_thread()
1906 dcc->discard_wake = 0; in issue_discard_thread()
1909 if (atomic_read(&dcc->queued_discard)) in issue_discard_thread()
2129 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in f2fs_clear_prefree_segments() local
2130 struct list_head *head = &dcc->entry_list; in f2fs_clear_prefree_segments()
2220 dcc->nr_discards -= total_len; in f2fs_clear_prefree_segments()
2229 struct discard_cmd_control *dcc; in create_discard_cmd_control() local
2233 dcc = SM_I(sbi)->dcc_info; in create_discard_cmd_control()
2237 dcc = f2fs_kzalloc(sbi, sizeof(struct discard_cmd_control), GFP_KERNEL); in create_discard_cmd_control()
2238 if (!dcc) in create_discard_cmd_control()
2241 dcc->discard_granularity = DISCARD_GRAN_BG; in create_discard_cmd_control()
2242 INIT_LIST_HEAD(&dcc->entry_list); in create_discard_cmd_control()
2244 INIT_LIST_HEAD(&dcc->pend_list[i]); in create_discard_cmd_control()
2245 INIT_LIST_HEAD(&dcc->wait_list); in create_discard_cmd_control()
2246 INIT_LIST_HEAD(&dcc->fstrim_list); in create_discard_cmd_control()
2247 mutex_init(&dcc->cmd_lock); in create_discard_cmd_control()
2248 atomic_set(&dcc->issued_discard, 0); in create_discard_cmd_control()
2249 atomic_set(&dcc->queued_discard, 0); in create_discard_cmd_control()
2250 atomic_set(&dcc->discard_cmd_cnt, 0); in create_discard_cmd_control()
2251 dcc->nr_discards = 0; in create_discard_cmd_control()
2252 dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg; in create_discard_cmd_control()
2253 dcc->undiscard_blks = 0; in create_discard_cmd_control()
2254 dcc->next_pos = 0; in create_discard_cmd_control()
2255 dcc->root = RB_ROOT_CACHED; in create_discard_cmd_control()
2256 dcc->rbtree_check = false; in create_discard_cmd_control()
2258 init_waitqueue_head(&dcc->discard_wait_queue); in create_discard_cmd_control()
2259 SM_I(sbi)->dcc_info = dcc; in create_discard_cmd_control()
2261 dcc->f2fs_issue_discard = kthread_run(issue_discard_thread, sbi, in create_discard_cmd_control()
2263 if (IS_ERR(dcc->f2fs_issue_discard)) { in create_discard_cmd_control()
2264 err = PTR_ERR(dcc->f2fs_issue_discard); in create_discard_cmd_control()
2265 kfree(dcc); in create_discard_cmd_control()
2275 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in destroy_discard_cmd_control() local
2277 if (!dcc) in destroy_discard_cmd_control()
2286 if (unlikely(atomic_read(&dcc->discard_cmd_cnt))) in destroy_discard_cmd_control()
2289 kfree(dcc); in destroy_discard_cmd_control()
3155 struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; in __issue_discard_cmd_range() local
3166 if (dcc->rbtree_check) { in __issue_discard_cmd_range()
3167 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3168 f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi, &dcc->root, false)); in __issue_discard_cmd_range()
3169 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3175 mutex_lock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3176 if (unlikely(dcc->rbtree_check)) in __issue_discard_cmd_range()
3178 &dcc->root, false)); in __issue_discard_cmd_range()
3180 dc = (struct discard_cmd *)f2fs_lookup_rb_tree_ret(&dcc->root, in __issue_discard_cmd_range()
3198 list_move_tail(&dc->list, &dcc->fstrim_list); in __issue_discard_cmd_range()
3211 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_range()
3227 mutex_unlock(&dcc->cmd_lock); in __issue_discard_cmd_range()