I'm trying to understand how zfs stores its data on the disk. I was able to understand how to get the ubberblock. From the ubberblock, I get a block pointer. Its type is an objset. So far so good. But when I get the the data pointed by the block pointer, the type I get is dnode. It doesn't make sense, but in all the docs I found it is correct.
I'm a bit lost on that part. Why the pointer block type doesn't match the data pointed?
I don't understand how to get all the objects from the objset.
Thanks for the help.