@@ -141,7 +141,7 @@
#define xfs_log_get_max_trans_res libxfs_log_get_max_trans_res
#define xfs_log_sb libxfs_log_sb
#define xfs_mode_to_ftype libxfs_mode_to_ftype
-#define xfs_parent_defer_add libxfs_parent_defer_add
+#define xfs_parent_add libxfs_parent_add
#define xfs_parent_finish libxfs_parent_finish
#define xfs_parent_start libxfs_parent_start
#define xfs_perag_get libxfs_perag_get
@@ -136,6 +136,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,
@@ -171,12 +175,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)
{
@@ -195,8 +200,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,
@@ -212,14 +218,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);
@@ -508,8 +508,8 @@ parseproto(
newdirent(mp, tp, pip, &xname, ip->i_ino, &offset);
libxfs_trans_log_inode(tp, ip, flags);
if (parent) {
- error = -libxfs_parent_defer_add(tp, parent, pip,
- &xname, offset, ip);
+ error = -libxfs_parent_add(tp, parent, pip, &xname,
+ offset, ip);
if (error)
fail(_("committing parent pointers failed."),
error);
@@ -601,8 +601,8 @@ parseproto(
newdirectory(mp, tp, ip, pip);
libxfs_trans_log_inode(tp, ip, flags);
if (parent) {
- error = -libxfs_parent_defer_add(tp, parent, pip,
- &xname, offset, ip);
+ error = -libxfs_parent_add(tp, parent, pip, &xname,
+ offset, ip);
if (error)
fail(_("committing parent pointers failed."),
error);
@@ -636,8 +636,8 @@ parseproto(
}
libxfs_trans_log_inode(tp, ip, flags);
if (parent) {
- error = -libxfs_parent_defer_add(tp, parent, pip, &xname,
- offset, ip);
+ error = -libxfs_parent_add(tp, parent, pip, &xname, offset,
+ ip);
if (error)
fail(_("committing parent pointers failed."), error);
}