btrfs: drop pointless memset when cloning extent buffer
authorFilipe Manana <fdmanana@suse.com>
Tue, 11 Oct 2022 12:16:57 +0000 (13:16 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 5 Dec 2022 17:00:38 +0000 (18:00 +0100)
At btrfs_clone_extent_buffer(), before allocating the pages array for the
new extent buffer we are calling memset() to zero out the pages array of
the extent buffer. This is pointless however, because the extent buffer
already has every element in its pages array pointing to NULL, as it was
allocated with kmem_cache_zalloc(). The memset() was introduced with
commit dd137dd1f2d719 ("btrfs: factor out allocating an array of pages"),
but even before that commit we already depended on the pages array being
initialized to NULL for the error paths that need to call
btrfs_release_extent_buffer().

So remove the memset(), it's useless and slightly increases the object
text size.

Before this change:

   $ size fs/btrfs/extent_io.o
      text    data     bss     dec     hex filename
     70580    5469      40   76089   12939 fs/btrfs/extent_io.o

After this change:

   $ size fs/btrfs/extent_io.o
      text    data     bss     dec     hex filename
     70564    5469      40   76073   12929 fs/btrfs/extent_io.o

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 7891d375eb4377580142c66b8c1e20fef3eccdec..56a9f591f479333b240b51f037d8aa77f315c150 100644 (file)
@@ -4299,7 +4299,6 @@ struct extent_buffer *btrfs_clone_extent_buffer(const struct extent_buffer *src)
         */
        set_bit(EXTENT_BUFFER_UNMAPPED, &new->bflags);
 
-       memset(new->pages, 0, sizeof(*new->pages) * num_pages);
        ret = btrfs_alloc_page_array(num_pages, new->pages);
        if (ret) {
                btrfs_release_extent_buffer(new);