Lines Matching refs:dfc

710 	struct xfs_defer_capture	*dfc;
722 dfc = kmem_zalloc(sizeof(*dfc), KM_NOFS);
723 INIT_LIST_HEAD(&dfc->dfc_list);
724 INIT_LIST_HEAD(&dfc->dfc_dfops);
727 list_splice_init(&tp->t_dfops, &dfc->dfc_dfops);
728 dfc->dfc_tpflags = tp->t_flags & XFS_TRANS_LOWMODE;
732 dfc->dfc_blkres = tp->t_blk_res - tp->t_blk_res_used;
733 dfc->dfc_rtxres = tp->t_rtx_res - tp->t_rtx_res_used;
736 dfc->dfc_logres = tp->t_log_res;
738 error = xfs_defer_save_resources(&dfc->dfc_held, tp);
753 for (i = 0; i < dfc->dfc_held.dr_inos; i++) {
754 ASSERT(xfs_isilocked(dfc->dfc_held.dr_ip[i], XFS_ILOCK_EXCL));
755 ihold(VFS_I(dfc->dfc_held.dr_ip[i]));
758 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
759 xfs_buf_hold(dfc->dfc_held.dr_bp[i]);
761 return dfc;
768 struct xfs_defer_capture *dfc)
772 xfs_defer_pending_abort(mp, &dfc->dfc_dfops);
773 xfs_defer_cancel_list(mp, &dfc->dfc_dfops);
775 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
776 xfs_buf_relse(dfc->dfc_held.dr_bp[i]);
778 for (i = 0; i < dfc->dfc_held.dr_inos; i++)
779 xfs_irele(dfc->dfc_held.dr_ip[i]);
781 kmem_free(dfc);
798 struct xfs_defer_capture *dfc;
802 dfc = xfs_defer_ops_capture(tp);
803 if (IS_ERR(dfc)) {
805 return PTR_ERR(dfc);
807 if (!dfc)
813 xfs_defer_ops_capture_abort(mp, dfc);
817 list_add_tail(&dfc->dfc_list, capture_list);
829 struct xfs_defer_capture *dfc,
839 if (dfc->dfc_held.dr_inos == 2)
840 xfs_lock_two_inodes(dfc->dfc_held.dr_ip[0], XFS_ILOCK_EXCL,
841 dfc->dfc_held.dr_ip[1], XFS_ILOCK_EXCL);
842 else if (dfc->dfc_held.dr_inos == 1)
843 xfs_ilock(dfc->dfc_held.dr_ip[0], XFS_ILOCK_EXCL);
845 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
846 xfs_buf_lock(dfc->dfc_held.dr_bp[i]);
849 xfs_defer_restore_resources(tp, &dfc->dfc_held);
850 memcpy(dres, &dfc->dfc_held, sizeof(struct xfs_defer_resources));
854 list_splice_init(&dfc->dfc_dfops, &tp->t_dfops);
855 tp->t_flags |= dfc->dfc_tpflags;
857 kmem_free(dfc);