Commit 3a3178c7 authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba

btrfs: move leaf_data_end into ctree.c

This is only used in ctree.c, with the exception of zero'ing out extent
buffers we're getting ready to write out.  In theory we shouldn't have
an extent buffer with 0 items that we're writing out, however I'd rather
be safe than sorry so open code it in extent_io.c, and then copy the
helper into ctree.c.  This will make it easier to sync accessors.[ch]
into btrfs-progs, as this requires a helper that isn't defined in
accessors.h.
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 1fe5ebc4
...@@ -897,19 +897,6 @@ const char *btrfs_super_csum_name(u16 csum_type); ...@@ -897,19 +897,6 @@ const char *btrfs_super_csum_name(u16 csum_type);
const char *btrfs_super_csum_driver(u16 csum_type); const char *btrfs_super_csum_driver(u16 csum_type);
size_t __attribute_const__ btrfs_get_num_csums(void); size_t __attribute_const__ btrfs_get_num_csums(void);
/*
* The leaf data grows from end-to-front in the node. this returns the address
* of the start of the last item, which is the stop of the leaf data stack.
*/
static inline unsigned int leaf_data_end(const struct extent_buffer *leaf)
{
u32 nr = btrfs_header_nritems(leaf);
if (nr == 0)
return BTRFS_LEAF_DATA_SIZE(leaf->fs_info);
return btrfs_item_offset(leaf, nr - 1);
}
/* struct btrfs_file_extent_item */ /* struct btrfs_file_extent_item */
BTRFS_SETGET_STACK_FUNCS(stack_file_extent_type, struct btrfs_file_extent_item, BTRFS_SETGET_STACK_FUNCS(stack_file_extent_type, struct btrfs_file_extent_item,
type, 8); type, 8);
......
...@@ -51,6 +51,19 @@ static const struct btrfs_csums { ...@@ -51,6 +51,19 @@ static const struct btrfs_csums {
.driver = "blake2b-256" }, .driver = "blake2b-256" },
}; };
/*
* The leaf data grows from end-to-front in the node. this returns the address
* of the start of the last item, which is the stop of the leaf data stack.
*/
static unsigned int leaf_data_end(const struct extent_buffer *leaf)
{
u32 nr = btrfs_header_nritems(leaf);
if (nr == 0)
return BTRFS_LEAF_DATA_SIZE(leaf->fs_info);
return btrfs_item_offset(leaf, nr - 1);
}
int btrfs_super_csum_size(const struct btrfs_super_block *s) int btrfs_super_csum_size(const struct btrfs_super_block *s)
{ {
u16 t = btrfs_super_csum_type(s); u16 t = btrfs_super_csum_type(s);
......
...@@ -2537,7 +2537,11 @@ static void prepare_eb_write(struct extent_buffer *eb) ...@@ -2537,7 +2537,11 @@ static void prepare_eb_write(struct extent_buffer *eb)
* header 0 1 2 .. N ... data_N .. data_2 data_1 data_0 * header 0 1 2 .. N ... data_N .. data_2 data_1 data_0
*/ */
start = btrfs_item_nr_offset(nritems); start = btrfs_item_nr_offset(nritems);
end = BTRFS_LEAF_DATA_OFFSET + leaf_data_end(eb); end = BTRFS_LEAF_DATA_OFFSET;
if (nritems == 0)
end += BTRFS_LEAF_DATA_SIZE(eb->fs_info);
else
end += btrfs_item_offset(eb, nritems - 1);
memzero_extent_buffer(eb, start, end - start); memzero_extent_buffer(eb, start, end - start);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment