zio: update ZIO type x stage documentation

- add column for TRIM ZIOs
- remove R from ZIO_STAGE_ISSUE_ASYNC, never happened
- remove I from ZIO_STAGE_VDEV_IO_DONE, never happened

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #15959
This commit is contained in:
Rob N 2024-03-22 06:10:04 +11:00 committed by GitHub
parent c9d8f6c59a
commit 5c4a4f82c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 58 additions and 55 deletions

View File

@ -25,6 +25,7 @@
/* /*
* Copyright (c) 2012, 2015 by Delphix. All rights reserved. * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2024, Klara Inc.
*/ */
#ifndef _ZIO_IMPL_H #ifndef _ZIO_IMPL_H
@ -39,7 +40,7 @@ extern "C" {
* *
* The ZFS I/O pipeline is comprised of various stages which are defined * The ZFS I/O pipeline is comprised of various stages which are defined
* in the zio_stage enum below. The individual stages are used to construct * in the zio_stage enum below. The individual stages are used to construct
* these basic I/O operations: Read, Write, Free, Claim, and Ioctl. * these basic I/O operations: Read, Write, Free, Claim, Ioctl and Trim.
* *
* I/O operations: (XXX - provide detail for each of the operations) * I/O operations: (XXX - provide detail for each of the operations)
* *
@ -48,6 +49,7 @@ extern "C" {
* Free: * Free:
* Claim: * Claim:
* Ioctl: * Ioctl:
* Trim:
* *
* Although the most common pipeline are used by the basic I/O operations * Although the most common pipeline are used by the basic I/O operations
* above, there are some helper pipelines (one could consider them * above, there are some helper pipelines (one could consider them
@ -120,43 +122,43 @@ extern "C" {
* zio pipeline stage definitions * zio pipeline stage definitions
*/ */
enum zio_stage { enum zio_stage {
ZIO_STAGE_OPEN = 1 << 0, /* RWFCI */ ZIO_STAGE_OPEN = 1 << 0, /* RWFCIT */
ZIO_STAGE_READ_BP_INIT = 1 << 1, /* R---- */ ZIO_STAGE_READ_BP_INIT = 1 << 1, /* R----- */
ZIO_STAGE_WRITE_BP_INIT = 1 << 2, /* -W--- */ ZIO_STAGE_WRITE_BP_INIT = 1 << 2, /* -W---- */
ZIO_STAGE_FREE_BP_INIT = 1 << 3, /* --F-- */ ZIO_STAGE_FREE_BP_INIT = 1 << 3, /* --F--- */
ZIO_STAGE_ISSUE_ASYNC = 1 << 4, /* RWF-- */ ZIO_STAGE_ISSUE_ASYNC = 1 << 4, /* -WF--T */
ZIO_STAGE_WRITE_COMPRESS = 1 << 5, /* -W--- */ ZIO_STAGE_WRITE_COMPRESS = 1 << 5, /* -W---- */
ZIO_STAGE_ENCRYPT = 1 << 6, /* -W--- */ ZIO_STAGE_ENCRYPT = 1 << 6, /* -W---- */
ZIO_STAGE_CHECKSUM_GENERATE = 1 << 7, /* -W--- */ ZIO_STAGE_CHECKSUM_GENERATE = 1 << 7, /* -W---- */
ZIO_STAGE_NOP_WRITE = 1 << 8, /* -W--- */ ZIO_STAGE_NOP_WRITE = 1 << 8, /* -W---- */
ZIO_STAGE_BRT_FREE = 1 << 9, /* --F-- */ ZIO_STAGE_BRT_FREE = 1 << 9, /* --F--- */
ZIO_STAGE_DDT_READ_START = 1 << 10, /* R---- */ ZIO_STAGE_DDT_READ_START = 1 << 10, /* R----- */
ZIO_STAGE_DDT_READ_DONE = 1 << 11, /* R---- */ ZIO_STAGE_DDT_READ_DONE = 1 << 11, /* R----- */
ZIO_STAGE_DDT_WRITE = 1 << 12, /* -W--- */ ZIO_STAGE_DDT_WRITE = 1 << 12, /* -W---- */
ZIO_STAGE_DDT_FREE = 1 << 13, /* --F-- */ ZIO_STAGE_DDT_FREE = 1 << 13, /* --F--- */
ZIO_STAGE_GANG_ASSEMBLE = 1 << 14, /* RWFC- */ ZIO_STAGE_GANG_ASSEMBLE = 1 << 14, /* RWFC-- */
ZIO_STAGE_GANG_ISSUE = 1 << 15, /* RWFC- */ ZIO_STAGE_GANG_ISSUE = 1 << 15, /* RWFC-- */
ZIO_STAGE_DVA_THROTTLE = 1 << 16, /* -W--- */ ZIO_STAGE_DVA_THROTTLE = 1 << 16, /* -W---- */
ZIO_STAGE_DVA_ALLOCATE = 1 << 17, /* -W--- */ ZIO_STAGE_DVA_ALLOCATE = 1 << 17, /* -W---- */
ZIO_STAGE_DVA_FREE = 1 << 18, /* --F-- */ ZIO_STAGE_DVA_FREE = 1 << 18, /* --F--- */
ZIO_STAGE_DVA_CLAIM = 1 << 19, /* ---C- */ ZIO_STAGE_DVA_CLAIM = 1 << 19, /* ---C-- */
ZIO_STAGE_READY = 1 << 20, /* RWFCI */ ZIO_STAGE_READY = 1 << 20, /* RWFCIT */
ZIO_STAGE_VDEV_IO_START = 1 << 21, /* RW--I */ ZIO_STAGE_VDEV_IO_START = 1 << 21, /* RW--IT */
ZIO_STAGE_VDEV_IO_DONE = 1 << 22, /* RW--I */ ZIO_STAGE_VDEV_IO_DONE = 1 << 22, /* RW---T */
ZIO_STAGE_VDEV_IO_ASSESS = 1 << 23, /* RW--I */ ZIO_STAGE_VDEV_IO_ASSESS = 1 << 23, /* RW--IT */
ZIO_STAGE_CHECKSUM_VERIFY = 1 << 24, /* R---- */ ZIO_STAGE_CHECKSUM_VERIFY = 1 << 24, /* R----- */
ZIO_STAGE_DONE = 1 << 25 /* RWFCI */ ZIO_STAGE_DONE = 1 << 25 /* RWFCIT */
}; };
#define ZIO_ROOT_PIPELINE \ #define ZIO_ROOT_PIPELINE \

View File

@ -25,8 +25,9 @@
.\" Copyright (c) 2018 George Melikov. All Rights Reserved. .\" Copyright (c) 2018 George Melikov. All Rights Reserved.
.\" Copyright 2017 Nexenta Systems, Inc. .\" Copyright 2017 Nexenta Systems, Inc.
.\" Copyright (c) 2017 Open-E, Inc. All Rights Reserved. .\" Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
.\" Copyright (c) 2024, Klara Inc.
.\" .\"
.Dd July 11, 2023 .Dd February 28, 2024
.Dt ZPOOL-EVENTS 8 .Dt ZPOOL-EVENTS 8
.Os .Os
. .
@ -363,7 +364,7 @@ that is, the bits set in the good data which are cleared in the bad data.
.Sh I/O STAGES .Sh I/O STAGES
The ZFS I/O pipeline is comprised of various stages which are defined below. The ZFS I/O pipeline is comprised of various stages which are defined below.
The individual stages are used to construct these basic I/O The individual stages are used to construct these basic I/O
operations: Read, Write, Free, Claim, and Ioctl. operations: Read, Write, Free, Claim, Ioctl and Trim.
These stages may be These stages may be
set on an event to describe the life cycle of a given I/O request. set on an event to describe the life cycle of a given I/O request.
.Pp .Pp
@ -372,43 +373,43 @@ tab(:);
l l l . l l l .
Stage:Bit Mask:Operations Stage:Bit Mask:Operations
_:_:_ _:_:_
ZIO_STAGE_OPEN:0x00000001:RWFCI ZIO_STAGE_OPEN:0x00000001:RWFCIT
ZIO_STAGE_READ_BP_INIT:0x00000002:R---- ZIO_STAGE_READ_BP_INIT:0x00000002:R-----
ZIO_STAGE_WRITE_BP_INIT:0x00000004:-W--- ZIO_STAGE_WRITE_BP_INIT:0x00000004:-W----
ZIO_STAGE_FREE_BP_INIT:0x00000008:--F-- ZIO_STAGE_FREE_BP_INIT:0x00000008:--F---
ZIO_STAGE_ISSUE_ASYNC:0x00000010:RWF-- ZIO_STAGE_ISSUE_ASYNC:0x00000010:-WF--T
ZIO_STAGE_WRITE_COMPRESS:0x00000020:-W--- ZIO_STAGE_WRITE_COMPRESS:0x00000020:-W----
ZIO_STAGE_ENCRYPT:0x00000040:-W--- ZIO_STAGE_ENCRYPT:0x00000040:-W----
ZIO_STAGE_CHECKSUM_GENERATE:0x00000080:-W--- ZIO_STAGE_CHECKSUM_GENERATE:0x00000080:-W----
ZIO_STAGE_NOP_WRITE:0x00000100:-W--- ZIO_STAGE_NOP_WRITE:0x00000100:-W----
ZIO_STAGE_BRT_FREE:0x00000200:--F-- ZIO_STAGE_BRT_FREE:0x00000200:--F---
ZIO_STAGE_DDT_READ_START:0x00000400:R---- ZIO_STAGE_DDT_READ_START:0x00000400:R-----
ZIO_STAGE_DDT_READ_DONE:0x00000800:R---- ZIO_STAGE_DDT_READ_DONE:0x00000800:R-----
ZIO_STAGE_DDT_WRITE:0x00001000:-W--- ZIO_STAGE_DDT_WRITE:0x00001000:-W----
ZIO_STAGE_DDT_FREE:0x00002000:--F-- ZIO_STAGE_DDT_FREE:0x00002000:--F---
ZIO_STAGE_GANG_ASSEMBLE:0x00004000:RWFC- ZIO_STAGE_GANG_ASSEMBLE:0x00004000:RWFC--
ZIO_STAGE_GANG_ISSUE:0x00008000:RWFC- ZIO_STAGE_GANG_ISSUE:0x00008000:RWFC--
ZIO_STAGE_DVA_THROTTLE:0x00010000:-W--- ZIO_STAGE_DVA_THROTTLE:0x00010000:-W----
ZIO_STAGE_DVA_ALLOCATE:0x00020000:-W--- ZIO_STAGE_DVA_ALLOCATE:0x00020000:-W----
ZIO_STAGE_DVA_FREE:0x00040000:--F-- ZIO_STAGE_DVA_FREE:0x00040000:--F---
ZIO_STAGE_DVA_CLAIM:0x00080000:---C- ZIO_STAGE_DVA_CLAIM:0x00080000:---C--
ZIO_STAGE_READY:0x00100000:RWFCI ZIO_STAGE_READY:0x00100000:RWFCIT
ZIO_STAGE_VDEV_IO_START:0x00200000:RW--I ZIO_STAGE_VDEV_IO_START:0x00200000:RW--IT
ZIO_STAGE_VDEV_IO_DONE:0x00400000:RW--I ZIO_STAGE_VDEV_IO_DONE:0x00400000:RW---T
ZIO_STAGE_VDEV_IO_ASSESS:0x00800000:RW--I ZIO_STAGE_VDEV_IO_ASSESS:0x00800000:RW--IT
ZIO_STAGE_CHECKSUM_VERIFY:0x01000000:R---- ZIO_STAGE_CHECKSUM_VERIFY:0x01000000:R-----
ZIO_STAGE_DONE:0x02000000:RWFCI ZIO_STAGE_DONE:0x02000000:RWFCIT
.TE .TE
. .
.Sh I/O FLAGS .Sh I/O FLAGS