On Fri, Mar 14, 2014 at 02:51:22PM -0400, Josef Bacik wrote:
> On 03/13/2014 06:16 PM, Hugo Mills wrote:
> >On Thu, Mar 13, 2014 at 03:42:13PM -0400, Josef Bacik wrote:
> >>Lets try this again.  We can deadlock the box if we send on a box and try to
> >>write onto the same fs with the app that is trying to listen to the send 
> >>pipe.
> >>This is because the writer could get stuck waiting for a transaction commit
> >>which is being blocked by the send.  So fix this by making sure looking at 
> >>the
> >>commit roots is always going to be consistent.  We do this by keeping track 
> >>of
> >>which roots need to have their commit roots swapped during commit, and then
> >>taking the commit_root_sem and swapping them all at once.  Then make sure we
> >>take a read lock on the commit_root_sem in cases where we search the commit 
> >>root
> >>to make sure we're always looking at a consistent view of the commit roots.
> >>Previously we had problems with this because we would swap a fs tree commit 
> >>root
> >>and then swap the extent tree commit root independently which would cause 
> >>the
> >>backref walking code to screw up sometimes.  With this patch we no longer
> >>deadlock and pass all the weird send/receive corner cases.  Thanks,
> >
> >    There's something still going on here. I managed to get about twice
> >as far through my test as I had before, but I again got an "unexpected
> >EOF in stream", with btrfs send returning 1. As before, I have this in
> >syslog:
> >
> >Mar 13 22:09:12 s_src@amelia kernel: BTRFS error (device sda2): did not find 
> >backref in send_root. inode=1786631, offset=825257984, disk_byte=36504023040 
> >found extent=36504023040\x0a
> >
> 
> I just noticed that the offset you have there is freaking gigantic,
> like 700mb, which is way larger than what an extent should be.  Here
> is a newer debug patch, just chuck the old on and put this instead
> and re-run
> 
> http://paste.fedoraproject.org/85486/39482301

   That last run, with the above patch, failed again, at approximately
the same place again. The only output in dmesg is:

[ 6488.168469] BTRFS error (device sda2): did not find backref in send_root. 
inode=1786631, offset=825257984, disk_byte=36504023040 found 
extent=36504023040, len=1294336

as before. Definitely no kernel WARN, no backtraces.

   Hugo.

-- 
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
  PGP key: 65E74AC0 from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
            --- You're never alone with a rubber duck... ---             

Attachment: signature.asc
Description: Digital signature

Reply via email to