• Filipe Manana's avatar
    btrfs: stop incremening log_batch for the log root tree when syncing log · 28a95795
    Filipe Manana authored
    We are incrementing the log_batch atomic counter of the root log tree but
    we never use that counter, it's used only for the log trees of subvolume
    roots. We started doing it when we moved the log_batch and log_write
    counters from the global, per fs, btrfs_fs_info structure, into the
    btrfs_root structure in commit 7237f183 ("Btrfs: fix tree logs
    parallel sync").
    
    So just stop doing it for the log root tree and add a comment over the
    field declaration so inform it's used only for log trees of subvolume
    roots.
    
    This patch is part of a series that has the following patches:
    
    1/4 btrfs: only commit the delayed inode when doing a full fsync
    2/4 btrfs: only commit delayed items at fsync if we are logging a directory
    3/4 btrfs: stop incremening log_batch for the log root tree when syncing log
    4/4 btrfs: remove no longer needed use of log_writers for the log root tree
    
    After the entire patchset applied I saw about 12% decrease on max latency
    reported by dbench. The test was done on a qemu vm, with 8 cores, 16Gb of
    ram, using kvm and using a raw NVMe device directly (no intermediary fs on
    the host). The test was invoked like the following:
    
      mkfs.btrfs -f /dev/sdk
      mount -o ssd -o nospace_cache /dev/sdk /mnt/sdk
      dbench -D /mnt/sdk -t 300 8
      umount /mnt/dsk
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    28a95795
tree-log.c 172 KB