xfs
[Top] [All Lists]

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

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: XFS AG disk layout described on official doc is wrong
From: Jeff Liu <jeff.liu@xxxxxxxxxx>
Date: Fri, 09 Nov 2012 15:45:58 +0800
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20121109073654.GC6434@dastard>
References: <509CA70D.6000702@xxxxxxxxxx> <20121109073654.GC6434@dastard>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120912 Thunderbird/15.0.1
On 11/09/2012 03:36 PM, Dave Chinner wrote:
> 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
> ....
Ah, thanks for your quick response, now I understood. :)

Regards,
-Jeff

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