@@ -202,6 +202,7 @@ xfs_parent_addname(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&ppargs->args, parent_name);
@@ -240,6 +241,7 @@ xfs_parent_removename(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&ppargs->args, parent_name);
@@ -289,6 +291,7 @@ xfs_parent_replacename(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&ppargs->args, old_name);
xfs_init_parent_danewvalue(&ppargs->args, new_name);
@@ -372,6 +375,7 @@ static inline void
xfs_parent_scratch_init(
struct xfs_trans *tp,
struct xfs_inode *ip,
+ xfs_ino_t owner,
const struct xfs_parent_name_irec *pptr,
struct xfs_parent_scratch *scr)
{
@@ -388,6 +392,7 @@ xfs_parent_scratch_init(
scr->args.whichfork = XFS_ATTR_FORK;
scr->args.hashval = xfs_da_hashname((const void *)&scr->rec,
sizeof(struct xfs_parent_name_rec));
+ scr->args.owner = owner;
}
/*
@@ -416,7 +421,7 @@ xfs_parent_lookup(
}
xfs_parent_irec_to_disk(&scr->rec, pptr);
- xfs_parent_scratch_init(tp, ip, pptr, scr);
+ xfs_parent_scratch_init(tp, ip, ip->i_ino, pptr, scr);
scr->args.op_flags |= XFS_DA_OP_OKNOENT;
return xfs_attr_get_ilocked(&scr->args);
@@ -430,6 +435,7 @@ xfs_parent_lookup(
int
xfs_parent_set(
struct xfs_inode *ip,
+ xfs_ino_t owner,
const struct xfs_parent_name_irec *pptr,
struct xfs_parent_scratch *scr)
{
@@ -439,7 +445,7 @@ xfs_parent_set(
}
xfs_parent_irec_to_disk(&scr->rec, pptr);
- xfs_parent_scratch_init(NULL, ip, pptr, scr);
+ xfs_parent_scratch_init(NULL, ip, owner, pptr, scr);
scr->args.op_flags |= XFS_DA_OP_LOGGED;
return xfs_attr_set(&scr->args);
@@ -453,6 +459,7 @@ xfs_parent_set(
int
xfs_parent_unset(
struct xfs_inode *ip,
+ xfs_ino_t owner,
const struct xfs_parent_name_irec *pptr,
struct xfs_parent_scratch *scr)
{
@@ -462,7 +469,7 @@ xfs_parent_unset(
}
xfs_parent_irec_to_disk(&scr->rec, pptr);
- xfs_parent_scratch_init(NULL, ip, pptr, scr);
+ xfs_parent_scratch_init(NULL, ip, owner, pptr, scr);
scr->args.op_flags |= XFS_DA_OP_LOGGED | XFS_DA_OP_REMOVE;
return xfs_attr_set(&scr->args);
@@ -162,11 +162,11 @@ int xfs_parent_lookup(struct xfs_trans *tp, struct xfs_inode *ip,
const struct xfs_parent_name_irec *pptr,
struct xfs_parent_scratch *scratch);
-int xfs_parent_set(struct xfs_inode *ip,
+int xfs_parent_set(struct xfs_inode *ip, xfs_ino_t owner,
const struct xfs_parent_name_irec *pptr,
struct xfs_parent_scratch *scratch);
-int xfs_parent_unset(struct xfs_inode *ip,
+int xfs_parent_unset(struct xfs_inode *ip, xfs_ino_t owner,
const struct xfs_parent_name_irec *rec,
struct xfs_parent_scratch *scratch);