• Qu Wenruo's avatar
    btrfs: use detach_page_private() in alloc_extent_buffer() · fb22e9c4
    Qu Wenruo authored
    In alloc_extent_buffer(), after we got a page from btree inode, we check
    if that page has private pointer attached.
    
    If attached, we check if the existing extent buffer has proper refs.
    If not (the eb is being freed), we will detach that private eb pointer.
    
    The point here is, we are detaching that eb pointer by calling:
    - ClearPagePrivate()
    - put_page()
    
    The put_page() here is especially confusing, as it's decreasing the ref
    from attach_page_private().  Without knowing that, it looks like the
    put_page() is for the find_or_create_page() call, confusing the reader.
    
    Since we're always modifying page private with attach_page_private() and
    detach_page_private(), the only open-coded detach_page_private() here is
    really confusing.
    
    Fix it by calling detach_page_private().
    Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    fb22e9c4
extent_io.c 160 KB