Thread (14 messages) 14 messages, 4 authors, 2012-10-08

Re: [PATCH 2/2 v3] Btrfs: snapshot-aware defrag

From: Liu Bo <hidden>
Date: 2012-10-08 12:18:48

On 10/03/2012 10:02 PM, Chris Mason wrote:
On Tue, Sep 25, 2012 at 07:07:53PM -0600, Liu Bo wrote:
quoted
On 09/26/2012 01:39 AM, Mitch Harder wrote:
quoted
On Mon, Sep 17, 2012 at 4:58 AM, Liu Bo [off-list ref] wrote:
quoted
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 [off-list ref]
Signed-off-by: Liu Bo <redacted>
I'm hitting the WARN_ON in record_extent_backrefs() indicating a
problem with the return value from iterate_inodes_from_logical().
Me too.  It triggers reliably with mount -o autodefrag, and then crashes
a in the next function ;)

-chris
Hi Chris, Mitch,

I'm afraid that I may need a little more time to fix all bugs in it because there seems to be
some backref walking bugs mixed in, and at least 4 different crashes make it harder to address bugs.

I use an 1G random write fio job running in background, following by creating 20 snapshots in background,
and mount -o autodefrag.

So if your crash is quite stable in one place, please let me know the steps.

thanks,
liubo

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help