Skip to content

zfs: shutdown zpool export -a wedge on v1.13.0 — detach timeline from a hyperconverged DRBD/LINSTOR node (data point for #1085) #1193

Description

@dafnrs

Summary

Reboot out of Talos v1.13.0 wedges permanently in the shutdown sequence on a hyperconverged ZFS + DRBD/LINSTOR node. Signature matches #1085 (zpool export -a at shutdown, no timeout, SIGKILLed mid-export past the 10s grace). Reporting because our captured timeline has a detail the existing reports lack: the export stall is not slow — it is permanently stuck; 3 of 15 DRBD-held zvols never release, with zero kernel activity for 25+ minutes, so no grace period would have been long enough while DRBD held the volumes.

Environment

  • Talos v1.13.0 (Cozystack build ghcr.io/cozystack/cozystack/talos), kernel 6.18.24-talos, upgrading to v1.13.6
  • Extensions: zfs 2.4.3, drbd 9.3.2 (LINSTOR/Piraeus on zvols), bare-metal OVH, 3× control-plane hyperconverged
  • Node under reboot was fully drained (kubectl drain complete; only DaemonSets remained)

Sequence observed (talm/talosctl reboot, default mode)

  1. Reboot sequence starts; stopAllPods, dbus, stopServicesForUpgrade proceed; kubelet, etcd, trustd, cri all stop cleanly ("Service finished successfully").
  2. ext-zfs-service enters Stopping; machined escalates to SIGKILL: Sending SIGKILL to task ext-zfs-service (PID 6249) — the task survives SIGKILL indefinitely (uninterruptible D-state, consistent with being blocked in a zfs ioctl mid-export).
  3. Concurrently, DRBD secondaries on the node hit local-IO errors as their backing zvols go away and detach one at a time (disk( UpToDate -> Failed ) [local-io-error] → disk( Failed -> Diskless ) [go-diskless], peers take over UUIDs cleanly).
  4. Detach cadence: 6 volumes in the first 6 seconds, 2 at +1min, 2 at +2min, 1 at +4min, 1 at +19min — then nothing. 3 of 15 DRBD resources never detach. After the last detach: zero kernel log lines of any kind for 25+ minutes. MachineStatus stays stage: rebooting forever; no hung-task warnings (detector presumably off).
  5. Only exit: talosctl reboot -m force (real reset; on our AMI boards a dirty reset then risks a POST hang, which is how one attempt ended in a manual power-cycle).

This was our second encounter: an earlier upgrade attempt on this cluster hit the same wedge on an undrained node (that time first visible as "gave up ... stopping cri", ending in the same terminal state).

Confirmations / cross-refs

Full service-state dumps, kernel log excerpts with timestamps, and the per-volume detach timeline are captured and available on request.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions