[OpenZFS Developer] zio parent and zio children relation.
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.? 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 developer@open-zfs.org http://lists.open-zfs.org/mailman/listinfo/developer
Re: [OpenZFS Developer] zio parent and zio children relation.
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. - 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 developer@open-zfs.org http://lists.open-zfs.org/mailman/listinfo/developer ___ developer mailing list developer@open-zfs.org http://lists.open-zfs.org/mailman/listinfo/developer
Re: [OpenZFS Developer] zio parent and zio children relation.
Hi George, Thanks for the response..!! On Tue, Dec 17, 2013 at 7:27 PM, George Wilson george.wil...@delphix.comwrote: 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