Toby Thain wrote:
I'm no guru, but would not ZFS already require strict ordering for its transactions ... which property Peter was exploiting to get "fbarrier()" for free?

Exactly.  Even if you disable the intent log, the transactional nature
of ZFS ensures preservation of event ordering.  Note that disk caches
don't come into it: ZFS builds up a wad of transactions in memory,
then pushes them out as a transaction group.  That entire group will
either commit or not.  ZFS writes all the new data to new locations,
then flushes all disk write caches, then writes the new uberblock,
then flushes the caches again.  Thus you can lose power at any point
in the middle of committing transaction group N, and you're guaranteed
that upon reboot, everything will either be at state N or state N-1.

I agree about the usefulness of fbarrier() vs. fsync(), BTW.  The cool
thing is that on ZFS, fbarrier() is a no-op.  It's implicit after
every system call.

Jeff
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to