Assume starting one disk write action, the vdev_disk_io_start will be called 
from zio_execute. 

static int vdev_disk_io_start(zio_t *zio)
{
      ......
      bp->b_lblkno = lbtodb(zio->io_offset);
      ......
} 

After scaning over the zfs source, I find the zio->io_offset is only set value 
in zio_create by the parameter offset. 

zio_write calls zio_create with the value 0 for the parameter offset. I can't 
find anywhere else the zio->io_offset being set. 

After the new block born, the correct offset has been filled in bp->blk_dva 
(see metaslab_alloc), when and where the correct value set to zio->io_offset?

Who can tell me?

thanks
-- 
This message posted from opensolaris.org

Reply via email to