diff options
| author | Barry Naujok <bnaujok@sgi.com> | 2008-05-21 16:42:05 +1000 | 
|---|---|---|
| committer | Niv Sardi <xaiki@debian.org> | 2008-07-28 16:58:37 +1000 | 
| commit | 6a178100abf01282eb697ab62b6086b2886dfc00 (patch) | |
| tree | 5830f1257fc9662c0f9dcd107eda5377de716a4c /fs/xfs/xfs_dir2_node.c | |
| parent | 5163f95a08cbf058ae16452c2242c5600fedc32e (diff) | |
| download | olio-linux-3.10-6a178100abf01282eb697ab62b6086b2886dfc00.tar.xz olio-linux-3.10-6a178100abf01282eb697ab62b6086b2886dfc00.zip  | |
[XFS] Add op_flags field and helpers to xfs_da_args
The end of the xfs_da_args structure has 4 unsigned char fields for
true/false information on directory and attr operations using the
xfs_da_args structure.
The following converts these 4 into a op_flags field that uses the first 4
bits for these fields and allows expansion for future operation
information (eg. case-insensitive lookup request).
SGI-PV: 981520
SGI-Modid: xfs-linux-melb:xfs-kern:31206a
Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Diffstat (limited to 'fs/xfs/xfs_dir2_node.c')
| -rw-r--r-- | fs/xfs/xfs_dir2_node.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index fedf8f976a1..c71cff85950 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -226,7 +226,7 @@ xfs_dir2_leafn_add(  	ASSERT(index == be16_to_cpu(leaf->hdr.count) ||  	       be32_to_cpu(leaf->ents[index].hashval) >= args->hashval); -	if (args->justcheck) +	if (args->op_flags & XFS_DA_OP_JUSTCHECK)  		return 0;  	/* @@ -515,7 +515,7 @@ xfs_dir2_leafn_lookup_for_addname(  	/* Didn't find any space */  	fi = -1;  out: -	ASSERT(args->oknoent); +	ASSERT(args->op_flags & XFS_DA_OP_OKNOENT);  	if (curbp) {  		/* Giving back a free block. */  		state->extravalid = 1; @@ -638,7 +638,8 @@ xfs_dir2_leafn_lookup_for_entry(  	/* Didn't find an exact match. */  	error = ENOENT;  	di = -1; -	ASSERT(index == be16_to_cpu(leaf->hdr.count) || args->oknoent); +	ASSERT(index == be16_to_cpu(leaf->hdr.count) || +					(args->op_flags & XFS_DA_OP_OKNOENT));  out:  	if (curbp) {  		/* Giving back a data block. */ @@ -669,7 +670,7 @@ xfs_dir2_leafn_lookup_int(  	int			*indexp,	/* out: leaf entry index */  	xfs_da_state_t		*state)		/* state to fill in */  { -	if (args->addname) +	if (args->op_flags & XFS_DA_OP_ADDNAME)  		return xfs_dir2_leafn_lookup_for_addname(bp, args, indexp,  							state);  	return xfs_dir2_leafn_lookup_for_entry(bp, args, indexp, state); @@ -1383,7 +1384,7 @@ xfs_dir2_node_addname(  		/*  		 * It worked, fix the hash values up the btree.  		 */ -		if (!args->justcheck) +		if (!(args->op_flags & XFS_DA_OP_JUSTCHECK))  			xfs_da_fixhashpath(state, &state->path);  	} else {  		/* @@ -1566,7 +1567,8 @@ xfs_dir2_node_addname_int(  		/*  		 * Not allowed to allocate, return failure.  		 */ -		if (args->justcheck || args->total == 0) { +		if ((args->op_flags & XFS_DA_OP_JUSTCHECK) || +							args->total == 0) {  			/*  			 * Drop the freespace buffer unless it came from our  			 * caller. @@ -1712,7 +1714,7 @@ xfs_dir2_node_addname_int(  		/*  		 * If just checking, we succeeded.  		 */ -		if (args->justcheck) { +		if (args->op_flags & XFS_DA_OP_JUSTCHECK) {  			if ((fblk == NULL || fblk->bp == NULL) && fbp != NULL)  				xfs_da_buf_done(fbp);  			return 0;  |