#288 closed defect (fixed)
Use F_FULLFSYNC ioctl where supported
Reported by: | Richard Boulton | Owned by: | Olly Betts |
---|---|---|---|
Priority: | high | Milestone: | 1.0.14 |
Component: | Backend-Flint | Version: | SVN trunk |
Severity: | normal | Keywords: | |
Cc: | James Aylett | Blocked By: | |
Blocking: | Operating System: | Mac OS X |
Description
I've recently noticed that, when performing an fsync, sqlite and mysql use a special ioctl on OS X which makes an effort to ensure that the disk's internal write buffers are flushed to the platters. Perhaps we should be using this ioctl too.
http://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html has some details about why this is needed.
http://www.sqlite.org/cvstrac/fileview?f=sqlite/src/os_unix.c&v=1.195 contains the sqlite implementation; search for the "full_fsync" function.
Change History (7)
comment:1 by , 16 years ago
Milestone: | → 1.1.1 |
---|---|
Operating System: | All → Mac OS X |
Status: | new → assigned |
comment:3 by , 15 years ago
Milestone: | 1.1.4 → 1.1.2 |
---|---|
Priority: | normal → high |
Probably worthwhile and an easy change, though could be bumped. I'm going to either try to do this soon for 1.1.2, otherwise I think postpone it.
comment:4 by , 15 years ago
Cc: | added |
---|
comment:6 by , 15 years ago
Component: | Backend-Chert → Backend-Flint |
---|---|
Milestone: | 1.1.2 → 1.0.14 |
Resolution: | → fixed |
Status: | assigned → closed |
comment:7 by , 10 years ago
As of trunk r18193, we're no longer using F_FULLSYNC by default, though it can be enabled with Xapian::DB_FULL_SYNC
(currently only supported by brass).
Also, brass on trunk only does the full-sync on the final file, and just fdatasync() the others, which will probably make quite a difference to the slowdown, but we've not yet tested this.
Definitely worth considering.