fsync-on-save

On file save, flush (fsync) all the data to the storage device immediately.

adafruit

1,160

0

1.0.4

MIT

GitHub

fsync-on-save

When Atom saves a file, sometimes you need to flush all the data to the storage device immediately. For instance, you might want to make sure data is written to a persistent storage medium promptly, or a file might be on on a removable drive that may be unplugged without notice.

This simple package does an fsync() or equivalent to write all the data immediately. The node.js function fs.fsyncSync() is called after the file is written.

The original motivation for this package was to make Atom be a safe editor for use with Adafruit Industries CircuitPython. CircuitPython will automatically reload and restart when a file is written to the CIRCUITPY drive. Several operating systems do not write all data and metadata to USB drives immediately. This delayed-write behavior can cause auto-reload to read an incompletely written version of the updated file (such as main.py or code.py) when CircuitPython restarts. It can also cause the CIRCUITPY filesystem to become corrupted if the board is unplugged or reset before the file is completely written.

As of this writing, this delayed-write behavior is noticeable on Windows and Linux, but not on MacOS. Note that Linux may still write additional metata to CIRCUITPY a minute or so later after saving the file, causing an auto-reload. That's a different problem which this package cannot address.