On Mon, Jan 13, 2014 at 03:07:30PM -0800, Zachary Kotlarek wrote:
> On Jan 13, 2014, at 11:27 AM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
> > So, you need to find the inode number of a directory with a corrupt
> > entry, and dump the inode and any data fork blocks that it belongs
> > to with xfs_db similar to what you have just done.
> Got one. bu is the file that doesnât work:
> bu.inumber = 68719478814
> bu.namelen = 26
> bu.name = "07 - Se\303\261or Macho Solo.m4v"
> bu.tag = 0x130
That looks completely valid. It's a utf-8 encoded directory entry.
It doesn't look like there's any corruption on disk here.
The ls -l output full of ???? usually means the stat of the inode
the dirent pointed to, so that implies that the stat has failed.
So, what does and strace of the 'ls -l' of that directory tell you
about the directory entry that is returned to userspace?
> bleaf.hashval = 0x16d07074
> bleaf.address = 0x26
That's the hash entry in the directory for the name. That may be
wrong, I guess. can you create another file with the same name
in a different directory so we can check that the hash is correct?
> u.bmx = [startoff,startblock,blockcount,extentflag] 0:[0,509696,79700,0]
> Iâm not sure if this the right way to get the related first data block. If I
> did it wrong let me know:
> xfs_db> daddr 509696
fsb 509696, not daddr.