Fix spl version check
[zfs.git] / module / zfs / include / sys / zio_impl.h
index e7503b7..d90bd8b 100644 (file)
@@ -19,7 +19,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -34,104 +34,136 @@ extern "C" {
 #endif
 
 /*
- * I/O Groups: pipeline stage definitions.
+ * zio pipeline stage definitions
  */
-typedef enum zio_stage {
-       ZIO_STAGE_OPEN = 0,                     /* RWFCI */
+enum zio_stage {
+       ZIO_STAGE_OPEN                  = 1 << 0,       /* RWFCI */
 
-       ZIO_STAGE_ISSUE_ASYNC,                  /* -W--- */
+       ZIO_STAGE_READ_BP_INIT          = 1 << 1,       /* R---- */
+       ZIO_STAGE_FREE_BP_INIT          = 1 << 2,       /* --F-- */
+       ZIO_STAGE_ISSUE_ASYNC           = 1 << 3,       /* RWF-- */
+       ZIO_STAGE_WRITE_BP_INIT         = 1 << 4,       /* -W--- */
 
-       ZIO_STAGE_READ_BP_INIT,                 /* R---- */
-       ZIO_STAGE_WRITE_BP_INIT,                /* -W--- */
+       ZIO_STAGE_CHECKSUM_GENERATE     = 1 << 5,       /* -W--- */
 
-       ZIO_STAGE_CHECKSUM_GENERATE,            /* -W--- */
+       ZIO_STAGE_DDT_READ_START        = 1 << 6,       /* R---- */
+       ZIO_STAGE_DDT_READ_DONE         = 1 << 7,       /* R---- */
+       ZIO_STAGE_DDT_WRITE             = 1 << 8,       /* -W--- */
+       ZIO_STAGE_DDT_FREE              = 1 << 9,       /* --F-- */
 
-       ZIO_STAGE_GANG_ASSEMBLE,                /* RWFC- */
-       ZIO_STAGE_GANG_ISSUE,                   /* RWFC- */
+       ZIO_STAGE_GANG_ASSEMBLE         = 1 << 10,      /* RWFC- */
+       ZIO_STAGE_GANG_ISSUE            = 1 << 11,      /* RWFC- */
 
-       ZIO_STAGE_DVA_ALLOCATE,                 /* -W--- */
-       ZIO_STAGE_DVA_FREE,                     /* --F-- */
-       ZIO_STAGE_DVA_CLAIM,                    /* ---C- */
+       ZIO_STAGE_DVA_ALLOCATE          = 1 << 12,      /* -W--- */
+       ZIO_STAGE_DVA_FREE              = 1 << 13,      /* --F-- */
+       ZIO_STAGE_DVA_CLAIM             = 1 << 14,      /* ---C- */
 
-       ZIO_STAGE_READY,                        /* RWFCI */
+       ZIO_STAGE_READY                 = 1 << 15,      /* RWFCI */
 
-       ZIO_STAGE_VDEV_IO_START,                /* RW--I */
-       ZIO_STAGE_VDEV_IO_DONE,                 /* RW--I */
-       ZIO_STAGE_VDEV_IO_ASSESS,               /* RW--I */
+       ZIO_STAGE_VDEV_IO_START         = 1 << 16,      /* RW--I */
+       ZIO_STAGE_VDEV_IO_DONE          = 1 << 17,      /* RW--I */
+       ZIO_STAGE_VDEV_IO_ASSESS        = 1 << 18,      /* RW--I */
 
-       ZIO_STAGE_CHECKSUM_VERIFY,              /* R---- */
+       ZIO_STAGE_CHECKSUM_VERIFY       = 1 << 19,      /* R---- */
 
-       ZIO_STAGE_DONE,                         /* RWFCI */
-       ZIO_STAGES
-} zio_stage_t;
+       ZIO_STAGE_DONE                  = 1 << 20       /* RWFCI */
+};
 
-#define        ZIO_INTERLOCK_STAGES                                    \
-       ((1U << ZIO_STAGE_READY) |                              \
-       (1U << ZIO_STAGE_DONE))
+#define        ZIO_INTERLOCK_STAGES                    \
+       (ZIO_STAGE_READY |                      \
+       ZIO_STAGE_DONE)
 
-#define        ZIO_INTERLOCK_PIPELINE                                  \
+#define        ZIO_INTERLOCK_PIPELINE                  \
        ZIO_INTERLOCK_STAGES
 
-#define        ZIO_VDEV_IO_STAGES                                      \
-       ((1U << ZIO_STAGE_VDEV_IO_START) |                      \
-       (1U << ZIO_STAGE_VDEV_IO_DONE) |                        \
-       (1U << ZIO_STAGE_VDEV_IO_ASSESS))
+#define        ZIO_VDEV_IO_STAGES                      \
+       (ZIO_STAGE_VDEV_IO_START |              \
+       ZIO_STAGE_VDEV_IO_DONE |                \
+       ZIO_STAGE_VDEV_IO_ASSESS)
 
-#define        ZIO_VDEV_CHILD_PIPELINE                                 \
-       (ZIO_VDEV_IO_STAGES |                                   \
-       (1U << ZIO_STAGE_DONE))
+#define        ZIO_VDEV_CHILD_PIPELINE                 \
+       (ZIO_VDEV_IO_STAGES |                   \
+       ZIO_STAGE_DONE)
 
-#define        ZIO_READ_COMMON_STAGES                                  \
-       (ZIO_INTERLOCK_STAGES |                                 \
-       ZIO_VDEV_IO_STAGES |                                    \
-       (1U << ZIO_STAGE_CHECKSUM_VERIFY))
+#define        ZIO_READ_COMMON_STAGES                  \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_VDEV_IO_STAGES |                    \
+       ZIO_STAGE_CHECKSUM_VERIFY)
 
-#define        ZIO_READ_PHYS_PIPELINE                                  \
+#define        ZIO_READ_PHYS_PIPELINE                  \
        ZIO_READ_COMMON_STAGES
 
-#define        ZIO_READ_PIPELINE                                       \
-       (ZIO_READ_COMMON_STAGES |                               \
-       (1U << ZIO_STAGE_READ_BP_INIT))
+#define        ZIO_READ_PIPELINE                       \
+       (ZIO_READ_COMMON_STAGES |               \
+       ZIO_STAGE_READ_BP_INIT)
 
-#define        ZIO_WRITE_COMMON_STAGES                                 \
-       (ZIO_INTERLOCK_STAGES |                                 \
-       ZIO_VDEV_IO_STAGES |                                    \
-       (1U << ZIO_STAGE_ISSUE_ASYNC) |                         \
-       (1U << ZIO_STAGE_CHECKSUM_GENERATE))
-
-#define        ZIO_WRITE_PHYS_PIPELINE                                 \
-       ZIO_WRITE_COMMON_STAGES
-
-#define        ZIO_REWRITE_PIPELINE                                    \
-       (ZIO_WRITE_COMMON_STAGES |                              \
-       (1U << ZIO_STAGE_WRITE_BP_INIT))
-
-#define        ZIO_WRITE_PIPELINE                                      \
-       (ZIO_WRITE_COMMON_STAGES |                              \
-       (1U << ZIO_STAGE_WRITE_BP_INIT) |                       \
-       (1U << ZIO_STAGE_DVA_ALLOCATE))
-
-#define        ZIO_GANG_STAGES                                         \
-       ((1U << ZIO_STAGE_GANG_ASSEMBLE) |                      \
-       (1U << ZIO_STAGE_GANG_ISSUE))
+#define        ZIO_DDT_CHILD_READ_PIPELINE             \
+       ZIO_READ_COMMON_STAGES
 
-#define        ZIO_FREE_PIPELINE                                       \
-       (ZIO_INTERLOCK_STAGES |                                 \
-       (1U << ZIO_STAGE_DVA_FREE))
+#define        ZIO_DDT_READ_PIPELINE                   \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_READ_BP_INIT |                \
+       ZIO_STAGE_DDT_READ_START |              \
+       ZIO_STAGE_DDT_READ_DONE)
 
-#define        ZIO_CLAIM_PIPELINE                                      \
-       (ZIO_INTERLOCK_STAGES |                                 \
-       (1U << ZIO_STAGE_DVA_CLAIM))
+#define        ZIO_WRITE_COMMON_STAGES                 \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_VDEV_IO_STAGES |                    \
+       ZIO_STAGE_ISSUE_ASYNC |                 \
+       ZIO_STAGE_CHECKSUM_GENERATE)
 
-#define        ZIO_IOCTL_PIPELINE                                      \
-       (ZIO_INTERLOCK_STAGES |                                 \
-       (1U << ZIO_STAGE_VDEV_IO_START) |                       \
-       (1U << ZIO_STAGE_VDEV_IO_ASSESS))
+#define        ZIO_WRITE_PHYS_PIPELINE                 \
+       ZIO_WRITE_COMMON_STAGES
 
-#define        ZIO_CONFIG_LOCK_BLOCKING_STAGES                         \
-       ((1U << ZIO_STAGE_VDEV_IO_START) |                      \
-       (1U << ZIO_STAGE_DVA_ALLOCATE) |                        \
-       (1U << ZIO_STAGE_DVA_CLAIM))
+#define        ZIO_REWRITE_PIPELINE                    \
+       (ZIO_WRITE_COMMON_STAGES |              \
+       ZIO_STAGE_WRITE_BP_INIT)
+
+#define        ZIO_WRITE_PIPELINE                      \
+       (ZIO_WRITE_COMMON_STAGES |              \
+       ZIO_STAGE_WRITE_BP_INIT |               \
+       ZIO_STAGE_DVA_ALLOCATE)
+
+#define        ZIO_DDT_CHILD_WRITE_PIPELINE            \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_VDEV_IO_STAGES |                    \
+       ZIO_STAGE_DVA_ALLOCATE)
+
+#define        ZIO_DDT_WRITE_PIPELINE                  \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_ISSUE_ASYNC |                 \
+       ZIO_STAGE_WRITE_BP_INIT |               \
+       ZIO_STAGE_CHECKSUM_GENERATE |           \
+       ZIO_STAGE_DDT_WRITE)
+
+#define        ZIO_GANG_STAGES                         \
+       (ZIO_STAGE_GANG_ASSEMBLE |              \
+       ZIO_STAGE_GANG_ISSUE)
+
+#define        ZIO_FREE_PIPELINE                       \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_FREE_BP_INIT |                \
+       ZIO_STAGE_DVA_FREE)
+
+#define        ZIO_DDT_FREE_PIPELINE                   \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_FREE_BP_INIT |                \
+       ZIO_STAGE_ISSUE_ASYNC |                 \
+       ZIO_STAGE_DDT_FREE)
+
+#define        ZIO_CLAIM_PIPELINE                      \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_DVA_CLAIM)
+
+#define        ZIO_IOCTL_PIPELINE                      \
+       (ZIO_INTERLOCK_STAGES |                 \
+       ZIO_STAGE_VDEV_IO_START |               \
+       ZIO_STAGE_VDEV_IO_ASSESS)
+
+#define        ZIO_BLOCKING_STAGES                     \
+       (ZIO_STAGE_DVA_ALLOCATE |               \
+       ZIO_STAGE_DVA_CLAIM |                   \
+       ZIO_STAGE_VDEV_IO_START)
 
 extern void zio_inject_init(void);
 extern void zio_inject_fini(void);