@@ -201,6 +201,7 @@ xfs_parent_addname(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&ppargs->args, parent_name);
@@ -239,6 +240,7 @@ xfs_parent_removename(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&ppargs->args, parent_name);
@@ -288,6 +290,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);
@@ -371,6 +374,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)
{
@@ -387,6 +391,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;
}
/*
@@ -415,7 +420,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);
@@ -429,6 +434,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)
{
@@ -438,7 +444,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);
@@ -452,6 +458,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)
{
@@ -461,7 +468,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);