diff mbox series

[04/12] btrfs: make BTRFS_LEAF_DATA_OFFSET take an eb arg

Message ID aee46e656c4fe034edb72ef632d9807dc2a82651.1646692306.git.josef@toxicpanda.com (mailing list archive)
State New, archived
Headers show
Series btrfs: item helper prep work for snapshot_id | expand

Commit Message

Josef Bacik March 7, 2022, 10:33 p.m. UTC
When I expand the size of the btrfs_header we're going to need to
conditionally return a different offset.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/ctree.c     | 8 ++++----
 fs/btrfs/ctree.h     | 9 ++++++---
 fs/btrfs/extent_io.c | 2 +-
 3 files changed, 11 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index 8a35db9d7319..2e270f8d995e 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -53,8 +53,8 @@  static inline void memmove_leaf_data(const struct extent_buffer *dst,
 				     unsigned long src_offset,
 				     unsigned long len)
 {
-	dst_offset += BTRFS_LEAF_DATA_OFFSET;
-	src_offset += BTRFS_LEAF_DATA_OFFSET;
+	dst_offset += BTRFS_LEAF_DATA_OFFSET(dst);
+	src_offset += BTRFS_LEAF_DATA_OFFSET(dst);
 	memmove_extent_buffer(dst, dst_offset, src_offset, len);
 }
 
@@ -63,8 +63,8 @@  static inline void copy_leaf_data(const struct extent_buffer *dst,
 				  unsigned long dst_offset,
 				  unsigned long src_offset, unsigned long len)
 {
-	dst_offset += BTRFS_LEAF_DATA_OFFSET;
-	src_offset += BTRFS_LEAF_DATA_OFFSET;
+	dst_offset += BTRFS_LEAF_DATA_OFFSET(dst);
+	src_offset += BTRFS_LEAF_DATA_OFFSET(dst);
 	copy_extent_buffer(dst, src, dst_offset, src_offset, len);
 }
 
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index d5d52b907143..f4f3d41775e6 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1422,7 +1422,10 @@  static inline u32 BTRFS_LEAF_DATA_SIZE(const struct btrfs_fs_info *info)
 	return info->nodesize - sizeof(struct btrfs_header);
 }
 
-#define BTRFS_LEAF_DATA_OFFSET		offsetof(struct btrfs_leaf, items)
+static inline unsigned long BTRFS_LEAF_DATA_OFFSET(const struct extent_buffer *leaf)
+{
+	return offsetof(struct btrfs_leaf, items);
+}
 
 static inline u32 BTRFS_MAX_ITEM_SIZE(const struct btrfs_fs_info *info)
 {
@@ -2692,11 +2695,11 @@  BTRFS_SETGET_STACK_FUNCS(stack_dev_replace_cursor_right,
 
 /* helper function to cast into the data area of the leaf. */
 #define btrfs_item_ptr(leaf, slot, type) \
-	((type *)(BTRFS_LEAF_DATA_OFFSET + \
+	((type *)(BTRFS_LEAF_DATA_OFFSET(leaf) + \
 	btrfs_item_offset(leaf, slot)))
 
 #define btrfs_item_ptr_offset(leaf, slot) \
-	((unsigned long)(BTRFS_LEAF_DATA_OFFSET + \
+	((unsigned long)(BTRFS_LEAF_DATA_OFFSET(leaf) + \
 	btrfs_item_offset(leaf, slot)))
 
 static inline u32 btrfs_crc32c(u32 crc, const void *address, unsigned length)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 78486bbd1ac9..c5334af2fae5 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4508,7 +4508,7 @@  static void prepare_eb_write(struct extent_buffer *eb)
 		 * header 0 1 2 .. N ... data_N .. data_2 data_1 data_0
 		 */
 		start = btrfs_item_nr_offset(nritems);
-		end = BTRFS_LEAF_DATA_OFFSET + leaf_data_end(eb);
+		end = BTRFS_LEAF_DATA_OFFSET(eb) + leaf_data_end(eb);
 		memzero_extent_buffer(eb, start, end - start);
 	}
 }