summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/libxfs/xfs_attr.c61
1 files changed, 7 insertions, 54 deletions
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index b576f46d1d75..2daf3084f3e3 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -693,34 +693,15 @@ xfs_attr_leaf_addname(
/*
* If the result is small enough, shrink it all into the inode.
*/
- if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) {
+ forkoff = xfs_attr_shortform_allfit(bp, dp);
+ if (forkoff)
error = xfs_attr3_leaf_to_shortform(bp, args, forkoff);
/* bp is gone due to xfs_da_shrink_inode */
- if (error)
- return error;
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
- }
-
- /*
- * Commit the remove and start the next trans in series.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
-
} else if (args->rmtblkno > 0) {
/*
* Added a "remote" value, just clear the incomplete flag.
*/
error = xfs_attr3_leaf_clearflag(args);
- if (error)
- return error;
-
- /*
- * Commit the flag value change and start the next trans in
- * series.
- */
- error = xfs_trans_roll_inode(&args->trans, args->dp);
}
return error;
}
@@ -780,15 +761,11 @@ xfs_attr_leaf_removename(
/*
* If the result is small enough, shrink it all into the inode.
*/
- if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) {
- error = xfs_attr3_leaf_to_shortform(bp, args, forkoff);
+ forkoff = xfs_attr_shortform_allfit(bp, dp);
+ if (forkoff)
+ return xfs_attr3_leaf_to_shortform(bp, args, forkoff);
/* bp is gone due to xfs_da_shrink_inode */
- if (error)
- return error;
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
- }
+
return 0;
}
@@ -1064,18 +1041,8 @@ restart:
error = xfs_da3_join(state);
if (error)
goto out;
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
}
- /*
- * Commit and start the next trans in the chain.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- goto out;
-
} else if (args->rmtblkno > 0) {
/*
* Added a "remote" value, just clear the incomplete flag.
@@ -1083,14 +1050,6 @@ restart:
error = xfs_attr3_leaf_clearflag(args);
if (error)
goto out;
-
- /*
- * Commit the flag value change and start the next trans in
- * series.
- */
- error = xfs_trans_roll_inode(&args->trans, args->dp);
- if (error)
- goto out;
}
retval = error = 0;
@@ -1129,16 +1088,10 @@ xfs_attr_node_shrink(
if (forkoff) {
error = xfs_attr3_leaf_to_shortform(bp, args, forkoff);
/* bp is gone due to xfs_da_shrink_inode */
- if (error)
- return error;
-
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
} else
xfs_trans_brelse(args->trans, bp);
- return 0;
+ return error;
}
/*