fs/io/FileOutputStream: use O_TMPFILE if available

The Linux feature allows writing new files to an invisible file, and
then replace the old file.  This preserves the old file if we get
interrupted by some event.
This commit is contained in:
Max Kellermann
2015-01-05 20:24:59 +01:00
parent ac62586bad
commit 8b217d5313
4 changed files with 70 additions and 9 deletions

View File

@@ -42,6 +42,14 @@ class FileOutputStream final : public OutputStream {
int fd;
#endif
#ifdef HAVE_LINKAT
/**
* Was O_TMPFILE used? If yes, then linkat() must be used to
* create a link to this file.
*/
bool is_tmpfile;
#endif
public:
FileOutputStream(Path _path, Error &error);