Hello,

Do the logical block id-s of a given dnode form a single id space, or are they 
layered per level?

In other words, do all blocks, regardless of  their level belong to the same id 
space 0..n
or is each level assigned its own set ob block id-s 0..n?

I am guessing it is a single id space per dnode, but I notice many of the block traversal primitives take both the id and the level.


Logically, from the point of view of a 'client', when you refer to a
block of a dnode, it is a single id space, e.g. dbuf_hold(). However, it
is implemented  in a tree like structure which gives rise
to multiple levels with each level having its own set of ids e.g. dbuf_impl_hold(..., level = 0, blkid)->dbuf_findbp()->
dbuf_hold_impl(...,level=1, blkid >> shift,...) -> ...

-- Bhaskar
_______________________________________________
zfs-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-code

Reply via email to