• Christoph Hellwig's avatar
    btrfs: don't hold an extra reference for redirtied buffers · f880fe6e
    Christoph Hellwig authored
    When btrfs_redirty_list_add redirties a buffer, it also acquires
    an extra reference that is released on transaction commit.  But
    this is not required as buffers that are dirty or under writeback
    are never freed (look for calls to extent_buffer_under_io())).
    
    Remove the extra reference and the infrastructure used to drop it
    again.
    
    History behind redirty logic:
    
    In the first place, it used releasing_list to hold all the
    to-be-released extent buffers, and decided which buffers to re-dirty at
    the commit time. Then, in a later version, the behaviour got changed to
    re-dirty a necessary buffer and add re-dirtied one to the list in
    btrfs_free_tree_block(). In short, the list was there mostly for the
    patch series' historical reason.
    Reviewed-by: default avatarNaohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    [ add Naohiro's comment regarding history ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    f880fe6e
transaction.h 8.65 KB