]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: accessors: use type sizeof constants directly
authorDavid Sterba <dsterba@suse.com>
Tue, 1 Jul 2025 17:23:49 +0000 (19:23 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Jul 2025 22:09:21 +0000 (00:09 +0200)
Now unit_size is used only once, so use it directly in 'part'
calculation. Don't cache sizeof(type) in a variable. While this is a
compile-time constant, forcing the type 'int' generates worse code as it
leads to additional conversion from 32 to 64 bit type on x86_64.

The sizeof() is used only a few times and it does not make the code that
harder to read, so use it directly and let the compiler utilize the
immediate constants in the context it needs. The .ko code size slightly
increases (+50) but further patches will reduce that again.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/accessors.c

index b54c8abe467a0697175ab092c6d65db2b1c8bf1a..2e90b9b14e73f461aa768fd8f28d7c2dff0bea58 100644 (file)
@@ -52,19 +52,17 @@ u##bits btrfs_get_##bits(const struct extent_buffer *eb,            \
        const unsigned long idx = get_eb_folio_index(eb, member_offset);\
        const unsigned long oil = get_eb_offset_in_folio(eb,            \
                                                         member_offset);\
-       const int unit_size = eb->folio_size;                           \
        char *kaddr = folio_address(eb->folios[idx]);                   \
-       const int size = sizeof(u##bits);                               \
-       const int part = unit_size - oil;                               \
+       const int part = eb->folio_size - oil;                          \
        u8 lebytes[sizeof(u##bits)];                                    \
                                                                        \
-       ASSERT(check_setget_bounds(eb, ptr, off, size));                \
+       ASSERT(check_setget_bounds(eb, ptr, off, sizeof(u##bits)));     \
        if (INLINE_EXTENT_BUFFER_PAGES == 1 || likely(sizeof(u##bits) <= part)) \
                return get_unaligned_le##bits(kaddr + oil);             \
                                                                        \
        memcpy(lebytes, kaddr + oil, part);                             \
        kaddr = folio_address(eb->folios[idx + 1]);                     \
-       memcpy(lebytes + part, kaddr, size - part);                     \
+       memcpy(lebytes + part, kaddr, sizeof(u##bits) - part);          \
        return get_unaligned_le##bits(lebytes);                         \
 }                                                                      \
 void btrfs_set_##bits(const struct extent_buffer *eb, void *ptr,       \
@@ -74,13 +72,11 @@ void btrfs_set_##bits(const struct extent_buffer *eb, void *ptr,    \
        const unsigned long idx = get_eb_folio_index(eb, member_offset);\
        const unsigned long oil = get_eb_offset_in_folio(eb,            \
                                                         member_offset);\
-       const int unit_size = eb->folio_size;                           \
        char *kaddr = folio_address(eb->folios[idx]);                   \
-       const int size = sizeof(u##bits);                               \
-       const int part = unit_size - oil;                               \
+       const int part = eb->folio_size - oil;                          \
        u8 lebytes[sizeof(u##bits)];                                    \
                                                                        \
-       ASSERT(check_setget_bounds(eb, ptr, off, size));                \
+       ASSERT(check_setget_bounds(eb, ptr, off, sizeof(u##bits)));     \
        if (INLINE_EXTENT_BUFFER_PAGES == 1 ||                          \
            likely(sizeof(u##bits) <= part)) {                          \
                put_unaligned_le##bits(val, kaddr + oil);               \
@@ -90,7 +86,7 @@ void btrfs_set_##bits(const struct extent_buffer *eb, void *ptr,      \
        put_unaligned_le##bits(val, lebytes);                           \
        memcpy(kaddr + oil, lebytes, part);                             \
        kaddr = folio_address(eb->folios[idx + 1]);                     \
-       memcpy(kaddr, lebytes + part, size - part);                     \
+       memcpy(kaddr, lebytes + part, sizeof(u##bits) - part);          \
 }
 
 DEFINE_BTRFS_SETGET_BITS(8)