[PATCH 1/1] rpdfs: Initialize xattrs btree root

Chris Kirby <[email protected]> Tue, 17 Mar 2026 12:11:10 -0500
Newsgroups dev.linux.lists.rpdfs-devel
Message-ID <996447dee162477fece9b13ae8c7a0b300f2afc9.1773764619.git.ckirby@versity.com>
Add rpdfs_btree_root_init() and use it to initialize the dirents
and xattrs roots when creating a new inode.

Signed-off-by: Chris Kirby <[email protected]>
---
 fs/rpdfs/btree.c | 8 ++++++++
 fs/rpdfs/btree.h | 2 ++
 fs/rpdfs/inode.c | 7 ++++---
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/fs/rpdfs/btree.c b/fs/rpdfs/btree.c
index a043a864d451..e70822de97f8 100644
--- a/fs/rpdfs/btree.c
+++ b/fs/rpdfs/btree.c
@@ -57,6 +57,14 @@
 static struct rpdfs_btree_key min_key = { 0, 0 };
 static struct rpdfs_btree_key max_key = { cpu_to_le64(U64_MAX), cpu_to_le64(U64_MAX) };
 
+/* Initialize an empty btree root */
+void rpdfs_btree_root_init(struct rpdfs_btree_root *root)
+{
+	root->height = 0;
+	root->ref.bnr = 0;
+	root->ref.alloc_counter = 0;
+}
+
 /*
  * Callers incrementally modify the block before it's written.  We don't
  * want to write old kernel memory as block contents so we explicitly
diff --git a/fs/rpdfs/btree.h b/fs/rpdfs/btree.h
index efc0e2ad16b4..e3dbd3c85f22 100644
--- a/fs/rpdfs/btree.h
+++ b/fs/rpdfs/btree.h
@@ -25,6 +25,8 @@ typedef int (*rpdfs_btree_item_cb_t)(struct rpdfs_fs_info *rfi, struct rpdfs_btr
 				     struct rpdfs_btree_item_args *b,
 				     struct rpdfs_btree_item_args *c, void *fn_arg);
 
+void rpdfs_btree_root_init(struct rpdfs_btree_root *root);
+
 void rpdfs_btree_init_first_block(struct rpdfs_btree_root *root, struct rpdfs_block_ref *ref,
 				  struct rpdfs_btree_block *bt);
 
diff --git a/fs/rpdfs/inode.c b/fs/rpdfs/inode.c
index bdd31ce0b6da..049a19b79fe8 100644
--- a/fs/rpdfs/inode.c
+++ b/fs/rpdfs/inode.c
@@ -6,6 +6,7 @@
 #include <linux/writeback.h>
 #include <linux/iversion.h>
 
+#include "btree.h"
 #include "dir.h"
 #include "file.h"
 #include "inode.h"
@@ -295,11 +296,11 @@ struct inode *rpdfs_new_inode(struct super_block *sb, struct rpdfs_ino_gen *ig)
 	ri->refresh_wcount = 0;
 	ri->xattr_creates = 0;
 	ri->ig = *ig;
-	ri->dirents.height = 0;
-	ri->dirents.ref.bnr = 0;
-	ri->dirents.ref.alloc_counter = 0;
 	inode->i_ino = le64_to_cpu(ri->ig.ino);
 
+	rpdfs_btree_root_init(&ri->dirents);
+	rpdfs_btree_root_init(&ri->xattrs);
+
 	ts = inode_set_ctime_current(inode);
 	inode_set_mtime_to_ts(inode, ts);
 	inode_set_atime_to_ts(inode, ts);
-- 
2.53.0