From 20f09eae42f2838df48b3aa7b56ad5220947f860 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Wed, 10 Dec 2025 19:51:53 -0500 Subject: [PATCH] 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 Signed-off-by: Alexander Motin Closes #17981 --- include/sys/zio_impl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/sys/zio_impl.h b/include/sys/zio_impl.h index 6b751eade..42147adaf 100644 --- a/include/sys/zio_impl.h +++ b/include/sys/zio_impl.h @@ -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)