Skip to contentSkip to conversation

XFS AG disk layout described on official doc is wrong

DISCUSSION Jeff Liu 2 participants 3 messages Nov 9, 2012

lore
Share & tools
lore

Jeff Liu

author
#0 lore raw

Hello,

I observed that there is an issue on our official DOC for AG disk layout, which can be found at:
http://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/Allocation_Groups.html

It shows that the IBT block is followed by the block where AGFL sector resides. However, it should be followed by the
CNT block according to my debug, like below:

-------------------------------
superblock
AG free block info
AG inode B+tree info
AG internal free list
-------------------------------
Root of free space B+tree
B+tree key is block number
-------------------------------
Root of free space B+tree
B+tree key is block count
--------------------------------
Root of inodes B+tree
--------------------------------

Maybe the DOC is old, or am I missing anything? If not, can we correct it?

Thanks,
-Jeff

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

#1 lore raw
Quoted 25 lines · Jeff Liu

Hello,

I observed that there is an issue on our official DOC for AG disk layout, which can be found at:
http://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/Allocation_Groups.html

It shows that the IBT block is followed by the block where AGFL sector resides. However, it should be followed by the
CNT block according to my debug, like below:

-------------------------------
superblock
AG free block info
AG inode B+tree info
AG internal free list
-------------------------------
Root of free space B+tree
B+tree key is block number
-------------------------------
Root of free space B+tree
B+tree key is block count
--------------------------------
Root of inodes B+tree
--------------------------------

Quoted 1 line

Maybe the DOC is old, or am I missing anything? If not, can we correct it?

The btree root blocks are dynamic. mkfs.xfs puts them in a fixed place, just like growfs does, but the moment you split a root block, it moves from that location. Hence the only way to reliably find the root btree block is to look up the point in the AGF/AGI, and that's what the document shows. IOWs, the ordering in the document is not important - the linkage is - as the root blocks can end up *anywhere* in the AG.

e.g:

$ sudo xfs_db -r -c "agf 0" -c p /dev/vda
magicnum = 0x58414746
versionnum = 1
seqno = 0
length = 262144
bnoroot = 596
cntroot = 1003
bnolevel = 2
cntlevel = 2
....

Cheers,

Dave.

Signature · 7 lines
Dave Chinner
[email protected]

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
author
#2 lore raw
Quoted 38 lines · Dave Chinner
Quoted 25 lines · Jeff Liu

Hello,

I observed that there is an issue on our official DOC for AG disk layout, which can be found at:
http://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/Allocation_Groups.html

It shows that the IBT block is followed by the block where AGFL sector resides. However, it should be followed by the
CNT block according to my debug, like below:

-------------------------------
superblock
AG free block info
AG inode B+tree info
AG internal free list
-------------------------------
Root of free space B+tree
B+tree key is block number
-------------------------------
Root of free space B+tree
B+tree key is block count
--------------------------------
Root of inodes B+tree
--------------------------------

Quoted 1 line

Maybe the DOC is old, or am I missing anything? If not, can we correct it?

The btree root blocks are dynamic. mkfs.xfs puts them in a fixed place, just like growfs does, but the moment you split a root block, it moves from that location. Hence the only way to reliably find the root btree block is to look up the point in the AGF/AGI, and that's what the document shows. IOWs, the ordering in the document is not important - the linkage is - as the root blocks can end up *anywhere* in the AG.

e.g:

Quoted 10 lines
$ sudo xfs_db -r -c "agf 0" -c p /dev/vda
magicnum = 0x58414746
versionnum = 1
seqno = 0
length = 262144
bnoroot = 596
cntroot = 1003
bnolevel = 2
cntlevel = 2
....

Ah, thanks for your quick response, now I understood. :)

Regards,
-Jeff

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs