usr/src/uts/common/fs/zfs/zio.c
changeset 4634 39bfb9e90d34
parent 4527 5d5b6ba91b17
child 4831 41ec732c6d9f
--- a/usr/src/uts/common/fs/zfs/zio.c	Wed Jul 11 16:05:26 2007 -0700
+++ b/usr/src/uts/common/fs/zfs/zio.c	Wed Jul 11 16:37:00 2007 -0700
@@ -314,10 +314,14 @@
 	zio->io_parent = pio;
 	zio->io_spa = spa;
 	zio->io_txg = txg;
+	zio->io_flags = flags;
 	if (bp != NULL) {
 		zio->io_bp = bp;
 		zio->io_bp_copy = *bp;
 		zio->io_bp_orig = *bp;
+		if (dmu_ot[BP_GET_TYPE(bp)].ot_metadata ||
+		    BP_GET_LEVEL(bp) != 0)
+			zio->io_flags |= ZIO_FLAG_METADATA;
 	}
 	zio->io_done = done;
 	zio->io_private = private;
@@ -327,7 +331,8 @@
 	zio->io_pipeline = pipeline;
 	zio->io_async_stages = ZIO_ASYNC_PIPELINE_STAGES;
 	zio->io_timestamp = lbolt64;
-	zio->io_flags = flags;
+	if (pio != NULL)
+		zio->io_flags |= (pio->io_flags & ZIO_FLAG_METADATA);
 	mutex_init(&zio->io_lock, NULL, MUTEX_DEFAULT, NULL);
 	zio_push_transform(zio, data, size, size);