Lines Matching full:fcc

580 	struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info;  in issue_flush_thread()  local
581 wait_queue_head_t *q = &fcc->flush_wait_queue; in issue_flush_thread()
586 if (!llist_empty(&fcc->issue_list)) { in issue_flush_thread()
590 fcc->dispatch_list = llist_del_all(&fcc->issue_list); in issue_flush_thread()
591 fcc->dispatch_list = llist_reverse_order(fcc->dispatch_list); in issue_flush_thread()
593 cmd = llist_entry(fcc->dispatch_list, struct flush_cmd, llnode); in issue_flush_thread()
596 atomic_inc(&fcc->issued_flush); in issue_flush_thread()
599 fcc->dispatch_list, llnode) { in issue_flush_thread()
603 fcc->dispatch_list = NULL; in issue_flush_thread()
607 kthread_should_stop() || !llist_empty(&fcc->issue_list)); in issue_flush_thread()
613 struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; in f2fs_issue_flush() local
621 atomic_inc(&fcc->queued_flush); in f2fs_issue_flush()
623 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
624 atomic_inc(&fcc->issued_flush); in f2fs_issue_flush()
628 if (atomic_inc_return(&fcc->queued_flush) == 1 || in f2fs_issue_flush()
631 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
633 atomic_inc(&fcc->issued_flush); in f2fs_issue_flush()
640 llist_add(&cmd.llnode, &fcc->issue_list); in f2fs_issue_flush()
649 if (waitqueue_active(&fcc->flush_wait_queue)) in f2fs_issue_flush()
650 wake_up(&fcc->flush_wait_queue); in f2fs_issue_flush()
652 if (fcc->f2fs_issue_flush) { in f2fs_issue_flush()
654 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
658 list = llist_del_all(&fcc->issue_list); in f2fs_issue_flush()
661 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
670 atomic_dec(&fcc->queued_flush); in f2fs_issue_flush()
685 struct flush_cmd_control *fcc; in f2fs_create_flush_cmd_control() local
688 fcc = SM_I(sbi)->fcc_info; in f2fs_create_flush_cmd_control()
689 if (fcc->f2fs_issue_flush) in f2fs_create_flush_cmd_control()
694 fcc = f2fs_kzalloc(sbi, sizeof(struct flush_cmd_control), GFP_KERNEL); in f2fs_create_flush_cmd_control()
695 if (!fcc) in f2fs_create_flush_cmd_control()
697 atomic_set(&fcc->issued_flush, 0); in f2fs_create_flush_cmd_control()
698 atomic_set(&fcc->queued_flush, 0); in f2fs_create_flush_cmd_control()
699 init_waitqueue_head(&fcc->flush_wait_queue); in f2fs_create_flush_cmd_control()
700 init_llist_head(&fcc->issue_list); in f2fs_create_flush_cmd_control()
701 SM_I(sbi)->fcc_info = fcc; in f2fs_create_flush_cmd_control()
706 fcc->f2fs_issue_flush = kthread_run(issue_flush_thread, sbi, in f2fs_create_flush_cmd_control()
708 if (IS_ERR(fcc->f2fs_issue_flush)) { in f2fs_create_flush_cmd_control()
709 int err = PTR_ERR(fcc->f2fs_issue_flush); in f2fs_create_flush_cmd_control()
711 fcc->f2fs_issue_flush = NULL; in f2fs_create_flush_cmd_control()
720 struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; in f2fs_destroy_flush_cmd_control() local
722 if (fcc && fcc->f2fs_issue_flush) { in f2fs_destroy_flush_cmd_control()
723 struct task_struct *flush_thread = fcc->f2fs_issue_flush; in f2fs_destroy_flush_cmd_control()
725 fcc->f2fs_issue_flush = NULL; in f2fs_destroy_flush_cmd_control()
729 kfree(fcc); in f2fs_destroy_flush_cmd_control()