btrfs: inline checksum name and driver definitions
authorDavid Sterba <dsterba@suse.com>
Thu, 27 Feb 2020 20:00:45 +0000 (21:00 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 23 Mar 2020 16:01:52 +0000 (17:01 +0100)
There's an unnecessary indirection in the checksum definition table,
pointer and the string itself. The strings are short and the overall
size of one entry is now 24 bytes.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c

index f948435..bfedbbe 100644 (file)
@@ -31,8 +31,8 @@ static void del_ptr(struct btrfs_root *root, struct btrfs_path *path,
 
 static const struct btrfs_csums {
        u16             size;
-       const char      *name;
-       const char      *driver;
+       const char      name[10];
+       const char      driver[12];
 } btrfs_csums[] = {
        [BTRFS_CSUM_TYPE_CRC32] = { .size = 4, .name = "crc32c" },
        [BTRFS_CSUM_TYPE_XXHASH] = { .size = 8, .name = "xxhash64" },
@@ -63,7 +63,8 @@ const char *btrfs_super_csum_name(u16 csum_type)
 const char *btrfs_super_csum_driver(u16 csum_type)
 {
        /* csum type is validated at mount time */
-       return btrfs_csums[csum_type].driver ?:
+       return btrfs_csums[csum_type].driver[0] ?
+               btrfs_csums[csum_type].driver :
                btrfs_csums[csum_type].name;
 }