summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/zfs/sys/zio.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/fs/zfs/sys/zio.h')
-rw-r--r--usr/src/uts/common/fs/zfs/sys/zio.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/zfs/sys/zio.h b/usr/src/uts/common/fs/zfs/sys/zio.h
index d03106b942..7592614d6d 100644
--- a/usr/src/uts/common/fs/zfs/sys/zio.h
+++ b/usr/src/uts/common/fs/zfs/sys/zio.h
@@ -394,8 +394,14 @@ typedef int zio_pipe_stage_t(zio_t *zio);
* the reexecute flags are protected by io_lock, modifiable by children,
* and always propagated -- even when ZIO_FLAG_DONT_PROPAGATE is set.
*/
-#define ZIO_REEXECUTE_NOW 0x01
-#define ZIO_REEXECUTE_SUSPEND 0x02
+#define ZIO_REEXECUTE_NOW 0x01
+#define ZIO_REEXECUTE_SUSPEND 0x02
+#define ZIO_REEXECUTE_NO_SUSPEND 0x04
+
+#define ZIO_SHOULD_REEXECUTE(x) \
+ ((x)->io_reexecute & ZIO_REEXECUTE_NOW || \
+ ((x)->io_reexecute & ZIO_REEXECUTE_SUSPEND && \
+ (((x)->io_reexecute & ZIO_REEXECUTE_NO_SUSPEND) == 0)))
/*
* The io_trim flags are used to specify the type of TRIM to perform. They
@@ -465,6 +471,7 @@ struct zio {
hrtime_t io_timestamp;
hrtime_t io_queued_timestamp;
hrtime_t io_target_timestamp;
+ hrtime_t io_dispatched; /* time I/O was dispatched to disk */
hrtime_t io_delta; /* vdev queue service delta */
hrtime_t io_delay; /* Device access time (disk or */
/* file). */
@@ -500,6 +507,7 @@ struct zio {
zio_cksum_report_t *io_cksum_report;
uint64_t io_ena;
+ zoneid_t io_zoneid; /* zone which originated this I/O */
/* Taskq dispatching state */
taskq_ent_t io_tqent;
};