usr/src/uts/common/fs/zfs/zio.c
changeset 4469 7d15cd6c3854
parent 4451 24fbf2d7a5d7
child 4527 5d5b6ba91b17
--- a/usr/src/uts/common/fs/zfs/zio.c	Wed Jun 13 15:01:11 2007 -0700
+++ b/usr/src/uts/common/fs/zfs/zio.c	Wed Jun 13 16:23:58 2007 -0700
@@ -1810,3 +1810,29 @@
 
 	spa_config_exit(spa, FTAG);
 }
+
+/*
+ * start an async flush of the write cache for this vdev
+ */
+void
+zio_flush_vdev(spa_t *spa, uint64_t vdev, zio_t **zio)
+{
+	vdev_t *vd;
+
+	/*
+	 * Lock out configuration changes.
+	 */
+	spa_config_enter(spa, RW_READER, FTAG);
+
+	if (*zio == NULL)
+		*zio = zio_root(spa, NULL, NULL, ZIO_FLAG_CANFAIL);
+
+	vd = vdev_lookup_top(spa, vdev);
+	ASSERT(vd);
+
+	(void) zio_nowait(zio_ioctl(*zio, spa, vd, DKIOCFLUSHWRITECACHE,
+	    NULL, NULL, ZIO_PRIORITY_NOW,
+	    ZIO_FLAG_CANFAIL | ZIO_FLAG_DONT_RETRY));
+
+	spa_config_exit(spa, FTAG);
+}