HomeFreeBSD

Make txg_wait_synced conditional in zfsvfs_teardown, for FreeBSD

Description

Make txg_wait_synced conditional in zfsvfs_teardown, for FreeBSD

This applies the same change in #9115 to FreeBSD. This was actually the
old behavior in FreeBSD 12; it only regressed when FreeBSD support was
added to OpenZFS. As far as I can tell, the timeline went like this:

  • Illumos's zfsvfs_teardown used an unconditional txg_wait_synced
  • Illumos added the dirty data check [^4]
  • FreeBSD merged in Illumos's conditional check [^3]
  • OpenZFS forked from Illumos
  • OpenZFS removed the dirty data check in #7795 [^5]
  • @mattmacy forked the OpenZFS repo and began to add FreeBSD support
  • OpenZFS PR #9115[^1] recreated the same dirty data check that Illumos used, in slightly different form. At this point the OpenZFS repo did not yet have multi-OS support.
  • Matt Macy merged in FreeBSD support in #8987[^2] , but it was based on slightly outdated OpenZFS code.

In my local testing, this vastly improves the reboot speed of a server
with a large pool that has 1000 datasets and is resilvering an HDD.

[^1]: https://github.com/openzfs/zfs/pull/9115
[^2]: https://github.com/openzfs/zfs/pull/8987
[^3]: https://github.com/freebsd/freebsd-src/commit/10b9d77bf1ccf2f3affafa6261692cb92cf7e992
[^4]: https://github.com/illumos/illumos-gate/commit/5aaeed5c617553c4cec6328c1f4c19079a5a495a
[^5]: https://github.com/openzfs/zfs/pull/7795

Sponsored by: Axcient
Reviewed-by: Allan Jude <allan@klarasystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Alan Somers <asomers@gmail.com>
Closes #16268

Details

Provenance
asomersAuthored on Aug 9 2024, 9:32 PM
GitHub <noreply@github.com>Committed on Aug 9 2024, 9:32 PM
Parents
rGcf6e8b218d4e: zstream: remove duplicate highbit64 definition
Branches
Unknown
Tags
Unknown