HomeFreeBSD

ffs: wait for trims earlier during unmount to avoid panic

Description

ffs: wait for trims earlier during unmount to avoid panic

All softdep processing is supposed to be completed by
softdep_flushfiles() and no more deps are supposed to be created after
that, but if a pending trim completes after softdep_flushfiles() and
before softdep_unmount() then the blkfree that is performed by
ffs_blkfree_trim_task() will create a dep when none should exist, and
if softdep_unmount() is called before that dep is freed then the
kernel will panic. Prevent this by waiting for trims to complete
earlier in the unmount process, in ffs_flushfiles(), so that any deps
will be freed and any modified CG buffers will be flushed by the final
fsync of the devvp in ffs_flushfiles() as intended.

Reviewed by: mckusick, kib
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D34806

Details

Provenance
chsAuthored on Apr 8 2022, 5:19 PM
Reviewer
mckusick
Differential Revision
D34806: ffs: wait for trims earlier during unmount to avoid panic
Parents
rGaa597d4049ff: i386: Fix the nodevice apic build
Branches
Unknown
Tags
Unknown