• Filipe Manana's avatar
    btrfs: set the objectid of the btree inode's location key · adac5584
    Filipe Manana authored
    We currently don't use the location key of the btree inode, its content
    is set to zeroes, as it's a special inode that is not persisted (it has
    no inode item stored in any btree).
    
    At btrfs_ino(), an inline function used extensively in btrfs, we have
    this special check if the given inode's location objectid is 0, and if it
    is, we return the value stored in the VFS' inode i_ino field instead
    (which is BTRFS_BTREE_INODE_OBJECTID for the btree inode).
    
    To reduce the code at btrfs_ino(), we can simply set the objectid of the
    btree inode to the value BTRFS_BTREE_INODE_OBJECTID. This eliminates the
    need to check for the special case of the objectid being zero, with the
    side effect of reducing the overall code size and having less code to
    execute, as btrfs_ino() is an inline function.
    
    Before:
    
    $ size fs/btrfs/btrfs.ko
       text	   data	    bss	    dec	    hex	filename
    1620502	 189240	  29032	1838774	 1c0eb6	fs/btrfs/btrfs.ko
    
    After:
    
    $ size fs/btrfs/btrfs.ko
       text	   data	    bss	    dec	    hex	filename
    1617487	 189240	  29032	1835759	 1c02ef	fs/btrfs/btrfs.ko
    Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    adac5584
disk-io.c 146 KB