Assert in xfs_repair (Phase 7) and other xfs_restore problems
Jon Peatfield
J.S.Peatfield at damtp.cam.ac.uk
Mon Jul 23 12:47:43 CDT 2012
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
More information about the xfs
mailing list