xfs
[Top] [All Lists]

Re: Assert in xfs_repair (Phase 7) and other xfs_restore problems

To: xfs@xxxxxxxxxxx
Subject: Re: Assert in xfs_repair (Phase 7) and other xfs_restore problems
From: Jon Peatfield <J.S.Peatfield@xxxxxxxxxxxxxxx>
Date: Mon, 23 Jul 2012 18:47:43 +0100 (BST)
Cc: Jon Peatfield <J.S.Peatfield@xxxxxxxxxxxxxxx>
In-reply-to: <alpine.LRH.2.02.1207202022300.7993@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <alpine.LRH.2.02.1207202022300.7993@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
User-agent: Alpine 2.02 (LRH 1266 2009-07-14)
Just askign the last question again in case the earlier summary data put people off reading it...


On Fri, 20 Jul 2012, Jon Peatfield wrote:
...
Anyway all of the later runs now end with:

...
disconnected dir inode 3892327224, moving to lost+found
disconnected dir inode 3892327225, moving to lost+found
disconnected dir inode 3892327226, moving to lost+found
disconnected dir inode 3892327227, moving to lost+found
disconnected dir inode 3892327229, moving to lost+found
disconnected dir inode 3892327231, moving to lost+found
Phase 7 - verify and correct link counts...
resetting inode 256 nlinks from 8 to 5
resetting inode 261 nlinks from 2 to 13006001
xfs_repair: phase7.c:47: set_nlinks: Assertion `fs_inode_nlink' failed.


Now in phase7.c it asserts if nlinks is over 65536 which 13006001 clearly is:

           do_warn(_("resetting inode %" PRIu64 " nlinks from %u to %u\n"),
                   ino, dinoc->di_nlink, nrefs);

           if (dinoc->di_version == 1 && nrefs > XFS_MAXLINK_1)  {
                   ASSERT(fs_inode_nlink);
                   do_warn(
_("nlinks %u will overflow v1 ino, ino %" PRIu64 " will be converted to version 2\n"),
                           nrefs, ino);

           }
           dinoc->di_nlink = nrefs;

...
Have I completely destroyed this filesystem or is there any hope of getting any of the files back ? (all the error messages I have seen were about problems with the directories so some or all of the files and structures may still be present)...

If it is destroyed (it only contained backup trees so I can live with it being lost), what should I have done differently? ie what was my first mistake ?

I'm hoping to at least learn something from what went wrong.
...

So can I get xfs_repair to either put the ~13M disconnected files into lost+found or somewhere else ? Does it matter that lost+found does not already exist?

 -- Jon

<Prev in Thread] Current Thread [Next in Thread>