• Nikolay Borisov's avatar
    btrfs: split delayed ref head initialization and addition · 2335efaf
    Nikolay Borisov authored
    add_delayed_ref_head really performed 2 independent operations -
    initialisting the ref head and adding it to a list. Now that the init
    part is in a separate function let's complete the separation between
    both operations. This results in a lot simpler interface for
    add_delayed_ref_head since the function now deals solely with either
    adding the newly initialised delayed ref head or merging it into an
    existing delayed ref head. This results in vastly simplified function
    signature since 5 arguments are dropped. The only other thing worth
    mentioning is that due to this split the WARN_ON catching reinit of
    existing. In this patch the condition is extended such that:
    
      qrecord && head_ref->qgroup_ref_root && head_ref->qgroup_reserved
    
    is added. This is done because the two qgroup_* prefixed member are
    set only if both ref_root and reserved are passed. So functionally
    it's equivalent to the old WARN_ON and allows to remove the two args
    from add_delayed_ref_head.
    Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    2335efaf
delayed-ref.c 25.5 KB