Re: [patch] pg_copy - a command for reliable WAL archiving - Mailing list pgsql-hackers

From Greg Stark
Subject Re: [patch] pg_copy - a command for reliable WAL archiving
Date
Msg-id CAM-w4HNaJOjV1f+LhVL+JfaWAj5JNq2H1BqvSzo3bO0fWGa0bw@mail.gmail.com
Whole thread Raw
In response to Re: [patch] pg_copy - a command for reliable WAL archiving  (Greg Stark <stark@mit.edu>)
Responses Re: [patch] pg_copy - a command for reliable WAL archiving
List pgsql-hackers
c.f.:
      O_TMPFILE (since Linux 3.11)             Create an unnamed temporary file.  The pathname argument
specifiesa directory; an unnamed inode will be created in             that directory's filesystem.  Anything written to
the            resulting file will be lost when the last file descriptor is             closed, unless the file is
givena name.
 
             O_TMPFILE must be specified with one of O_RDWR or O_WRONLY             and, optionally, O_EXCL.  If O_EXCL
isnot specified, then             linkat(2) can be used to link the temporary file into the             filesystem,
makingit permanent, using code like the             following:
 
                 char path[PATH_MAX];                 fd = open("/path/to/dir", O_TMPFILE | O_RDWR,
                   S_IRUSR | S_IWUSR);
 
                 /* File I/O on 'fd'... */
                 snprintf(path, PATH_MAX,  "/proc/self/fd/%d", fd);                 linkat(AT_FDCWD, path, AT_FDCWD,
"/path/for/file",                                        AT_SYMLINK_FOLLOW);
 
             In this case, the open() mode argument determines the file             permission mode, as with O_CREAT.
             Specifying O_EXCL in conjunction with O_TMPFILE prevents a             temporary file from being linked
intothe filesystem in the             above manner.  (Note that the meaning of O_EXCL in this case             is
differentfrom the meaning of O_EXCL otherwise.)
 
             There are two main use cases for O_TMPFILE:
             *  Improved tmpfile(3) functionality: race-free creation of                temporary files that (1) are
automaticallydeleted when                closed; (2) can never be reached via any pathname; (3) are                not
subjectto symlink attacks; and (4) do not require the                caller to devise unique names.
 
             *  Creating a file that is initially invisible, which is then                populated with data and
adjustedto have appropriate                filesystem attributes (chown(2), chmod(2), fsetxattr(2),
etc.) before being atomically linked into the filesystem                in a fully formed state (using linkat(2) as
described               above).
 
             O_TMPFILE requires support by the underlying filesystem; only             a subset of Linux filesystems
providethat support.  In the             initial implementation, support was provided in the ext2,             ext3,
ext4,UDF, Minix, and shmem filesystems.  XFS support             was added in Linux 3.15.
 



pgsql-hackers by date:

Previous
From: Greg Stark
Date:
Subject: Re: [patch] pg_copy - a command for reliable WAL archiving
Next
From: "Tomas Vondra"
Date:
Subject: Re: tweaking NTUP_PER_BUCKET