Emacsがファイルを変更した後、その後に生じた電源喪失と媒体エラーにより行った変更が保存されないことには2つの理由があります。1つ目は一方または他方のファイルが後で変更されるまで、オペレーティングシステムは書き込まれたデータを2次ストレージのどこかに格納済みのデータにエイリアスすることです。媒体エラーにより2次ストレージ上のコピーだけが失われると、ファイルは両方とも失われるでしょう。2つ目はオペレーティングシステムがデータを2次ストレージに即座に書き込まないかもしれないので、電源喪失時やメディアエラー時にはデータが失われます。
これらはいずれも適切なファイルシステムの設定により回避され得る類のエラーですが、そのようなシステムは通常はより高価であるか非効率的です。ローエンドなシステムでは媒体エラーに備えて異なるデバイスにファイルをコピーでき、電源喪失(あるいは媒体エラー直後の通知)にたいしては変数write-region-inhibit-fsync
にnil
をセットしてwrite-region
を使用できます。ファイルへの書き込みを参照してください。性能が有意に改善するのでこの変数は通常t
だとしても、データベースのトランザクションようにローエンドシステムでの電源喪失への備えを要する実装をEmacsが使用する場合には、一時的にnil
にバインドすることに意味があるかもしれません。See ファイルへの書き込みを参照してください。
一部のプラットフォームではEmacsがファイルを変更しても、その変更は即座に通知されないかもしれません。write-region-inhibit-fsync
をnil
にセットすることにより、保証は存在しないが通知スピードが改善される可能性があります。