• Filipe Manana's avatar
    btrfs: always update the logged transaction when logging new names · 130341be
    Filipe Manana authored
    When we are logging a new name for an inode, due to a link or rename
    operation, if the inode has ancestor inodes that are new, created in the
    current transaction, we need to log that these inodes exist. To ensure
    that a subsequent explicit fsync on one of these ancestor inodes does
    sync the log, we don't set the logged_trans field of these inodes.
    This was done in commit 75b463d2 ("btrfs: do not commit logs and
    transactions during link and rename operations"), to avoid syncing a
    log after a rename or link operation.
    
    In order to allow for future changes to do some optimizations, change
    this behaviour to always update the logged_trans of any logged inode
    and don't update the last_log_commit of the inode if we are logging
    that it exists. This accomplishes that same objective with simpler
    logic, allowing for some optimizations in the next patches.
    
    So just do that simplification.
    
    This patch is part of a patch set comprised of the following patches:
    
      btrfs: check if a log tree exists at inode_logged()
      btrfs: remove no longer needed checks for NULL log context
      btrfs: do not log new dentries when logging that a new name exists
      btrfs: always update the logged transaction when logging new names
      btrfs: avoid expensive search when dropping inode items from log
      btrfs: add helper to truncate inode items when logging inode
      btrfs: avoid expensive search when truncating inode items from the log
      btrfs: avoid search for logged i_size when logging inode if possible
      btrfs: avoid attempt to drop extents when logging inode for the first time
      btrfs: do not commit delayed inode when logging a file in full sync mode
    
    This is patch 4/10 and test results are listed in the change log of the
    last patch in the set.
    Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    130341be
tree-log.c 179 KB