| To: | Eric Sandeen <sandeen@xxxxxxxxxxx> |
|---|---|
| Subject: | Re: How to find the inodes in XFS |
| From: | Felipe Monteiro de Carvalho <felipemonteiro.carvalho@xxxxxxxxx> |
| Date: | Sun, 27 Apr 2014 12:53:36 -0300 |
| Cc: | xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| Dkim-signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=txPEHIJ+vddLXAZ4sW3QjGnQz2o3jdPRQVotCpXlXCc=; b=PBbct7K8hMM4/uWmfy2+XWhYi+pICfFk1UllQky4pDlVXw2utRr25tYu7JwuFcKl9d L3J1ZPyj/KXOZ4QPNFrxuMs3fokL/MQor4fda6PgzyHVo7nkwk2A0rSZkXsSOos5+N5+ FvOTq4O7KEEoSd/UDyrxVyzDz6asqE7kgePianUKgtbbb2hURYQ01cWn0UkEOb/4zBoQ B7ohSr85fQW6vEKXTISlQgVBFb8K/MgXyOZTZtA3ejPnxqm9UJcIjwPPtULRQ6IwDmxJ 0vqk5GMHIhT2GLhVMJUQHZYLsY5WbI8VI13GPNfj9GH41SaPKUnvwgrtUpwtAFNaCOlu LzOQ== |
| In-reply-to: | <CACyNnZPzJGCQf5FYm+Oqkw5U3Ggm8wQd5LKC5Jnwiyksa-K1OA@xxxxxxxxxxxxxx> |
| References: | <CACyNnZMtP87y6VHum+J4xKEZqaYp2YERVnt3YuaCmeiZBmMTzQ@xxxxxxxxxxxxxx> <5359912A.70603@xxxxxxxxxxx> <CACyNnZPV89C87DggE4fiJX+_r3zh1hKhcX3ExmXRzpLLhWJ6CQ@xxxxxxxxxxxxxx> <535AE19D.8@xxxxxxxxxxx> <CACyNnZPzJGCQf5FYm+Oqkw5U3Ggm8wQd5LKC5Jnwiyksa-K1OA@xxxxxxxxxxxxxx> |
Oh, well, ...now my code works great for low inode numbers, but it doesn't work at all for high inode numbers. =) If inode is the root one 0x80 or similar small numbers which as 0x83 it will map correctly to the block 8, which means position 0x8000 + internal offset inside the block But in high inodes, for example 0x204B87 and 0x204B80 it will split the inode number like this: AG=2 Block inside AG Nr=0x4B8 And since XFS_INO_TO_FSB just recombines back together the parts: #define XFS_INO_TO_FSB(mp,i) \ XFS_AGB_TO_FSB(mp, XFS_INO_TO_AGNO(mp,i), XFS_INO_TO_AGBNO(mp,i)) #define XFS_AGB_TO_FSB(mp,agno,agbno) \ (((xfs_fsblock_t)(agno) << (mp)->m_sb.sb_agblklog) | (agbno)) I get as the result from XFS_INO_TO_FSB 0x204B8, which would mean position 0x204B8000, but this is a wrong position =( I opened the partition with a hex viewer and the correct position is block 0x1521A which means position 0x1521A000 + offset inside block My superblock has these values: XFS_INO_AGINO_BITS = mp^.m_agino_log = 20 XFS_INO_OFFSET_BITS= m_sb^.sb_inopblog = 4 XFS_INO_AGBNO_BITS = m_sb^.sb_agblklog = 16 XFS_INO_MASK = FFFF sb_agcount = 4 Any ideas? Maybe my flaw is that to get the disk position I simply multiply the block number by the size of a block ... I tryed to use XFS_FSB_TO_DADDR instead but it gives 64 for block nr 8, which doesn't make much sense, I'd expect 0x8000 thanks! -- Felipe Monteiro de Carvalho |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | China tyre wheel, eastle |
|---|---|
| Next by Date: | Re: How to find the inodes in XFS, Eric Sandeen |
| Previous by Thread: | Re: How to find the inodes in XFS, Felipe Monteiro de Carvalho |
| Next by Thread: | Re: How to find the inodes in XFS, Eric Sandeen |
| Indexes: | [Date] [Thread] [Top] [All Lists] |