Lines Matching refs:fcc
615 struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; in issue_flush_thread() local
616 wait_queue_head_t *q = &fcc->flush_wait_queue; in issue_flush_thread()
621 if (!llist_empty(&fcc->issue_list)) { in issue_flush_thread()
625 fcc->dispatch_list = llist_del_all(&fcc->issue_list); in issue_flush_thread()
626 fcc->dispatch_list = llist_reverse_order(fcc->dispatch_list); in issue_flush_thread()
628 cmd = llist_entry(fcc->dispatch_list, struct flush_cmd, llnode); in issue_flush_thread()
631 atomic_inc(&fcc->issued_flush); in issue_flush_thread()
634 fcc->dispatch_list, llnode) { in issue_flush_thread()
638 fcc->dispatch_list = NULL; in issue_flush_thread()
642 kthread_should_stop() || !llist_empty(&fcc->issue_list)); in issue_flush_thread()
648 struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; in f2fs_issue_flush() local
656 atomic_inc(&fcc->queued_flush); in f2fs_issue_flush()
658 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
659 atomic_inc(&fcc->issued_flush); in f2fs_issue_flush()
663 if (atomic_inc_return(&fcc->queued_flush) == 1 || in f2fs_issue_flush()
666 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
668 atomic_inc(&fcc->issued_flush); in f2fs_issue_flush()
675 llist_add(&cmd.llnode, &fcc->issue_list); in f2fs_issue_flush()
684 if (waitqueue_active(&fcc->flush_wait_queue)) in f2fs_issue_flush()
685 wake_up(&fcc->flush_wait_queue); in f2fs_issue_flush()
687 if (fcc->f2fs_issue_flush) { in f2fs_issue_flush()
689 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
693 list = llist_del_all(&fcc->issue_list); in f2fs_issue_flush()
696 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
705 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
720 struct flush_cmd_control *fcc; in f2fs_create_flush_cmd_control() local
724 fcc = SM_I(sbi)->fcc_info; in f2fs_create_flush_cmd_control()
725 if (fcc->f2fs_issue_flush) in f2fs_create_flush_cmd_control()
730 fcc = f2fs_kzalloc(sbi, sizeof(struct flush_cmd_control), GFP_KERNEL); in f2fs_create_flush_cmd_control()
731 if (!fcc) in f2fs_create_flush_cmd_control()
733 atomic_set(&fcc->issued_flush, 0); in f2fs_create_flush_cmd_control()
734 atomic_set(&fcc->queued_flush, 0); in f2fs_create_flush_cmd_control()
735 init_waitqueue_head(&fcc->flush_wait_queue); in f2fs_create_flush_cmd_control()
736 init_llist_head(&fcc->issue_list); in f2fs_create_flush_cmd_control()
737 SM_I(sbi)->fcc_info = fcc; in f2fs_create_flush_cmd_control()
742 fcc->f2fs_issue_flush = kthread_run(issue_flush_thread, sbi, in f2fs_create_flush_cmd_control()
744 if (IS_ERR(fcc->f2fs_issue_flush)) { in f2fs_create_flush_cmd_control()
745 err = PTR_ERR(fcc->f2fs_issue_flush); in f2fs_create_flush_cmd_control()
746 kfree(fcc); in f2fs_create_flush_cmd_control()
756 struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; in f2fs_destroy_flush_cmd_control() local
758 if (fcc && fcc->f2fs_issue_flush) { in f2fs_destroy_flush_cmd_control()
759 struct task_struct *flush_thread = fcc->f2fs_issue_flush; in f2fs_destroy_flush_cmd_control()
761 fcc->f2fs_issue_flush = NULL; in f2fs_destroy_flush_cmd_control()
765 kfree(fcc); in f2fs_destroy_flush_cmd_control()