diff options
Diffstat (limited to 'fs/xfs/xfs_attr.c')
| -rw-r--r-- | fs/xfs/xfs_attr.c | 91 | 
1 files changed, 30 insertions, 61 deletions
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index b9c196a53c4..c2568242a90 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -25,19 +25,13 @@  #include "xfs_trans.h"  #include "xfs_sb.h"  #include "xfs_ag.h" -#include "xfs_dir2.h" -#include "xfs_dmapi.h"  #include "xfs_mount.h"  #include "xfs_da_btree.h"  #include "xfs_bmap_btree.h" -#include "xfs_alloc_btree.h" -#include "xfs_ialloc_btree.h" -#include "xfs_dir2_sf.h"  #include "xfs_attr_sf.h"  #include "xfs_dinode.h"  #include "xfs_inode.h"  #include "xfs_alloc.h" -#include "xfs_btree.h"  #include "xfs_inode_item.h"  #include "xfs_bmap.h"  #include "xfs_attr.h" @@ -325,8 +319,7 @@ xfs_attr_set_int(  		return (error);  	} -	xfs_trans_ijoin(args.trans, dp, XFS_ILOCK_EXCL); -	xfs_trans_ihold(args.trans, dp); +	xfs_trans_ijoin(args.trans, dp);  	/*  	 * If the attribute list is non-existent or a shortform list, @@ -396,10 +389,8 @@ xfs_attr_set_int(  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args.trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args.trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args.trans, dp);  		/*  		 * Commit the leaf transformation.  We'll need another (linked) @@ -544,8 +535,7 @@ xfs_attr_remove_int(xfs_inode_t *dp, struct xfs_name *name, int flags)  	 * No need to make quota reservations here. We expect to release some  	 * blocks not allocate in the common case.  	 */ -	xfs_trans_ijoin(args.trans, dp, XFS_ILOCK_EXCL); -	xfs_trans_ihold(args.trans, dp); +	xfs_trans_ijoin(args.trans, dp);  	/*  	 * Decide on what work routines to call based on the inode size. @@ -821,8 +811,7 @@ xfs_attr_inactive(xfs_inode_t *dp)  	 * No need to make quota reservations here. We expect to release some  	 * blocks, not allocate, in the common case.  	 */ -	xfs_trans_ijoin(trans, dp, XFS_ILOCK_EXCL); -	xfs_trans_ihold(trans, dp); +	xfs_trans_ijoin(trans, dp);  	/*  	 * Decide on what work routines to call based on the inode size. @@ -981,10 +970,8 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, dp);  		/*  		 * Commit the current trans (including the inode) and start @@ -1085,10 +1072,8 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)  			 * and started a new one.  We need the inode to be  			 * in all transactions.  			 */ -			if (committed) { -				xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -				xfs_trans_ihold(args->trans, dp); -			} +			if (committed) +				xfs_trans_ijoin(args->trans, dp);  		} else  			xfs_da_buf_done(bp); @@ -1161,10 +1146,8 @@ xfs_attr_leaf_removename(xfs_da_args_t *args)  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, dp);  	} else  		xfs_da_buf_done(bp);  	return(0); @@ -1317,10 +1300,8 @@ restart:  			 * and started a new one.  We need the inode to be  			 * in all transactions.  			 */ -			if (committed) { -				xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -				xfs_trans_ihold(args->trans, dp); -			} +			if (committed) +				xfs_trans_ijoin(args->trans, dp);  			/*  			 * Commit the node conversion and start the next @@ -1356,10 +1337,8 @@ restart:  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, dp);  	} else {  		/*  		 * Addition succeeded, update Btree hashvals. @@ -1470,10 +1449,8 @@ restart:  			 * and started a new one.  We need the inode to be  			 * in all transactions.  			 */ -			if (committed) { -				xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -				xfs_trans_ihold(args->trans, dp); -			} +			if (committed) +				xfs_trans_ijoin(args->trans, dp);  		}  		/* @@ -1604,10 +1581,8 @@ xfs_attr_node_removename(xfs_da_args_t *args)  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, dp);  		/*  		 * Commit the Btree join operation and start a new trans. @@ -1658,10 +1633,8 @@ xfs_attr_node_removename(xfs_da_args_t *args)  			 * and started a new one.  We need the inode to be  			 * in all transactions.  			 */ -			if (committed) { -				xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -				xfs_trans_ihold(args->trans, dp); -			} +			if (committed) +				xfs_trans_ijoin(args->trans, dp);  		} else  			xfs_da_brelse(args->trans, bp);  	} @@ -2004,7 +1977,7 @@ xfs_attr_rmtval_get(xfs_da_args_t *args)  		error = xfs_bmapi(args->trans, args->dp, (xfs_fileoff_t)lblkno,  				  args->rmtblkcnt,  				  XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, -				  NULL, 0, map, &nmap, NULL, NULL); +				  NULL, 0, map, &nmap, NULL);  		if (error)  			return(error);  		ASSERT(nmap >= 1); @@ -2083,7 +2056,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)  				  XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA |  							XFS_BMAPI_WRITE,  				  args->firstblock, args->total, &map, &nmap, -				  args->flist, NULL); +				  args->flist);  		if (!error) {  			error = xfs_bmap_finish(&args->trans, args->flist,  						&committed); @@ -2099,10 +2072,8 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, dp);  		ASSERT(nmap == 1);  		ASSERT((map.br_startblock != DELAYSTARTBLOCK) && @@ -2136,7 +2107,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)  				  args->rmtblkcnt,  				  XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA,  				  args->firstblock, 0, &map, &nmap, -				  NULL, NULL); +				  NULL);  		if (error) {  			return(error);  		} @@ -2201,7 +2172,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)  					args->rmtblkcnt,  					XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA,  					args->firstblock, 0, &map, &nmap, -					args->flist, NULL); +					args->flist);  		if (error) {  			return(error);  		} @@ -2239,7 +2210,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)  		error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt,  				    XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA,  				    1, args->firstblock, args->flist, -				    NULL, &done); +				    &done);  		if (!error) {  			error = xfs_bmap_finish(&args->trans, args->flist,  						&committed); @@ -2255,10 +2226,8 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)  		 * bmap_finish() may have committed the last trans and started  		 * a new one.  We need the inode to be in all transactions.  		 */ -		if (committed) { -			xfs_trans_ijoin(args->trans, args->dp, XFS_ILOCK_EXCL); -			xfs_trans_ihold(args->trans, args->dp); -		} +		if (committed) +			xfs_trans_ijoin(args->trans, args->dp);  		/*  		 * Close out trans and start the next one in the chain.  | 
