Re: [patch] pg_copy - a command for reliable WAL archiving
От | Greg Stark |
---|---|
Тема | Re: [patch] pg_copy - a command for reliable WAL archiving |
Дата | |
Msg-id | CAM-w4HNaJOjV1f+LhVL+JfaWAj5JNq2H1BqvSzo3bO0fWGa0bw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [patch] pg_copy - a command for reliable WAL archiving (Greg Stark <stark@mit.edu>) |
Ответы |
Re: [patch] pg_copy - a command for reliable WAL archiving
|
Список | 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 по дате отправления: