Hi George,

Thanks for the response..!!

On Tue, Dec 17, 2013 at 7:27 PM, George Wilson <george.wil...@delphix.com>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?

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.

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 
> listdeveloper@open-zfs.orghttp://lists.open-zfs.org/mailman/listinfo/developer
>
>
>
_______________________________________________
developer mailing list
developer@open-zfs.org
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to