• Liu Bo's avatar
    Btrfs: snapshot-aware defrag · 38c227d8
    Liu Bo authored
    This comes from one of btrfs's project ideas,
    As we defragment files, we break any sharing from other snapshots.
    The balancing code will preserve the sharing, and defrag needs to grow this
    as well.
    
    Now we're able to fill the blank with this patch, in which we make full use of
    backref walking stuff.
    
    Here is the basic idea,
    o  set the writeback ranges started by defragment with flag EXTENT_DEFRAG
    o  at endio, after we finish updating fs tree, we use backref walking to find
       all parents of the ranges and re-link them with the new COWed file layout by
       adding corresponding backrefs.
    Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
    Signed-off-by: default avatarLiu Bo <bo.li.liu@oracle.com>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    38c227d8
inode.c 231 KB