Why fsync() on OpenZFS cant fail, and what happens when it does By: Rob Norris @BsdcanOrg
Why fsync() on OpenZFS cant fail, and what happens when it does By: Rob Norris  @BsdcanOrg
Uploaded June 2024 | Updated September 2026, 1 hour ago
On OpenZFS, fsync() cannot fail - it will wait until the application’s changes are on disk before it returns. If there is a problem, such as a hardware failure, that causes the pool to suspend, then it will block until the pool returns. This could be seconds, hours, or never, depending on the nature on the failure.

Modern distributed systems can often cope with this type of failure by redirecting requests to another node, but they can only do this if fsync() returns an error instead of blocking.

In this talk I describe how OpenZFS implements fsync() and why it blocks when the pool fails. I then discuss a series of changes made to make it possible for fsync() to return failure - and what it means for applications when it does.
Why fsync() on OpenZFS cant fail, and what happens when it does By: Rob NorrisAli Mashtizadeh: Why Did My Application Crash   BSDCan 2018Modern BSD Computing for Fun on a VAX! Trying to use a VAX in todays world by Jeff ArmstrongBSDCan Saturday 2025-06-14:1160How to get started hacking NetBSD By: Taylor CampbellPerformance Analysis of DTrace on FreeBSD and eBPF on Linux By:Mateusz PiotrowskiPostgreSQL on FreeBSD: Thomas MunroBSDCan Saturday 2026-06-20: 1110Lighting Talk High rate filtering with IPFW by Olivier Cochard LabbéBSDCan Friday 2026-06-19: 1110Testing firewalls Why vimage is awesome by Kristof ProvostUnveil in OpenBSD The Unveil system call, its use in Programs, and new semantics for it by Bob Beck
BSDCan |

Why fsync() on OpenZFS can't fail, and what happens when it does By: Rob Norris

SHARE TO X SHARE TO REDDIT SHARE TO FACEBOOK WALLPAPER