• Filipe Manana's avatar
    btrfs: locking: inline btrfs_tree_lock() and btrfs_tree_read_lock() · f40ca9cb
    Filipe Manana authored
    The functions btrfs_tree_lock() and btrfs_tree_read_lock() are very
    trivial so that can be made inline and avoid call overhead, as they
    are very often called inside critical sections (when searching a btree
    for example, attempting to lock a child node/leaf while holding a lock
    on the parent).
    
    So make them static inline, which even reduces the size of the btrfs
    module a little bit.
    
    Before this change:
    
       $ size fs/btrfs/btrfs.ko
          text	   data	    bss	    dec	    hex	filename
       1718786	 156276	  16920	1891982	 1cde8e	fs/btrfs/btrfs.ko
    
    After this change:
    
       $ size fs/btrfs/btrfs.ko
          text	   data	    bss	    dec	    hex	filename
       1718650	 156260	  16920	1891830	 1cddf6	fs/btrfs/btrfs.ko
    
    Running fs_mark also showed a tiny improvement with this script:
    
       $ cat test.sh
       #!/bin/bash
    
       DEV=/dev/nullb0
       MNT=/mnt/nullb0
       FILES=100000
       THREADS=$(nproc --all)
    
       echo "performance" | \
           tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    
       umount $DEV &> /dev/null
       mkfs.btrfs -f $DEV
       mount $DEV $MNT
    
       OPTS="-S 0 -L 5 -n $FILES -s 0 -t $THREADS -k"
       for ((i = 1; i <= $THREADS; i++)); do
            OPTS="$OPTS -d $MNT/d$i"
       done
    
       fs_mark $OPTS
    
       umount $MNT
    
    Before this change:
    
       FSUse%        Count         Size    Files/sec     App Overhead
           10      1200000            0     180894.0         10705410
           16      2400000            0     228211.4         10765738
           23      3600000            0     215969.6         11011072
           30      4800000            0     199077.1         11145587
           46      6000000            0     176624.1         11658470
    
    After this change:
    
       FSUse%        Count         Size    Files/sec     App Overhead
           10      1200000            0     185312.3         10708377
           16      2400000            0     229320.4         10858013
           23      3600000            0     217958.7         11006167
           30      4800000            0     205122.9         11112899
           46      6000000            0     178039.1         11438852
    Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
    Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    f40ca9cb
locking.h 7.57 KB