@@ -51,16 +51,16 @@ STATIC int xfs_attr_shortform_addname(xfs_da_args_t *args);
* Internal routines when attribute list is one block.
*/
STATIC int xfs_attr_leaf_get(xfs_da_args_t *args);
-STATIC int xfs_attr_leaf_addname(xfs_da_args_t *args, bool roll_trans);
-STATIC int xfs_attr_leaf_removename(xfs_da_args_t *args, bool roll_trans);
+STATIC int xfs_attr_leaf_addname(xfs_da_args_t *args);
+STATIC int xfs_attr_leaf_removename(xfs_da_args_t *args);
STATIC int xfs_leaf_has_attr(xfs_da_args_t *args);
/*
* Internal routines when attribute list is more than one block.
*/
STATIC int xfs_attr_node_get(xfs_da_args_t *args);
-STATIC int xfs_attr_node_addname(xfs_da_args_t *args, bool roll_trans);
-STATIC int xfs_attr_node_removename(xfs_da_args_t *args, bool roll_trans);
+STATIC int xfs_attr_node_addname(xfs_da_args_t *args);
+STATIC int xfs_attr_node_removename(xfs_da_args_t *args);
STATIC int xfs_attr_node_hasname(xfs_da_args_t *args);
STATIC int xfs_attr_fillstate(xfs_da_state_t *state);
STATIC int xfs_attr_refillstate(xfs_da_state_t *state);
@@ -238,8 +238,7 @@ int
xfs_attr_set_args(
struct xfs_da_args *args,
struct xfs_buf **leaf_bp,
- xfs_attr_state_t *state,
- bool roll_trans)
+ xfs_attr_state_t *state)
{
struct xfs_inode *dp = args->dp;
int error = 0;
@@ -303,23 +302,6 @@ xfs_attr_set_args(
*/
xfs_trans_bhold(args->trans, *leaf_bp);
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
-
- /*
- * Commit the leaf transformation. We'll need another
- * (linked) transaction to add the new attribute to the
- * leaf.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- goto out;
- xfs_trans_bjoin(args->trans, *leaf_bp);
- *leaf_bp = NULL;
- }
-
*state = XFS_ATTR_STATE2;
return -EAGAIN;
state2:
@@ -328,9 +310,9 @@ xfs_attr_set_args(
}
if (xfs_bmap_one_block(dp, XFS_ATTR_FORK))
- error = xfs_attr_leaf_addname(args, roll_trans);
+ error = xfs_attr_leaf_addname(args);
else
- error = xfs_attr_node_addname(args, roll_trans);
+ error = xfs_attr_node_addname(args);
if (error)
goto out;
@@ -366,8 +348,7 @@ xfs_has_attr(
*/
int
xfs_attr_remove_args(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_inode *dp = args->dp;
int error;
@@ -378,9 +359,9 @@ xfs_attr_remove_args(
ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
error = xfs_attr_shortform_remove(args);
} else if (xfs_bmap_one_block(dp, XFS_ATTR_FORK)) {
- error = xfs_attr_leaf_removename(args, roll_trans);
+ error = xfs_attr_leaf_removename(args);
} else {
- error = xfs_attr_node_removename(args, roll_trans);
+ error = xfs_attr_node_removename(args);
}
return error;
@@ -718,8 +699,7 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
*/
STATIC int
xfs_attr_leaf_addname(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_inode *dp;
struct xfs_buf *bp;
@@ -785,39 +765,14 @@ xfs_attr_leaf_addname(
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
-
- /*
- * Commit the current trans (including the inode) and
- * start a new one.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- return error;
- }
-
/*
* Fob the whole rest of the problem off on the Btree code.
*/
- error = xfs_attr_node_addname(args, roll_trans);
+ error = xfs_attr_node_addname(args);
return error;
}
-
- if (roll_trans) {
- /*
- * Commit the transaction that added the attr name so that
- * later routines can manage their own transactions.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- return error;
- }
-
/*
* If there was an out-of-line value, allocate the blocks we
* identified for its storage and copy the value. This is done
@@ -825,7 +780,7 @@ xfs_attr_leaf_addname(
* maximum size of a transaction and/or hit a deadlock.
*/
if (args->rmtblkno > 0) {
- error = xfs_attr_rmtval_set(args, roll_trans);
+ error = xfs_attr_rmtval_set(args);
if (error)
return error;
}
@@ -841,7 +796,7 @@ xfs_attr_leaf_addname(
* In a separate transaction, set the incomplete flag on the
* "old" attr and clear the incomplete flag on the "new" attr.
*/
- error = xfs_attr3_leaf_flipflags(args, roll_trans);
+ error = xfs_attr3_leaf_flipflags(args);
if (error)
return error;
@@ -855,7 +810,7 @@ xfs_attr_leaf_addname(
args->rmtblkcnt = args->rmtblkcnt2;
args->rmtvaluelen = args->rmtvaluelen2;
if (args->rmtblkno) {
- error = xfs_attr_rmtval_remove(args, roll_trans);
+ error = xfs_attr_rmtval_remove(args);
if (error)
return error;
}
@@ -879,25 +834,13 @@ xfs_attr_leaf_addname(
/* bp is gone due to xfs_da_shrink_inode */
if (error)
goto out_defer_cancel;
-
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
- }
}
- /*
- * Commit the remove and start the next trans in series.
- */
- if (roll_trans)
- 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, roll_trans);
+ error = xfs_attr3_leaf_clearflag(args);
}
return error;
out_defer_cancel:
@@ -936,8 +879,7 @@ xfs_leaf_has_attr(
*/
STATIC int
xfs_attr_leaf_removename(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_inode *dp;
struct xfs_buf *bp;
@@ -970,11 +912,6 @@ xfs_attr_leaf_removename(
/* bp is gone due to xfs_da_shrink_inode */
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
- }
}
return 0;
out_defer_cancel:
@@ -1030,8 +967,7 @@ xfs_attr_leaf_get(xfs_da_args_t *args)
*/
STATIC int
xfs_attr_node_addname(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_da_state *state;
struct xfs_da_state_blk *blk;
@@ -1101,20 +1037,6 @@ xfs_attr_node_addname(
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
-
- /*
- * Commit the node conversion and start the next
- * trans in the chain.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- goto out;
- }
-
goto restart;
}
@@ -1127,12 +1049,6 @@ xfs_attr_node_addname(
error = xfs_da3_split(state);
if (error)
goto out_defer_cancel;
-
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
- }
} else {
/*
* Addition succeeded, update Btree hashvals.
@@ -1148,23 +1064,13 @@ xfs_attr_node_addname(
state = NULL;
/*
- * Commit the leaf addition or btree split and start the next
- * trans in the chain.
- */
- if (roll_trans) {
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- goto out;
- }
-
- /*
* If there was an out-of-line value, allocate the blocks we
* identified for its storage and copy the value. This is done
* after we create the attribute so that we don't overflow the
* maximum size of a transaction and/or hit a deadlock.
*/
if (args->rmtblkno > 0) {
- error = xfs_attr_rmtval_set(args, roll_trans);
+ error = xfs_attr_rmtval_set(args);
if (error)
return error;
}
@@ -1180,7 +1086,7 @@ xfs_attr_node_addname(
* In a separate transaction, set the incomplete flag on the
* "old" attr and clear the incomplete flag on the "new" attr.
*/
- error = xfs_attr3_leaf_flipflags(args, roll_trans);
+ error = xfs_attr3_leaf_flipflags(args);
if (error)
goto out;
@@ -1194,7 +1100,7 @@ xfs_attr_node_addname(
args->rmtblkcnt = args->rmtblkcnt2;
args->rmtvaluelen = args->rmtvaluelen2;
if (args->rmtblkno) {
- error = xfs_attr_rmtval_remove(args, roll_trans);
+ error = xfs_attr_rmtval_remove(args);
if (error)
return error;
}
@@ -1228,11 +1134,6 @@ xfs_attr_node_addname(
error = xfs_da3_join(state);
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
- }
}
/*
@@ -1246,7 +1147,7 @@ xfs_attr_node_addname(
/*
* Added a "remote" value, just clear the incomplete flag.
*/
- error = xfs_attr3_leaf_clearflag(args, roll_trans);
+ error = xfs_attr3_leaf_clearflag(args);
if (error)
goto out;
}
@@ -1302,8 +1203,7 @@ xfs_attr_node_hasname(
*/
STATIC int
xfs_attr_node_removename(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_da_state *state;
struct xfs_da_state_blk *blk;
@@ -1353,10 +1253,10 @@ xfs_attr_node_removename(
* Mark the attribute as INCOMPLETE, then bunmapi() the
* remote value.
*/
- error = xfs_attr3_leaf_setflag(args, roll_trans);
+ error = xfs_attr3_leaf_setflag(args);
if (error)
goto out;
- error = xfs_attr_rmtval_remove(args, roll_trans);
+ error = xfs_attr_rmtval_remove(args);
if (error)
goto out;
@@ -1384,19 +1284,6 @@ xfs_attr_node_removename(
error = xfs_da3_join(state);
if (error)
goto out_defer_cancel;
-
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
- /*
- * Commit the Btree join operation and
- * start a new trans.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- goto out;
- }
}
/*
@@ -1420,11 +1307,6 @@ xfs_attr_node_removename(
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- goto out;
- }
} else
xfs_trans_brelse(args->trans, bp);
}
@@ -178,10 +178,10 @@ int xfs_attr_get(struct xfs_inode *ip, const unsigned char *name,
int xfs_attr_set(struct xfs_inode *dp, const unsigned char *name,
unsigned char *value, int valuelen, int flags);
int xfs_attr_set_args(struct xfs_da_args *args, struct xfs_buf **leaf_bp,
- xfs_attr_state_t *state, bool roll_trans);
+ xfs_attr_state_t *state);
int xfs_attr_remove(struct xfs_inode *dp, const unsigned char *name, int flags);
int xfs_has_attr(struct xfs_da_args *args);
-int xfs_attr_remove_args(struct xfs_da_args *args, bool roll_trans);
+int xfs_attr_remove_args(struct xfs_da_args *args);
int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize,
int flags, struct attrlist_cursor_kern *cursor);
int xfs_attr_args_init(struct xfs_da_args *args, struct xfs_inode *dp,
@@ -2672,8 +2672,7 @@ xfs_attr_leaf_newentsize(
*/
int
xfs_attr3_leaf_clearflag(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_attr_leafblock *leaf;
struct xfs_attr_leaf_entry *entry;
@@ -2731,11 +2730,6 @@ xfs_attr3_leaf_clearflag(
XFS_DA_LOGRANGE(leaf, name_rmt, sizeof(*name_rmt)));
}
- /*
- * Commit the flag value change and start the next trans in series.
- */
- if (roll_trans)
- error = xfs_trans_roll_inode(&args->trans, args->dp);
return error;
}
@@ -2744,8 +2738,7 @@ xfs_attr3_leaf_clearflag(
*/
int
xfs_attr3_leaf_setflag(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_attr_leafblock *leaf;
struct xfs_attr_leaf_entry *entry;
@@ -2785,11 +2778,6 @@ xfs_attr3_leaf_setflag(
XFS_DA_LOGRANGE(leaf, name_rmt, sizeof(*name_rmt)));
}
- /*
- * Commit the flag value change and start the next trans in series.
- */
- if (roll_trans)
- error = xfs_trans_roll_inode(&args->trans, args->dp);
return error;
}
@@ -2802,8 +2790,7 @@ xfs_attr3_leaf_setflag(
*/
int
xfs_attr3_leaf_flipflags(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_attr_leafblock *leaf1;
struct xfs_attr_leafblock *leaf2;
@@ -2906,11 +2893,5 @@ xfs_attr3_leaf_flipflags(
XFS_DA_LOGRANGE(leaf2, name_rmt, sizeof(*name_rmt)));
}
- /*
- * Commit the flag value change and start the next trans in series.
- */
- if (roll_trans)
- error = xfs_trans_roll_inode(&args->trans, args->dp);
-
return error;
}
@@ -51,9 +51,9 @@ void xfs_attr_fork_remove(struct xfs_inode *ip, struct xfs_trans *tp);
int xfs_attr3_leaf_to_node(struct xfs_da_args *args);
int xfs_attr3_leaf_to_shortform(struct xfs_buf *bp,
struct xfs_da_args *args, int forkoff);
-int xfs_attr3_leaf_clearflag(struct xfs_da_args *args, bool roll_trans);
-int xfs_attr3_leaf_setflag(struct xfs_da_args *args, bool roll_trans);
-int xfs_attr3_leaf_flipflags(struct xfs_da_args *args, bool roll_trans);
+int xfs_attr3_leaf_clearflag(struct xfs_da_args *args);
+int xfs_attr3_leaf_setflag(struct xfs_da_args *args);
+int xfs_attr3_leaf_flipflags(struct xfs_da_args *args);
/*
* Routines used for growing the Btree.
@@ -433,8 +433,7 @@ xfs_attr_rmtval_get(
*/
int
xfs_attr_rmtval_set(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_inode *dp = args->dp;
struct xfs_mount *mp = dp->i_mount;
@@ -488,26 +487,11 @@ xfs_attr_rmtval_set(
if (error)
goto out_defer_cancel;
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
- }
-
ASSERT(nmap == 1);
ASSERT((map.br_startblock != DELAYSTARTBLOCK) &&
(map.br_startblock != HOLESTARTBLOCK));
lblkno += map.br_blockcount;
blkcnt -= map.br_blockcount;
-
- if (roll_trans) {
- /*
- * Start the next trans in the chain.
- */
- error = xfs_trans_roll_inode(&args->trans, dp);
- if (error)
- return error;
- }
}
/*
@@ -570,8 +554,7 @@ xfs_attr_rmtval_set(
*/
int
xfs_attr_rmtval_remove(
- struct xfs_da_args *args,
- bool roll_trans)
+ struct xfs_da_args *args)
{
struct xfs_mount *mp = args->dp->i_mount;
xfs_dablk_t lblkno;
@@ -633,19 +616,6 @@ xfs_attr_rmtval_remove(
XFS_BMAPI_ATTRFORK, 1, &done);
if (error)
goto out_defer_cancel;
-
- if (roll_trans) {
- error = xfs_defer_finish(&args->trans);
- if (error)
- return error;
-
- /*
- * Close out trans and start the next one in the chain.
- */
- error = xfs_trans_roll_inode(&args->trans, args->dp);
- if (error)
- return error;
- }
}
return 0;
out_defer_cancel:
@@ -9,7 +9,7 @@
int xfs_attr3_rmt_blocks(struct xfs_mount *mp, int attrlen);
int xfs_attr_rmtval_get(struct xfs_da_args *args);
-int xfs_attr_rmtval_set(struct xfs_da_args *args, bool roll_trans);
-int xfs_attr_rmtval_remove(struct xfs_da_args *args, bool roll_trans);
+int xfs_attr_rmtval_set(struct xfs_da_args *args);
+int xfs_attr_rmtval_remove(struct xfs_da_args *args);
#endif /* __XFS_ATTR_REMOTE_H__ */
@@ -81,11 +81,11 @@ xfs_trans_attr(
case XFS_ATTR_OP_FLAGS_SET:
args->op_flags |= XFS_DA_OP_ADDNAME;
error = xfs_attr_set_args(args, leaf_bp,
- (xfs_attr_state_t *)state, false);
+ (xfs_attr_state_t *)state);
break;
case XFS_ATTR_OP_FLAGS_REMOVE:
ASSERT(XFS_IFORK_Q((args->dp)));
- error = xfs_attr_remove_args(args, false);
+ error = xfs_attr_remove_args(args);
break;
default:
error = -EFSCORRUPTED;
All calls to functions using this parameter are now passing a false value. We can now remove the boolean and all affected code Signed-off-by: Allison Henderson <allison.henderson@oracle.com> --- fs/xfs/libxfs/xfs_attr.c | 168 ++++++---------------------------------- fs/xfs/libxfs/xfs_attr.h | 4 +- fs/xfs/libxfs/xfs_attr_leaf.c | 25 +----- fs/xfs/libxfs/xfs_attr_leaf.h | 6 +- fs/xfs/libxfs/xfs_attr_remote.c | 34 +------- fs/xfs/libxfs/xfs_attr_remote.h | 4 +- fs/xfs/xfs_trans_attr.c | 4 +- 7 files changed, 39 insertions(+), 206 deletions(-)