Lines Matching defs:dfp

242 	struct xfs_defer_pending	*dfp)
247 if (!dfp->dfp_intent)
258 lip = dfp->dfp_ops->create_done(tp, dfp->dfp_intent, dfp->dfp_count);
265 dfp->dfp_done = lip;
276 struct xfs_defer_pending *dfp,
281 if (dfp->dfp_intent)
284 lip = dfp->dfp_ops->create_intent(tp, &dfp->dfp_work, dfp->dfp_count,
294 dfp->dfp_intent = lip;
310 struct xfs_defer_pending *dfp;
313 list_for_each_entry(dfp, &tp->t_dfops, dfp_list) {
316 trace_xfs_defer_create_intent(tp->t_mountp, dfp);
317 ret2 = xfs_defer_create_intent(tp, dfp, true);
328 struct xfs_defer_pending *dfp)
330 trace_xfs_defer_pending_abort(mp, dfp);
332 if (dfp->dfp_intent && !dfp->dfp_done) {
333 dfp->dfp_ops->abort_intent(dfp->dfp_intent);
334 dfp->dfp_intent = NULL;
341 struct xfs_defer_pending *dfp)
346 trace_xfs_defer_cancel_list(mp, dfp);
348 list_del(&dfp->dfp_list);
349 list_for_each_safe(pwi, n, &dfp->dfp_work) {
351 dfp->dfp_count--;
352 trace_xfs_defer_cancel_item(mp, dfp, pwi);
353 dfp->dfp_ops->cancel_item(pwi);
355 ASSERT(dfp->dfp_count == 0);
356 kmem_cache_free(xfs_defer_pending_cache, dfp);
364 struct xfs_defer_pending *dfp;
367 list_for_each_entry(dfp, dop_list, dfp_list)
368 xfs_defer_pending_abort(mp, dfp);
494 struct xfs_defer_pending *dfp;
501 list_for_each_entry_safe(dfp, pli, dop_list, dfp_list)
502 xfs_defer_pending_cancel_work(mp, dfp);
508 struct xfs_defer_pending *dfp)
512 xfs_defer_create_done(tp, dfp);
514 lip = dfp->dfp_ops->relog_intent(tp, dfp->dfp_intent, dfp->dfp_done);
519 dfp->dfp_done = NULL;
520 dfp->dfp_intent = lip;
534 struct xfs_defer_pending *dfp;
540 list_for_each_entry(dfp, dfops, dfp_list) {
548 if (dfp->dfp_intent == NULL ||
549 xfs_log_item_in_current_chkpt(dfp->dfp_intent))
562 if (XFS_LSN_CMP(dfp->dfp_intent->li_lsn, threshold_lsn) >= 0)
565 trace_xfs_defer_relog_intent((*tpp)->t_mountp, dfp);
568 xfs_defer_relog_intent(*tpp, dfp);
579 struct xfs_defer_pending *dfp)
581 const struct xfs_defer_op_type *ops = dfp->dfp_ops;
586 trace_xfs_defer_pending_finish(tp->t_mountp, dfp);
588 xfs_defer_create_done(tp, dfp);
589 list_for_each_safe(li, n, &dfp->dfp_work) {
591 dfp->dfp_count--;
592 trace_xfs_defer_finish_item(tp->t_mountp, dfp, li);
593 error = ops->finish_item(tp, dfp->dfp_done, li, &state);
603 list_add(li, &dfp->dfp_work);
604 dfp->dfp_count++;
605 dfp->dfp_done = NULL;
606 dfp->dfp_intent = NULL;
607 ret = xfs_defer_create_intent(tp, dfp, false);
616 /* Done with the dfp, free it. */
617 list_del(&dfp->dfp_list);
618 kmem_cache_free(xfs_defer_pending_cache, dfp);
631 struct xfs_defer_pending *dfp;
634 list_for_each_entry_safe(dfp, pli, &tp->t_dfops, dfp_list) {
635 if (!(dfp->dfp_flags & XFS_DEFER_PAUSED))
638 list_move_tail(&dfp->dfp_list, paused_list);
639 trace_xfs_defer_isolate_paused(tp->t_mountp, dfp);
655 struct xfs_defer_pending *dfp = NULL;
685 if (has_intents || dfp) {
701 dfp = list_first_entry_or_null(&dop_pending,
703 if (!dfp)
705 error = xfs_defer_finish_one(*tp, dfp);
731 struct xfs_defer_pending *dfp;
753 list_for_each_entry(dfp, &(*tp)->t_dfops, dfp_list)
754 ASSERT(dfp->dfp_flags & XFS_DEFER_PAUSED);
780 struct xfs_defer_pending *dfp = NULL;
786 dfp = list_last_entry(&tp->t_dfops, struct xfs_defer_pending,
790 if (dfp->dfp_ops != ops)
792 return dfp;
801 struct xfs_defer_pending *dfp,
805 if (dfp->dfp_intent)
809 if (dfp->dfp_flags & XFS_DEFER_PAUSED)
813 if (ops->max_items && dfp->dfp_count >= ops->max_items)
825 struct xfs_defer_pending *dfp;
827 dfp = kmem_cache_zalloc(xfs_defer_pending_cache,
829 dfp->dfp_ops = ops;
830 INIT_LIST_HEAD(&dfp->dfp_work);
831 list_add_tail(&dfp->dfp_list, dfops);
833 return dfp;
843 struct xfs_defer_pending *dfp = NULL;
847 dfp = xfs_defer_find_last(tp, ops);
848 if (!dfp || !xfs_defer_can_append(dfp, ops))
849 dfp = xfs_defer_alloc(&tp->t_dfops, ops);
851 xfs_defer_add_item(dfp, li);
852 trace_xfs_defer_add_item(tp->t_mountp, dfp, li);
853 return dfp;
864 struct xfs_defer_pending *dfp;
869 dfp = xfs_defer_find_last(tp, &xfs_barrier_defer_type);
870 if (dfp)
875 trace_xfs_defer_add_item(tp->t_mountp, dfp, NULL);
888 struct xfs_defer_pending *dfp = xfs_defer_alloc(r_dfops, ops);
890 dfp->dfp_intent = lip;
894 * Cancel a deferred work item created to recover a log intent item. @dfp
900 struct xfs_defer_pending *dfp)
902 xfs_defer_pending_abort(mp, dfp);
903 xfs_defer_pending_cancel_work(mp, dfp);
910 struct xfs_defer_pending *dfp,
913 const struct xfs_defer_op_type *ops = dfp->dfp_ops;
916 /* dfp is freed by recover_work and must not be accessed afterwards */
917 error = ops->recover_work(dfp, capture_list);
1205 struct xfs_defer_pending *dfp)
1207 ASSERT(!(dfp->dfp_flags & XFS_DEFER_PAUSED));
1209 dfp->dfp_flags |= XFS_DEFER_PAUSED;
1211 trace_xfs_defer_item_pause(tp->t_mountp, dfp);
1221 struct xfs_defer_pending *dfp)
1223 ASSERT(dfp->dfp_flags & XFS_DEFER_PAUSED);
1225 dfp->dfp_flags &= ~XFS_DEFER_PAUSED;
1227 trace_xfs_defer_item_unpause(tp->t_mountp, dfp);