]> git.karo-electronics.de Git - karo-tx-linux.git/commit
Btrfs: snapshot-aware defrag
authorLiu Bo <bo.li.liu@oracle.com>
Thu, 9 Aug 2012 04:04:33 +0000 (12:04 +0800)
committerChris Mason <chris.mason@fusionio.com>
Mon, 1 Oct 2012 19:19:30 +0000 (15:19 -0400)
commit8a98691e8f68f3c13b61773ee42df308e8aa9597
treebf045d1fb34c96516195b2d1f94580d1088f4cee
parent6d6c6b567f91e2f507bf6da8ebca76b0cfc55371
Btrfs: snapshot-aware defrag

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.

Originally patch by Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
fs/btrfs/inode.c