• Filipe Manana's avatar
    btrfs: check if a log tree exists at inode_logged() · 1e0860f3
    Filipe Manana authored
    In case an inode was never logged since it was loaded from disk and was
    modified in the current transaction (its ->last_trans matches the ID of
    the current transaction), inode_logged() returns true even if there's no
    existing log tree. In this case we can simply check if a log tree exists
    and return false if it does not. This avoids a caller of inode_logged()
    doing some unnecessary, but harmless, work.
    
    For btrfs_log_new_name() it avoids it logging an inode in case it was
    never logged since it was loaded from disk and there is currently no log
    tree for the inode's root. For the remaining callers of inode_logged(),
    btrfs_del_dir_entries_in_log() and btrfs_del_inode_ref_in_log(), it has
    no effect since they already check if a log tree exists through their
    calls to join_running_log_trans().
    
    So just add a check to inode_logged() to verify if a log tree exists, and
    return false if it does not.
    
    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 1/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>
    1e0860f3
tree-log.c 179 KB