xfs
[Top] [All Lists]

Re: XFS AG disk layout described on official doc is wrong

To: Jeff Liu <jeff.liu@xxxxxxxxxx>
Subject: Re: XFS AG disk layout described on official doc is wrong
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Fri, 9 Nov 2012 18:36:54 +1100
Cc: xfs@xxxxxxxxxxx
In-reply-to: <509CA70D.6000702@xxxxxxxxxx>
References: <509CA70D.6000702@xxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Fri, Nov 09, 2012 at 02:47:41PM +0800, Jeff Liu wrote:
> 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?

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.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

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