New primitives for fsync and exclusive output files.
The primitive procedure CHANNEL-SYNCHRONIZE attempts to guarantee
that any data associated with the channel are written to permanent
storage. Passing channels not backed by files in permanent storage
is currently an error, but perhaps should be a no-op instead. This
procedure does what the fsync system call ought to do, which on most
operating systems it does not necessarily do; this procedure attempts
various different methods from different operating systems to ensure
that data are written to disk and that any disk caches for them are
forced to physical media.
New procedures OPEN-EXCLUSIVE-OUTPUT-FILE and CALL-WITH-*, WITH-*
variants, and binary output file variants, create files at pathnames
that currently have no links, or signal errors if they do. Errors on
opening files now establish restarts to replace pathnames.
These new primitives are implemented only on Unix; Windows and OS/2
implementations are missing.
17 files changed: