On 12/18/13 12:33 AM, Gaurav Mahajan wrote:
Hi George,
Thanks for the response..!!
On Tue, Dec 17, 2013 at 7:27 PM, George Wilson
<[email protected] <mailto:[email protected]>> wrote:
On 12/17/13 5:21 AM, Gaurav Mahajan wrote:
Hi all,
I am trying to understand relations of root ZIO and children ZIO.
This is what I have understood.. Please correct me if I'm wrong.
Usually whenever we want to do a series of IO operations like in
sync thread.
We create a root ZIO with zio_root(). Now this root ZIO becomes
parent for every ZIO that we create while syncing the async data
to disk (in dbuf_sync_leaf).
All the child ZIO are issued using zio_nowait()
After issuing all the children ZIO at the end we call zio_wait()
on root ZIO.
So the question that comes in my mind is that after zio_wait for
root ZIO is over, are we guaranteed that all the children ZIO are
complete.?
Yes, the root zio cannot complete until all its children have
completed.
Why do we need the convergence logic then (multiple pass while syncing) ?
Why dsl_pool_sync is called multiple times?
We have the multiple passes since every time you write a block you end
up dirtying some other piece of metadata that must now be written. The
multiple passes allow us to write any metadata that was dirtied by the
previous pass, and so on. Eventually we stop COWing blocks to make sure
that we don't end up in an infinite loop.
I'm asking this because dsl_pool_sync creates root ZIO, which intern
calls the dnode_sync
Now for indirect blocks the root ZIO becomes parent of indirect
block's ZIO.
then indirect blocks ZIO becomes parent for data/leaf block ZIO.
So i guess in one pass only it will write all the dirty data for all
the dirty dnode in an object set.
As you've found the majority of the bulk data is written in sync pass 1.
Subsequent sync passes will deal with the metadata that was changed as a
result of writing all the bulk data.
- George
Please correct me if i'm wrong.
Thanks !!
Gaurav.
- George
complete in sense like block allocation and data write are done
and io_done callback are complete.
I may be wrong with my understanding. Please correct me.
Thanks !!!
Gaurav.
_______________________________________________
developer mailing list
[email protected] <mailto:[email protected]>
http://lists.open-zfs.org/mailman/listinfo/developer
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer