That title is not sarcastic or pithy.
For whatever the reasons, in the past two days, there has been a confluence of many-eyes examining the problem and there are now two workable proposed solutions to the fsync bug:
- One is phenomenally simple: make a backup of the places database on startup, run sqlite without the fsync behavior. If your computer crashes and you lose your history for that session, no big deal. Also this change would make FF3 profiles compatible with NFS-stored home directories.
- The second is to use sync_file_range() for in-file INSERT's and aggressively grow the sqlite data file size when needed. This change must be made in sqlite and is non-trivial. I don't know how well NFS interacts with sync_data_range().
The reduction of fsync calls is not considered a solution which I'm glad to see agreement being reached about.
I want to thank everyone that threw their energy behind finding a workable solution. Mozilla really stepped up and has demonstrated that they do consider Linux a first-class platform. There is, of course, a little disagreement on about the downstream distribution patch policies but that is being worked through by the people that matter.