Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP : Do more syncing when kstat.zfs.darwin.tunable.use_system_sync != 0 #109

Open
wants to merge 5 commits into
base: development
Choose a base branch
from

Conversation

rottegift
Copy link
Collaborator

  1. Optionally set B_FUA on ZIO_PRIORITY_SYNC_WRITEs, which is uses for label and zil writes
  2. Optionally issue a full sync rather than a barrier sync
  3. Avoid a panic if a device goes offline during a full sync or barrier sync; higher layers in o3x will fault the affected device
  4. Tidy taskq_empty_ent, eliminating a source of DEBUG logspam

Open questions:

  1. Default to "paranoia"? With reasonably current Macs, performance hit may be worth the safety.
  2. Tidy naming of the tunable, maybe split tunable into 3 parts (barrier vs full; FUA vs no FUA; and bail out early from zfs_vfs_sync() or not).
  3. A fourth option: do zfs_vfs_sync() except for spa_sync_allpools()

On a busy multipool system with a mix of spinnydisks-alone, spinnydisks+SSD-slogs, and SSDs-alone, doing all the sync (except not-yet-tested B_FUA) does not hurt performance in practice.

Maybe-todo, maybe kick to future: look into zvols in the sync=standard case.

IS_EMPTY macro does not catch case where tqent_prev and
tqent_next are NULL
Allow kstat.zfs.darwin.tunable.use_system_sync to control
whether we use the post-10.11 IOKit barrier sync or not.

Do not call the synchronize method a second time in the
same invocation of handle_sync_iokit.  Log the IOReturn error.
If zfs_vfs_sync_paranoia is nonzero, then issue Forced
Unit Access on ZIO_PRIORITY_SYNC_WRITE zios, which are
generated for ZIL writes.
This is just to run the tests with these synchronization
changes activated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant