Lines Matching refs:dfc
973 struct xfs_defer_capture *dfc;
985 dfc = kzalloc(sizeof(*dfc), GFP_KERNEL | __GFP_NOFAIL);
986 INIT_LIST_HEAD(&dfc->dfc_list);
987 INIT_LIST_HEAD(&dfc->dfc_dfops);
990 list_splice_init(&tp->t_dfops, &dfc->dfc_dfops);
991 dfc->dfc_tpflags = tp->t_flags & XFS_TRANS_LOWMODE;
995 dfc->dfc_blkres = tp->t_blk_res - tp->t_blk_res_used;
996 dfc->dfc_rtxres = tp->t_rtx_res - tp->t_rtx_res_used;
999 dfc->dfc_logres = tp->t_log_res;
1001 error = xfs_defer_save_resources(&dfc->dfc_held, tp);
1016 for (i = 0; i < dfc->dfc_held.dr_inos; i++) {
1017 xfs_assert_ilocked(dfc->dfc_held.dr_ip[i], XFS_ILOCK_EXCL);
1018 ihold(VFS_I(dfc->dfc_held.dr_ip[i]));
1021 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
1022 xfs_buf_hold(dfc->dfc_held.dr_bp[i]);
1024 return dfc;
1031 struct xfs_defer_capture *dfc)
1035 xfs_defer_pending_abort_list(mp, &dfc->dfc_dfops);
1036 xfs_defer_cancel_list(mp, &dfc->dfc_dfops);
1038 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
1039 xfs_buf_relse(dfc->dfc_held.dr_bp[i]);
1041 for (i = 0; i < dfc->dfc_held.dr_inos; i++)
1042 xfs_irele(dfc->dfc_held.dr_ip[i]);
1044 kfree(dfc);
1061 struct xfs_defer_capture *dfc;
1065 dfc = xfs_defer_ops_capture(tp);
1066 if (IS_ERR(dfc)) {
1068 return PTR_ERR(dfc);
1070 if (!dfc)
1076 xfs_defer_ops_capture_abort(mp, dfc);
1080 list_add_tail(&dfc->dfc_list, capture_list);
1092 struct xfs_defer_capture *dfc,
1102 if (dfc->dfc_held.dr_inos > 2) {
1103 xfs_sort_inodes(dfc->dfc_held.dr_ip, dfc->dfc_held.dr_inos);
1104 xfs_lock_inodes(dfc->dfc_held.dr_ip, dfc->dfc_held.dr_inos,
1106 } else if (dfc->dfc_held.dr_inos == 2)
1107 xfs_lock_two_inodes(dfc->dfc_held.dr_ip[0], XFS_ILOCK_EXCL,
1108 dfc->dfc_held.dr_ip[1], XFS_ILOCK_EXCL);
1109 else if (dfc->dfc_held.dr_inos == 1)
1110 xfs_ilock(dfc->dfc_held.dr_ip[0], XFS_ILOCK_EXCL);
1112 for (i = 0; i < dfc->dfc_held.dr_bufs; i++)
1113 xfs_buf_lock(dfc->dfc_held.dr_bp[i]);
1116 xfs_defer_restore_resources(tp, &dfc->dfc_held);
1117 memcpy(dres, &dfc->dfc_held, sizeof(struct xfs_defer_resources));
1121 list_splice_init(&dfc->dfc_dfops, &tp->t_dfops);
1122 tp->t_flags |= dfc->dfc_tpflags;
1124 kfree(dfc);