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