Skip to content

Intermittent boot hang in zfs-mount.service with txg_sync blocked in zio_wait() after successful pool import #18729

Description

@M-M-M-M

System information

Type Version/Name
Distribution Name Rocky Linux release 8.10 (Green Obsidian)
Distribution Version Rocky Linux release 8.10 (Green Obsidian)
Kernel Version 4.18.0-553.137.1.el8_10.x86_64
Architecture x86_64
OpenZFS Version zfs-2.2.10-1

Describe the problem you're observing

After replacing one disk of a Linux mdadm RAID1 array and completing a successful resync, my ZFS pool intermittently hangs during boot.

Storage layout:

2 SATA disks
-> mdadm RAID1 (/dev/md1)
-> LVM PV
-> LV vg0/zfs
-> ZFS pool (myzpool)

The pool imports successfully during boot:

Started Import ZFS pools by cache file.
Reached target ZFS pool import target.

but the boot hangs indefinitely at:

Starting Mount ZFS filesystems…
A start job is running for Mount ZFS filesystems

The machine becomes completely inaccessible (no SSH).

After approximately 120 seconds, the kernel reports a blocked task:

task: txg_sync state:D

with the following stack trace:

zio_wait()
spa_sync_frees()
spa_sync_iterate_to_convergence()
spa_sync()
txg_sync_thread()

Several hours later (or after another reboot), ZFS reports:

WARNING: Pool ‘myzpool’ has encountered an uncorrectable I/O failure and has been suspended.

The pool cannot be recovered with:

zpool clear myzpool

which returns:

cannot clear errors for myzpool: I/O error

However, after another reboot (sometimes taking several hours), the pool comes back completely healthy:

pool: myzpool
state: ONLINE
errors: No known data errors

and all datasets mount normally.

The issue is therefore intermittent.

The boot process is blocked waiting for zfs-mount.service, preventing SSH access.

From KVM screenshots :

Image Image

Describe how to reproduce the problem

Unfortunately I do not have a reliable reproducer.

The issue first appeared one week after replacing one member of an mdadm RAID1 array and letting the array fully resynchronize.

The RAID is healthy:

Disks:
 /dev/sda serial=xxxxxxxxxx model=ST10000NM0156-2AA111 health=PASSED power_on_hours=50555 temp=54C reallocated=1013 pending=0 trend=stable
 /dev/sdb serial= xxxxxxxxxx model=HGST HUH721008ALE600 health=PASSED power_on_hours=45698 temp=56C reallocated=0 pending=0 trend=stable

RAID:
 /dev/md0 state=clean, resyncing (DELAYED) active=2 working=2 failed=0 raid_devices=2
 /dev/md1 state=active, checking active=2 working=2 failed=0 raid_devices=2
#cat /proc/mdstat
mdadm --detail /dev/md1
mdadm --detail /dev/md0
Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[2]
      7811795264 blocks super 1.2 [2/2] [UU]
      bitmap: 4/59 pages [16KB], 65536KB chunk

md0 : active raid1 sdb1[1] sda1[2]
      2094080 blocks super 1.2 [2/2] [UU]

unused devices: <none>
/dev/md1:
           Version : 1.2
     Creation Time : Fri Apr  1 08:45:54 2022
        Raid Level : raid1
        Array Size : 7811795264 (7.28 TiB 8.00 TB)
     Used Dev Size : 7811795264 (7.28 TiB 8.00 TB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Wed Jul  1 08:31:57 2026
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : rescue:1
              UUID : c0880b3b:0376a676:cca248aa:c7f19f26
            Events : 3682997

    Number   Major   Minor   RaidDevice State
       2       8        2        0      active sync   /dev/sda2
       1       8       18        1      active sync   /dev/sdb2
/dev/md0:
           Version : 1.2
     Creation Time : Fri Apr  1 08:45:54 2022
        Raid Level : raid1
        Array Size : 2094080 (2045.00 MiB 2144.34 MB)
     Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Jul  1 07:05:14 2026
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : rescue:0
              UUID : a1a4f0bd:a74cbcf2:daac2d1b:dea67028
            Events : 787

    Number   Major   Minor   RaidDevice State
       2       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

The issue has now occurred during multiple consecutive boots.

Sometimes the system boots normally.

Sometimes boot blocks indefinitely while mounting ZFS filesystems.

After another reboot the pool is again healthy.

Include any warning/errors/backtraces from the system logs

During some test ZFS crashes when I still had a SSH on the server, so I could run some commands:

#journalctl -k --since "2026-06-26 16:30" | egrep -i 'md1|md0|raid|sda|sdb|I/O|error|mismatch|resync|recovery|zfs'
Jun 26 16:30:17 localhost kernel: APIC: Switch to symmetric I/O mode setup
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] 19532873728 512-byte logical blocks: (10.0 TB/9.10 TiB)
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] 15628053168 512-byte logical blocks: (8.00 TB/7.28 TiB)
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] 4096-byte physical blocks
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] 4096-byte physical blocks
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] Write Protect is off
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] Write Protect is off
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Jun 26 16:30:18 localhost kernel:  sdb: sdb1 sdb2 sdb3
Jun 26 16:30:18 localhost kernel: sd 1:0:0:0: [sdb] Attached SCSI disk
Jun 26 16:30:18 localhost kernel:  sda: sda1 sda2 sda3
Jun 26 16:30:18 localhost kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Jun 26 16:30:18 localhost kernel: md/raid1:md0: active with 2 out of 2 mirrors
Jun 26 16:30:18 localhost kernel: md0: detected capacity change from 0 to 2144337920
Jun 26 16:30:18 localhost kernel: md/raid1:md1: active with 2 out of 2 mirrors
Jun 26 16:30:18 localhost kernel: md1: detected capacity change from 0 to 7999278350336
Jun 26 16:30:25 myserver.example.net kernel: zfs: module license 'CDDL' taints kernel.
Jun 26 16:30:25 myserver.example.net kernel: zfs: unknown parameter 'zfs_arc_meta_strategy' ignored
Jun 26 16:30:25 myserver.example.net kernel: EXT4-fs (md0): mounting ext3 file system using the ext4 subsystem
Jun 26 16:30:25 myserver.example.net kernel: ZFS: Loaded module v2.2.10-1, ZFS pool version 5000, ZFS filesystem version 5
Jun 26 16:30:25 myserver.example.net kernel: EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null)
Jun 26 18:29:01 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 18:29:01 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 18:35:10 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 18:47:27 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 18:55:39 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  dsl_pool_sync+0xb7/0x430 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  ? __raw_spin_unlock+0x5/0x10 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  ? spa_errlog_sync+0x268/0x290 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 18:59:45 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 19:07:56 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 19:12:02 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 19:14:05 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 19:32:31 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  zio_wait+0x114/0x230 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  dsl_pool_sync_mos+0x37/0xa0 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  dsl_pool_sync+0x3d2/0x430 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  spa_sync_iterate_to_convergence+0xcf/0x1f0 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  spa_sync+0x318/0x610 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  txg_sync_thread+0x1f2/0x260 [zfs]
Jun 26 19:44:48 myserver.example.net kernel:  ? txg_dispatch_callbacks+0xf0/0xf0 [zfs]
Jun 28 01:00:01 myserver.example.net kernel: md: data-check of RAID array md1
Jun 28 01:00:07 myserver.example.net kernel: md: delaying data-check of md0 until md1 has finished (they share one or more physical units)
Jun 29 17:13:42 myserver.example.net kernel: WARNING: Pool 'myzpool' has encountered an uncorrectable I/O failure and has been suspended.
Jun 30 02:39:12 myserver.example.net kernel: md: md1: data-check done.
Jun 30 02:39:12 myserver.example.net kernel: md: data-check of RAID array md0
Jun 30 02:39:25 myserver.example.net kernel: md: md0: data-check done.

Sometimes zpool status showed the error, that sometimes disappears just after a reboot :

#zpool get failmode myzpool
NAME     PROPERTY  VALUE     SOURCE
myzpool  failmode  wait      default

#zpool status -v myzpool
  pool: myzpool
 state: SUSPENDED
status: One or more devices are faulted in response to IO failures.
action: Make sure the affected devices are connected, then run 'zpool clear'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-HC
  scan: scrub repaired 0B in 02:50:43 with 0 errors on Tue Jan  6 19:58:59 2026
config:

        NAME        STATE     READ WRITE CKSUM
        myzpool     ONLINE       0     0     0
          vg0/zfs   ONLINE       0     0     0

errors: List of errors unavailable: pool I/O is currently suspended

#zpool clear myzpool
cannot clear errors for myzpool: I/O error

After a long reboot :

#zpool status -v myzpool
  pool: myzpool
 state: ONLINE
  scan: scrub repaired 0B in 02:50:43 with 0 errors on Tue Jan  6 19:58:59 2026
config:

        NAME        STATE     READ WRITE CKSUM
        myzpool     ONLINE       0     0     0
          vg0/zfs   ONLINE       0     0     0

errors: No known data errors
#zfs list
NAME              USED  AVAIL  REFER  MOUNTPOINT
myzpool          10.9T  8.84T   157G  /myzpool
myzpool/BACKUP   9.45T  8.84T  9.45T  /myzpool/BACKUP
myzpool/storage  1.33T  8.84T  1.33T  /myzpool/storage
[root@hzr-2204][5526][~] #zfs mount
myzpool                         /myzpool
myzpool/BACKUP                  /myzpool/BACKUP
myzpool/storage                 /myzpool/storage

#zpool get health,failmode,dedupditto myzpool
NAME     PROPERTY    VALUE       SOURCE
myzpool  health      ONLINE      -
myzpool  failmode    wait        default
myzpool  dedupditto  0           default

Note on sda that below metrics are not changing since this disk has been setup :

  • Reallocated_Sector_Ct = 1013
  • Reported_Uncorrect = 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: DefectIncorrect behavior (e.g. crash, hang)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions