HomeFreeBSD

MFC r339372: Skip VDEV_IO_DONE stage only for ZIO_TYPE_FREE.

Description

MFC r339372: Skip VDEV_IO_DONE stage only for ZIO_TYPE_FREE.

Device removal code uses zio_vdev_child_io() with ZIO_TYPE_NULL parent,
that never happened before. It confused FreeBSD-specific TRIM code,
which does not use VDEV_IO_DONE for logical ZIO_TYPE_FREE ZIOs. As
result of that stage being skipped device removal ZIOs leaked references
and memory that supposed to be freed by VDEV_IO_DONE, making it stuck.

It is a quick patch rather then a nice fix, but hopefully we'll be able
to drop it all together when alternative TRIM implementation finally get
landed.

PR: 228750, 229007

Details

Provenance
mavAuthored on
Parents
rS339440: MFC r339329: Add ZIO_TYPE_FREE support for indirect vdevs.
Branches
Unknown
Tags
Unknown