usr/src/uts/common/fs/zfs/zio.c
changeset 3547 e396e0a440b1
parent 3463 5007f15d5674
child 3668 dc5b9a9208ca
--- a/usr/src/uts/common/fs/zfs/zio.c	Fri Feb 02 15:36:29 2007 -0800
+++ b/usr/src/uts/common/fs/zfs/zio.c	Fri Feb 02 15:36:58 2007 -0800
@@ -435,8 +435,8 @@
 zio_t *
 zio_write(zio_t *pio, spa_t *spa, int checksum, int compress, int ncopies,
     uint64_t txg, blkptr_t *bp, void *data, uint64_t size,
-    zio_done_func_t *done, void *private, int priority, int flags,
-    zbookmark_t *zb)
+    zio_done_func_t *ready, zio_done_func_t *done, void *private, int priority,
+    int flags, zbookmark_t *zb)
 {
 	zio_t *zio;
 
@@ -450,6 +450,8 @@
 	    ZIO_TYPE_WRITE, priority, flags | ZIO_FLAG_USER,
 	    ZIO_STAGE_OPEN, ZIO_WRITE_PIPELINE);
 
+	zio->io_ready = ready;
+
 	zio->io_bookmark = *zb;
 
 	zio->io_logical = zio;
@@ -810,6 +812,9 @@
 {
 	zio_t *pio = zio->io_parent;
 
+	if (zio->io_ready)
+		zio->io_ready(zio);
+
 	if (pio != NULL)
 		zio_notify_parent(zio, ZIO_STAGE_WAIT_CHILDREN_READY,
 		    &pio->io_children_notready);