ichdr.magic = XFS_ATTR3_LEAF_MAGIC;
 
                hdr3->blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               hdr3->owner = cpu_to_be64(dp->i_ino);
+               hdr3->owner = cpu_to_be64(args->owner);
                uuid_copy(&hdr3->uuid, &mp->m_sb.sb_meta_uuid);
 
                ichdr.freemap[0].base = sizeof(struct xfs_attr3_leaf_hdr);
 
                        return error;
                bp->b_ops = &xfs_attr3_rmt_buf_ops;
 
-               xfs_attr_rmtval_copyin(mp, bp, args->dp->i_ino, &offset,
-                                      &valuelen, &src);
+               xfs_attr_rmtval_copyin(mp, bp, args->owner, &offset, &valuelen,
+                               &src);
 
                error = xfs_bwrite(bp); /* GROT: NOTE: synchronous write */
                xfs_buf_relse(bp);
 
                memset(hdr3, 0, sizeof(struct xfs_da3_node_hdr));
                ichdr.magic = XFS_DA3_NODE_MAGIC;
                hdr3->info.blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               hdr3->info.owner = cpu_to_be64(args->dp->i_ino);
+               hdr3->info.owner = cpu_to_be64(args->owner);
                uuid_copy(&hdr3->info.uuid, &mp->m_sb.sb_meta_uuid);
        } else {
                ichdr.magic = XFS_DA_NODE_MAGIC;
 
 
 static void
 xfs_dir3_block_init(
-       struct xfs_mount        *mp,
-       struct xfs_trans        *tp,
-       struct xfs_buf          *bp,
-       struct xfs_inode        *dp)
+       struct xfs_da_args      *args,
+       struct xfs_buf          *bp)
 {
-       struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr;
+       struct xfs_trans        *tp = args->trans;
+       struct xfs_inode        *dp = args->dp;
+       struct xfs_mount        *mp = dp->i_mount;
+       struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr;
 
        bp->b_ops = &xfs_dir3_block_buf_ops;
        xfs_trans_buf_set_type(tp, bp, XFS_BLFT_DIR_BLOCK_BUF);
                memset(hdr3, 0, sizeof(*hdr3));
                hdr3->magic = cpu_to_be32(XFS_DIR3_BLOCK_MAGIC);
                hdr3->blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               hdr3->owner = cpu_to_be64(dp->i_ino);
+               hdr3->owner = cpu_to_be64(args->owner);
                uuid_copy(&hdr3->uuid, &mp->m_sb.sb_meta_uuid);
                return;
 
        /*
         * Start converting it to block form.
         */
-       xfs_dir3_block_init(mp, tp, dbp, dp);
+       xfs_dir3_block_init(args, dbp);
 
        needlog = 1;
        needscan = 0;
        error = xfs_dir3_data_init(args, blkno, &bp);
        if (error)
                goto out_free;
-       xfs_dir3_block_init(mp, tp, bp, dp);
+       xfs_dir3_block_init(args, bp);
        hdr = bp->b_addr;
 
        /*
         * Create entry for .
         */
        dep = bp->b_addr + offset;
-       dep->inumber = cpu_to_be64(dp->i_ino);
+       dep->inumber = cpu_to_be64(args->owner);
        dep->namelen = 1;
        dep->name[0] = '.';
        xfs_dir2_data_put_ftype(mp, dep, XFS_DIR3_FT_DIR);
 
                memset(hdr3, 0, sizeof(*hdr3));
                hdr3->magic = cpu_to_be32(XFS_DIR3_DATA_MAGIC);
                hdr3->blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               hdr3->owner = cpu_to_be64(dp->i_ino);
+               hdr3->owner = cpu_to_be64(args->owner);
                uuid_copy(&hdr3->uuid, &mp->m_sb.sb_meta_uuid);
 
        } else
 
  */
 static void
 xfs_dir3_leaf_init(
-       struct xfs_mount        *mp,
-       struct xfs_trans        *tp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp,
-       xfs_ino_t               owner,
        uint16_t                type)
 {
+       struct xfs_mount        *mp = args->dp->i_mount;
+       struct xfs_trans        *tp = args->trans;
        struct xfs_dir2_leaf    *leaf = bp->b_addr;
 
        ASSERT(type == XFS_DIR2_LEAF1_MAGIC || type == XFS_DIR2_LEAFN_MAGIC);
                                         ? cpu_to_be16(XFS_DIR3_LEAF1_MAGIC)
                                         : cpu_to_be16(XFS_DIR3_LEAFN_MAGIC);
                leaf3->info.blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               leaf3->info.owner = cpu_to_be64(owner);
+               leaf3->info.owner = cpu_to_be64(args->owner);
                uuid_copy(&leaf3->info.uuid, &mp->m_sb.sb_meta_uuid);
        } else {
                memset(leaf, 0, sizeof(*leaf));
 {
        struct xfs_inode        *dp = args->dp;
        struct xfs_trans        *tp = args->trans;
-       struct xfs_mount        *mp = dp->i_mount;
        struct xfs_buf          *bp;
        int                     error;
 
        if (error)
                return error;
 
-       xfs_dir3_leaf_init(mp, tp, bp, dp->i_ino, magic);
+       xfs_dir3_leaf_init(args, bp, magic);
        xfs_dir3_leaf_log_header(args, bp);
        if (magic == XFS_DIR2_LEAF1_MAGIC)
                xfs_dir3_leaf_log_tail(args, bp);
 
                hdr.magic = XFS_DIR3_FREE_MAGIC;
 
                hdr3->hdr.blkno = cpu_to_be64(xfs_buf_daddr(bp));
-               hdr3->hdr.owner = cpu_to_be64(dp->i_ino);
+               hdr3->hdr.owner = cpu_to_be64(args->owner);
                uuid_copy(&hdr3->hdr.uuid, &mp->m_sb.sb_meta_uuid);
        } else
                hdr.magic = XFS_DIR2_FREE_MAGIC;