[OpenZFS Developer] zio parent and zio children relation.

2013-12-17 Thread Gaurav Mahajan
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.

2013-12-17 Thread George Wilson


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.

2013-12-17 Thread Gaurav Mahajan
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