ZIO: ZIO_STAGE_DDT_WRITE is a blocking stage

ddt_lookup() in zio_ddt_write() might require synchronous DDT ZAP
read.  Running it from interrupt taskq might lead to deadlock.
Inclusion of ZIO_STAGE_DDT_WRITE into ZIO_BLOCKING_STAGES should
hopefully fix that, even though I am not sure how I got there.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <alexander.motin@TrueNAS.com>
Closes #17981
This commit is contained in:
Alexander Motin 2025-12-10 19:51:53 -05:00 committed by GitHub
parent d393166c54
commit 20f09eae42
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -278,7 +278,8 @@ enum zio_stage {
ZIO_VDEV_IO_STAGES)
#define ZIO_BLOCKING_STAGES \
(ZIO_STAGE_DVA_ALLOCATE | \
(ZIO_STAGE_DDT_WRITE | \
ZIO_STAGE_DVA_ALLOCATE | \
ZIO_STAGE_DVA_CLAIM | \
ZIO_STAGE_VDEV_IO_START)