浏览代码

xfs: rename xfs_trans ->t_agfl_dfops to ->t_dfops

The ->t_agfl_dfops field is currently used to defer agfl block frees
from associated transaction contexts. While all known problematic
contexts have already been updated to use ->t_agfl_dfops, the
broader goal is defer agfl frees from all callers that already use a
deferred operations structure. Further, the transaction field
facilitates a good amount of code clean up where the transaction and
dfops have historically been passed down through the stack
separately.

Rename the field to something more generic to prepare to use it as
such throughout XFS. This patch does not change behavior.
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Brian Foster 7 年之前
父节点
当前提交
6aa6718439
共有 6 个文件被更改,包括 16 次插入16 次删除
  1. 2 2
      fs/xfs/libxfs/xfs_alloc.c
  2. 4 4
      fs/xfs/libxfs/xfs_defer.c
  3. 5 5
      fs/xfs/xfs_inode.c
  4. 1 1
      fs/xfs/xfs_symlink.c
  5. 3 3
      fs/xfs/xfs_trans.c
  6. 1 1
      fs/xfs/xfs_trans.h

+ 2 - 2
fs/xfs/libxfs/xfs_alloc.c

@@ -2323,8 +2323,8 @@ xfs_alloc_fix_freelist(
 			goto out_agbp_relse;
 			goto out_agbp_relse;
 
 
 		/* defer agfl frees if dfops is provided */
 		/* defer agfl frees if dfops is provided */
-		if (tp->t_agfl_dfops) {
-			xfs_defer_agfl_block(mp, tp->t_agfl_dfops, args->agno,
+		if (tp->t_dfops) {
+			xfs_defer_agfl_block(mp, tp->t_dfops, args->agno,
 					     bno, &targs.oinfo);
 					     bno, &targs.oinfo);
 		} else {
 		} else {
 			error = xfs_free_agfl_block(tp, args->agno, bno, agbp,
 			error = xfs_free_agfl_block(tp, args->agno, bno, agbp,

+ 4 - 4
fs/xfs/libxfs/xfs_defer.c

@@ -350,9 +350,9 @@ xfs_defer_finish(
 	 * Note that this code can go away once all dfops users attach to the
 	 * Note that this code can go away once all dfops users attach to the
 	 * associated tp.
 	 * associated tp.
 	 */
 	 */
-	ASSERT(!(*tp)->t_agfl_dfops || ((*tp)->t_agfl_dfops == dop));
-	orig_dop = (*tp)->t_agfl_dfops;
-	(*tp)->t_agfl_dfops = dop;
+	ASSERT(!(*tp)->t_dfops || ((*tp)->t_dfops == dop));
+	orig_dop = (*tp)->t_dfops;
+	(*tp)->t_dfops = dop;
 
 
 	/* Until we run out of pending work to finish... */
 	/* Until we run out of pending work to finish... */
 	while (xfs_defer_has_unfinished_work(dop)) {
 	while (xfs_defer_has_unfinished_work(dop)) {
@@ -425,7 +425,7 @@ xfs_defer_finish(
 	}
 	}
 
 
 out:
 out:
-	(*tp)->t_agfl_dfops = orig_dop;
+	(*tp)->t_dfops = orig_dop;
 	if (error)
 	if (error)
 		trace_xfs_defer_finish_error((*tp)->t_mountp, dop, error);
 		trace_xfs_defer_finish_error((*tp)->t_mountp, dop, error);
 	else
 	else

+ 5 - 5
fs/xfs/xfs_inode.c

@@ -1196,7 +1196,7 @@ xfs_create(
 	unlock_dp_on_error = true;
 	unlock_dp_on_error = true;
 
 
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 
 
 	/*
 	/*
 	 * Reserve disk quota and the inode.
 	 * Reserve disk quota and the inode.
@@ -1452,7 +1452,7 @@ xfs_link(
 	}
 	}
 
 
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 
 
 	/*
 	/*
 	 * Handle initial link state of O_TMPFILE inode
 	 * Handle initial link state of O_TMPFILE inode
@@ -1813,7 +1813,7 @@ xfs_inactive_ifree(
 	xfs_trans_ijoin(tp, ip, 0);
 	xfs_trans_ijoin(tp, ip, 0);
 
 
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 	error = xfs_ifree(tp, ip, &dfops);
 	error = xfs_ifree(tp, ip, &dfops);
 	if (error) {
 	if (error) {
 		/*
 		/*
@@ -2659,7 +2659,7 @@ xfs_remove(
 		goto out_trans_cancel;
 		goto out_trans_cancel;
 
 
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 	error = xfs_dir_removename(tp, dp, name, ip->i_ino,
 	error = xfs_dir_removename(tp, dp, name, ip->i_ino,
 					&first_block, &dfops, resblks);
 					&first_block, &dfops, resblks);
 	if (error) {
 	if (error) {
@@ -3027,7 +3027,7 @@ xfs_rename(
 	}
 	}
 
 
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 
 
 	/* RENAME_EXCHANGE is unique from here on. */
 	/* RENAME_EXCHANGE is unique from here on. */
 	if (flags & RENAME_EXCHANGE)
 	if (flags & RENAME_EXCHANGE)

+ 1 - 1
fs/xfs/xfs_symlink.c

@@ -247,7 +247,7 @@ xfs_symlink(
 	 * bmapi or the directory create code.
 	 * bmapi or the directory create code.
 	 */
 	 */
 	xfs_defer_init(&dfops, &first_block);
 	xfs_defer_init(&dfops, &first_block);
-	tp->t_agfl_dfops = &dfops;
+	tp->t_dfops = &dfops;
 
 
 	/*
 	/*
 	 * Allocate an inode for the symlink.
 	 * Allocate an inode for the symlink.

+ 3 - 3
fs/xfs/xfs_trans.c

@@ -118,7 +118,7 @@ xfs_trans_dup(
 	ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
 	ntp->t_rtx_res = tp->t_rtx_res - tp->t_rtx_res_used;
 	tp->t_rtx_res = tp->t_rtx_res_used;
 	tp->t_rtx_res = tp->t_rtx_res_used;
 	ntp->t_pflags = tp->t_pflags;
 	ntp->t_pflags = tp->t_pflags;
-	ntp->t_agfl_dfops = tp->t_agfl_dfops;
+	ntp->t_dfops = tp->t_dfops;
 
 
 	xfs_trans_dup_dqinfo(tp, ntp);
 	xfs_trans_dup_dqinfo(tp, ntp);
 
 
@@ -914,8 +914,8 @@ __xfs_trans_commit(
 	int			error = 0;
 	int			error = 0;
 	int			sync = tp->t_flags & XFS_TRANS_SYNC;
 	int			sync = tp->t_flags & XFS_TRANS_SYNC;
 
 
-	ASSERT(!tp->t_agfl_dfops ||
-	       !xfs_defer_has_unfinished_work(tp->t_agfl_dfops) || regrant);
+	ASSERT(!tp->t_dfops ||
+	       !xfs_defer_has_unfinished_work(tp->t_dfops) || regrant);
 
 
 	trace_xfs_trans_commit(tp, _RET_IP_);
 	trace_xfs_trans_commit(tp, _RET_IP_);
 
 

+ 1 - 1
fs/xfs/xfs_trans.h

@@ -105,7 +105,7 @@ typedef struct xfs_trans {
 	struct xlog_ticket	*t_ticket;	/* log mgr ticket */
 	struct xlog_ticket	*t_ticket;	/* log mgr ticket */
 	struct xfs_mount	*t_mountp;	/* ptr to fs mount struct */
 	struct xfs_mount	*t_mountp;	/* ptr to fs mount struct */
 	struct xfs_dquot_acct   *t_dqinfo;	/* acctg info for dquots */
 	struct xfs_dquot_acct   *t_dqinfo;	/* acctg info for dquots */
-	struct xfs_defer_ops	*t_agfl_dfops;	/* optional agfl fixup dfops */
+	struct xfs_defer_ops	*t_dfops;	/* dfops reference */
 	unsigned int		t_flags;	/* misc flags */
 	unsigned int		t_flags;	/* misc flags */
 	int64_t			t_icount_delta;	/* superblock icount change */
 	int64_t			t_icount_delta;	/* superblock icount change */
 	int64_t			t_ifree_delta;	/* superblock ifree change */
 	int64_t			t_ifree_delta;	/* superblock ifree change */