Lines Matching refs:cil

282 	struct xfs_cil		*cil = log->l_cilp;  in xlog_cil_insert_items()  local
283 struct xfs_cil_ctx *ctx = cil->xc_ctx; in xlog_cil_insert_items()
302 spin_lock(&cil->xc_cil_lock); in xlog_cil_insert_items()
310 list_move_tail(&lip->li_cil, &cil->xc_cil); in xlog_cil_insert_items()
350 spin_unlock(&cil->xc_cil_lock); in xlog_cil_insert_items()
377 struct xfs_mount *mp = ctx->cil->xc_log->l_mp; in xlog_cil_committed()
379 xfs_trans_committed_bulk(ctx->cil->xc_log->l_ailp, ctx->lv_chain, in xlog_cil_committed()
392 spin_lock(&ctx->cil->xc_push_lock); in xlog_cil_committed()
394 wake_up_all(&ctx->cil->xc_commit_wait); in xlog_cil_committed()
396 spin_unlock(&ctx->cil->xc_push_lock); in xlog_cil_committed()
428 struct xfs_cil *cil = log->l_cilp; in xlog_cil_push() local
442 if (!cil) in xlog_cil_push()
448 down_write(&cil->xc_ctx_lock); in xlog_cil_push()
449 ctx = cil->xc_ctx; in xlog_cil_push()
451 spin_lock(&cil->xc_push_lock); in xlog_cil_push()
452 push_seq = cil->xc_push_seq; in xlog_cil_push()
460 if (list_empty(&cil->xc_cil)) { in xlog_cil_push()
461 cil->xc_push_seq = 0; in xlog_cil_push()
462 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
468 if (push_seq < cil->xc_ctx->sequence) { in xlog_cil_push()
469 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
497 list_add(&ctx->committing, &cil->xc_committing); in xlog_cil_push()
498 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
508 while (!list_empty(&cil->xc_cil)) { in xlog_cil_push()
511 item = list_first_entry(&cil->xc_cil, in xlog_cil_push()
532 new_ctx->cil = cil; in xlog_cil_push()
533 cil->xc_ctx = new_ctx; in xlog_cil_push()
560 spin_lock(&cil->xc_push_lock); in xlog_cil_push()
561 cil->xc_current_sequence = new_ctx->sequence; in xlog_cil_push()
562 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
563 up_write(&cil->xc_ctx_lock); in xlog_cil_push()
597 spin_lock(&cil->xc_push_lock); in xlog_cil_push()
598 list_for_each_entry(new_ctx, &cil->xc_committing, committing) { in xlog_cil_push()
605 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
620 xlog_wait(&cil->xc_commit_wait, &cil->xc_push_lock); in xlog_cil_push()
624 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
643 spin_lock(&cil->xc_push_lock); in xlog_cil_push()
645 wake_up_all(&cil->xc_commit_wait); in xlog_cil_push()
646 spin_unlock(&cil->xc_push_lock); in xlog_cil_push()
652 up_write(&cil->xc_ctx_lock); in xlog_cil_push()
668 struct xfs_cil *cil = container_of(work, struct xfs_cil, in xlog_cil_push_work() local
670 xlog_cil_push(cil->xc_log); in xlog_cil_push_work()
684 struct xfs_cil *cil = log->l_cilp; in xlog_cil_push_background() local
690 ASSERT(!list_empty(&cil->xc_cil)); in xlog_cil_push_background()
696 if (cil->xc_ctx->space_used < XLOG_CIL_SPACE_LIMIT(log)) in xlog_cil_push_background()
699 spin_lock(&cil->xc_push_lock); in xlog_cil_push_background()
700 if (cil->xc_push_seq < cil->xc_current_sequence) { in xlog_cil_push_background()
701 cil->xc_push_seq = cil->xc_current_sequence; in xlog_cil_push_background()
702 queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); in xlog_cil_push_background()
704 spin_unlock(&cil->xc_push_lock); in xlog_cil_push_background()
719 struct xfs_cil *cil = log->l_cilp; in xlog_cil_push_now() local
721 if (!cil) in xlog_cil_push_now()
724 ASSERT(push_seq && push_seq <= cil->xc_current_sequence); in xlog_cil_push_now()
727 flush_work(&cil->xc_push_work); in xlog_cil_push_now()
733 spin_lock(&cil->xc_push_lock); in xlog_cil_push_now()
734 if (list_empty(&cil->xc_cil) || push_seq <= cil->xc_push_seq) { in xlog_cil_push_now()
735 spin_unlock(&cil->xc_push_lock); in xlog_cil_push_now()
739 cil->xc_push_seq = push_seq; in xlog_cil_push_now()
740 queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); in xlog_cil_push_now()
741 spin_unlock(&cil->xc_push_lock); in xlog_cil_push_now()
748 struct xfs_cil *cil = log->l_cilp; in xlog_cil_empty() local
751 spin_lock(&cil->xc_push_lock); in xlog_cil_empty()
752 if (list_empty(&cil->xc_cil)) in xlog_cil_empty()
754 spin_unlock(&cil->xc_push_lock); in xlog_cil_empty()
779 struct xfs_cil *cil = log->l_cilp; in xfs_log_commit_cil() local
786 down_read(&cil->xc_ctx_lock); in xfs_log_commit_cil()
794 tp->t_commit_lsn = cil->xc_ctx->sequence; in xfs_log_commit_cil()
816 up_read(&cil->xc_ctx_lock); in xfs_log_commit_cil()
834 struct xfs_cil *cil = log->l_cilp; in xlog_cil_force_lsn() local
838 ASSERT(sequence <= cil->xc_current_sequence); in xlog_cil_force_lsn()
854 spin_lock(&cil->xc_push_lock); in xlog_cil_force_lsn()
855 list_for_each_entry(ctx, &cil->xc_committing, committing) { in xlog_cil_force_lsn()
870 xlog_wait(&cil->xc_commit_wait, &cil->xc_push_lock); in xlog_cil_force_lsn()
894 if (sequence == cil->xc_current_sequence && in xlog_cil_force_lsn()
895 !list_empty(&cil->xc_cil)) { in xlog_cil_force_lsn()
896 spin_unlock(&cil->xc_push_lock); in xlog_cil_force_lsn()
900 spin_unlock(&cil->xc_push_lock); in xlog_cil_force_lsn()
911 spin_unlock(&cil->xc_push_lock); in xlog_cil_force_lsn()
952 struct xfs_cil *cil; in xlog_cil_init() local
955 cil = kmem_zalloc(sizeof(*cil), KM_SLEEP|KM_MAYFAIL); in xlog_cil_init()
956 if (!cil) in xlog_cil_init()
961 kmem_free(cil); in xlog_cil_init()
965 INIT_WORK(&cil->xc_push_work, xlog_cil_push_work); in xlog_cil_init()
966 INIT_LIST_HEAD(&cil->xc_cil); in xlog_cil_init()
967 INIT_LIST_HEAD(&cil->xc_committing); in xlog_cil_init()
968 spin_lock_init(&cil->xc_cil_lock); in xlog_cil_init()
969 spin_lock_init(&cil->xc_push_lock); in xlog_cil_init()
970 init_rwsem(&cil->xc_ctx_lock); in xlog_cil_init()
971 init_waitqueue_head(&cil->xc_commit_wait); in xlog_cil_init()
976 ctx->cil = cil; in xlog_cil_init()
977 cil->xc_ctx = ctx; in xlog_cil_init()
978 cil->xc_current_sequence = ctx->sequence; in xlog_cil_init()
980 cil->xc_log = log; in xlog_cil_init()
981 log->l_cilp = cil; in xlog_cil_init()