@@ -944,7 +944,7 @@ xfs_attr_defer_replace(
}
/* Removes an attribute for an inode as a deferred operation */
-static int
+int
xfs_attr_defer_remove(
struct xfs_da_args *args)
{
@@ -545,6 +545,7 @@ bool xfs_attr_is_leaf(struct xfs_inode *ip);
int xfs_attr_get_ilocked(struct xfs_da_args *args);
int xfs_attr_get(struct xfs_da_args *args);
int xfs_attr_defer_add(struct xfs_da_args *args);
+int xfs_attr_defer_remove(struct xfs_da_args *args);
int xfs_attr_set(struct xfs_da_args *args);
int xfs_attr_set_iter(struct xfs_attr_intent *attr);
int xfs_attr_remove_iter(struct xfs_attr_intent *attr);
@@ -116,6 +116,23 @@ xfs_parent_defer_add(
return xfs_attr_defer_add(args);
}
+int
+xfs_parent_defer_remove(
+ struct xfs_trans *tp,
+ struct xfs_inode *dp,
+ struct xfs_parent_defer *parent,
+ xfs_dir2_dataptr_t diroffset,
+ struct xfs_inode *child)
+{
+ struct xfs_da_args *args = &parent->args;
+
+ xfs_init_parent_name_rec(&parent->rec, dp, diroffset);
+ args->trans = tp;
+ args->dp = child;
+ args->hashval = xfs_da_hashname(args->name, args->namelen);
+ return xfs_attr_defer_remove(args);
+}
+
void
__xfs_parent_cancel(
xfs_mount_t *mp,
@@ -40,6 +40,11 @@ xfs_parent_start(
int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_parent_defer *parent,
struct xfs_inode *dp, struct xfs_name *parent_name,
xfs_dir2_dataptr_t diroffset, struct xfs_inode *child);
+int xfs_parent_defer_remove(struct xfs_trans *tp, struct xfs_inode *dp,
+ struct xfs_parent_defer *parent,
+ xfs_dir2_dataptr_t diroffset,
+ struct xfs_inode *child);
+
void __xfs_parent_cancel(struct xfs_mount *mp, struct xfs_parent_defer *parent);
static inline void
@@ -91,8 +91,6 @@
XFS_DQUOT_CLUSTER_SIZE_FSB)
#define XFS_QM_QINOCREATE_SPACE_RES(mp) \
XFS_IALLOC_SPACE_RES(mp)
-#define XFS_REMOVE_SPACE_RES(mp) \
- XFS_DIRREMOVE_SPACE_RES(mp)
#define XFS_RENAME_SPACE_RES(mp,nl) \
(XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl))
#define XFS_IFREE_SPACE_RES(mp) \
@@ -1266,7 +1266,7 @@ longform_dir2_rebuild(
libxfs_dir_ino_validate(mp, pip.i_ino))
pip.i_ino = mp->m_sb.sb_rootino;
- nres = XFS_REMOVE_SPACE_RES(mp);
+ nres = XFS_DIRREMOVE_SPACE_RES(mp);
error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_remove, nres, 0, 0, &tp);
if (error)
res_failed(error);
@@ -1371,7 +1371,7 @@ dir2_kill_block(
int nres;
xfs_trans_t *tp;
- nres = XFS_REMOVE_SPACE_RES(mp);
+ nres = XFS_DIRREMOVE_SPACE_RES(mp);
error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_remove, nres, 0, 0, &tp);
if (error)
res_failed(error);
@@ -2887,7 +2887,7 @@ process_dir_inode(
* inode but it's easier than wedging a
* new define in ourselves.
*/
- nres = no_modify ? 0 : XFS_REMOVE_SPACE_RES(mp);
+ nres = no_modify ? 0 : XFS_DIRREMOVE_SPACE_RES(mp);
error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_remove,
nres, 0, 0, &tp);
if (error)