@@ -195,6 +195,7 @@ xfs_parent_add(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&parent->args, parent_name);
@@ -227,6 +228,7 @@ xfs_parent_remove(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&parent->args, parent_name);
@@ -265,6 +267,7 @@ xfs_parent_replace(
args->trans = tp;
args->dp = child;
+ args->owner = child->i_ino;
xfs_init_parent_davalue(&parent->args, old_name);
xfs_init_parent_danewvalue(&parent->args, new_name);
@@ -327,6 +330,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)
{
@@ -343,6 +347,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;
}
/*
@@ -359,7 +364,7 @@ xfs_parent_lookup(
struct xfs_parent_scratch *scr)
{
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);
@@ -374,11 +379,12 @@ 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)
{
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);
return xfs_attr_set(&scr->args);
}
@@ -392,11 +398,12 @@ 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)
{
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_REMOVE;
return xfs_attr_set(&scr->args);
@@ -108,11 +108,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);