• Chris Mason's avatar
    Btrfs: avoid tree log commit when there are no changes · 257c62e1
    Chris Mason authored
    rpm has a habit of running fdatasync when the file hasn't
    changed.  We already detect if a file hasn't been changed
    in the current transaction but it might have been sent to
    the tree-log in this transaction and not changed since
    the last call to fsync.
    
    In this case, we want to avoid a tree log sync, which includes
    a number of synchronous writes and barriers.  This commit
    extends the existing tracking of the last transaction to change
    a file to also track the last sub-transaction.
    
    The end result is that rpm -ivh and -Uvh are roughly twice as fast,
    and on par with ext3.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    257c62e1
tree-log.c 83.8 KB