[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>
This commit is contained in:
@ -241,8 +241,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct xfs_name *name,
|
||||
args.firstblock = &firstblock;
|
||||
args.flist = &flist;
|
||||
args.whichfork = XFS_ATTR_FORK;
|
||||
args.addname = 1;
|
||||
args.oknoent = 1;
|
||||
args.op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT;
|
||||
|
||||
/*
|
||||
* Determine space new attribute will use, and if it would be
|
||||
@ -974,7 +973,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
|
||||
xfs_da_brelse(args->trans, bp);
|
||||
return(retval);
|
||||
}
|
||||
args->rename = 1; /* an atomic rename */
|
||||
args->op_flags |= XFS_DA_OP_RENAME; /* an atomic rename */
|
||||
args->blkno2 = args->blkno; /* set 2nd entry info*/
|
||||
args->index2 = args->index;
|
||||
args->rmtblkno2 = args->rmtblkno;
|
||||
@ -1054,7 +1053,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *args)
|
||||
* so that one disappears and one appears atomically. Then we
|
||||
* must remove the "old" attribute/value pair.
|
||||
*/
|
||||
if (args->rename) {
|
||||
if (args->op_flags & XFS_DA_OP_RENAME) {
|
||||
/*
|
||||
* In a separate transaction, set the incomplete flag on the
|
||||
* "old" attr and clear the incomplete flag on the "new" attr.
|
||||
@ -1307,7 +1306,7 @@ restart:
|
||||
} else if (retval == EEXIST) {
|
||||
if (args->flags & ATTR_CREATE)
|
||||
goto out;
|
||||
args->rename = 1; /* atomic rename op */
|
||||
args->op_flags |= XFS_DA_OP_RENAME; /* atomic rename op */
|
||||
args->blkno2 = args->blkno; /* set 2nd entry info*/
|
||||
args->index2 = args->index;
|
||||
args->rmtblkno2 = args->rmtblkno;
|
||||
@ -1425,7 +1424,7 @@ restart:
|
||||
* so that one disappears and one appears atomically. Then we
|
||||
* must remove the "old" attribute/value pair.
|
||||
*/
|
||||
if (args->rename) {
|
||||
if (args->op_flags & XFS_DA_OP_RENAME) {
|
||||
/*
|
||||
* In a separate transaction, set the incomplete flag on the
|
||||
* "old" attr and clear the incomplete flag on the "new" attr.
|
||||
|
Reference in New Issue
Block a user