@@ -135,6 +135,10 @@ xfs_parent_irec_from_disk(
memset(&irec->p_name[valuelen], 0, sizeof(irec->p_name) - valuelen);
}
+/*
+ * Allocate memory to control a logged parent pointer update as part of a
+ * dirent operation.
+ */
int
__xfs_parent_init(
struct xfs_mount *mp,
@@ -170,12 +174,13 @@ __xfs_parent_init(
return 0;
}
+/* Add a parent pointer to reflect a dirent addition. */
int
-xfs_parent_defer_add(
+xfs_parent_add(
struct xfs_trans *tp,
struct xfs_parent_defer *parent,
struct xfs_inode *dp,
- struct xfs_name *parent_name,
+ const struct xfs_name *parent_name,
xfs_dir2_dataptr_t diroffset,
struct xfs_inode *child)
{
@@ -194,8 +199,9 @@ xfs_parent_defer_add(
return xfs_attr_defer_add(args);
}
+/* Remove a parent pointer to reflect a dirent removal. */
int
-xfs_parent_defer_remove(
+xfs_parent_remove(
struct xfs_trans *tp,
struct xfs_inode *dp,
struct xfs_parent_defer *parent,
@@ -211,14 +217,14 @@ xfs_parent_defer_remove(
return xfs_attr_defer_remove(args);
}
-
+/* Replace one parent pointer with another to reflect a rename. */
int
-xfs_parent_defer_replace(
+xfs_parent_replace(
struct xfs_trans *tp,
struct xfs_parent_defer *new_parent,
struct xfs_inode *old_dp,
xfs_dir2_dataptr_t old_diroffset,
- struct xfs_name *parent_name,
+ const struct xfs_name *parent_name,
struct xfs_inode *new_dp,
xfs_dir2_dataptr_t new_diroffset,
struct xfs_inode *child)
@@ -49,8 +49,9 @@ struct xfs_parent_defer {
* Parent pointer attribute prototypes
*/
void xfs_init_parent_name_rec(struct xfs_parent_name_rec *rec,
- struct xfs_inode *ip,
- uint32_t p_diroffset);
+ struct xfs_inode *ip, uint32_t p_diroffset);
+void xfs_init_parent_name_irec(struct xfs_parent_name_irec *irec,
+ struct xfs_parent_name_rec *rec);
int __xfs_parent_init(struct xfs_mount *mp, bool grab_log,
struct xfs_parent_defer **parentp);
@@ -78,18 +79,17 @@ xfs_parent_start_locked(
return 0;
}
-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_replace(struct xfs_trans *tp,
+int xfs_parent_add(struct xfs_trans *tp, struct xfs_parent_defer *parent,
+ struct xfs_inode *dp, const struct xfs_name *parent_name,
+ xfs_dir2_dataptr_t diroffset, struct xfs_inode *child);
+int xfs_parent_replace(struct xfs_trans *tp,
struct xfs_parent_defer *new_parent, struct xfs_inode *old_dp,
- xfs_dir2_dataptr_t old_diroffset, struct xfs_name *parent_name,
- struct xfs_inode *new_ip, xfs_dir2_dataptr_t new_diroffset,
+ xfs_dir2_dataptr_t old_diroffset,
+ const struct xfs_name *parent_name, struct xfs_inode *new_ip,
+ xfs_dir2_dataptr_t new_diroffset, struct xfs_inode *child);
+int xfs_parent_remove(struct xfs_trans *tp, struct xfs_inode *dp,
+ struct xfs_parent_defer *parent, 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);
@@ -1202,7 +1202,7 @@ xfs_create(
* the parent information now.
*/
if (parent) {
- error = xfs_parent_defer_add(tp, parent, dp, name, diroffset,
+ error = xfs_parent_add(tp, parent, dp, name, diroffset,
ip);
if (error)
goto out_trans_cancel;
@@ -1477,7 +1477,7 @@ xfs_link(
* the parent to the inode.
*/
if (parent) {
- error = xfs_parent_defer_add(tp, parent, tdp, target_name,
+ error = xfs_parent_add(tp, parent, tdp, target_name,
diroffset, sip);
if (error)
goto error_return;
@@ -2750,7 +2750,7 @@ xfs_remove(
}
if (parent) {
- error = xfs_parent_defer_remove(tp, dp, parent, dir_offset, ip);
+ error = xfs_parent_remove(tp, dp, parent, dir_offset, ip);
if (error)
goto out_trans_cancel;
}
@@ -3061,12 +3061,12 @@ xfs_cross_rename(
}
if (xfs_has_parent(mp)) {
- error = xfs_parent_defer_replace(tp, ip1_pptr, dp1,
+ error = xfs_parent_replace(tp, ip1_pptr, dp1,
old_diroffset, name2, dp2, new_diroffset, ip1);
if (error)
goto out_trans_abort;
- error = xfs_parent_defer_replace(tp, ip2_pptr, dp2,
+ error = xfs_parent_replace(tp, ip2_pptr, dp2,
new_diroffset, name1, dp1, old_diroffset, ip2);
if (error)
goto out_trans_abort;
@@ -3540,7 +3540,7 @@ xfs_rename(
goto out_trans_cancel;
if (wip_pptr) {
- error = xfs_parent_defer_add(tp, wip_pptr,
+ error = xfs_parent_add(tp, wip_pptr,
src_dp, src_name,
old_diroffset, wip);
if (error)
@@ -3548,7 +3548,7 @@ xfs_rename(
}
if (src_ip_pptr) {
- error = xfs_parent_defer_replace(tp, src_ip_pptr, src_dp,
+ error = xfs_parent_replace(tp, src_ip_pptr, src_dp,
old_diroffset, target_name, target_dp,
new_diroffset, src_ip);
if (error)
@@ -3556,7 +3556,7 @@ xfs_rename(
}
if (tgt_ip_pptr) {
- error = xfs_parent_defer_remove(tp, target_dp,
+ error = xfs_parent_remove(tp, target_dp,
tgt_ip_pptr,
new_diroffset, target_ip);
if (error)
@@ -348,7 +348,7 @@ xfs_symlink(
xfs_trans_log_inode(tp, dp, XFS_ILOG_CORE);
if (parent) {
- error = xfs_parent_defer_add(tp, parent, dp, link_name,
+ error = xfs_parent_add(tp, parent, dp, link_name,
diroffset, ip);
if (error)
goto out_trans_cancel;