Add headers needed by pg_combinebackup --clone
The code for file cloning existed, but was not reachable as it relied on constants from missing headers. Due to that, on Linux --clone always failed with error: file cloning not supported on this platform Fixed by including the missing headers to relevant places. Adding the headers revealed a couple compile errors in copy_file_clone(), so fix those too. Reported-by: Peter Eisentraut Discussion: https://postgr.es/m/48da4a1f-ccd9-4988-9622-24f37b1de2b4%40eisentraut.org
This commit is contained in:
parent
917754557c
commit
e99e840b82
@ -13,6 +13,10 @@
|
||||
#ifdef HAVE_COPYFILE_H
|
||||
#include <copyfile.h>
|
||||
#endif
|
||||
#ifdef __linux__
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/fs.h>
|
||||
#endif
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <sys/stat.h>
|
||||
@ -214,6 +218,9 @@ copy_file_clone(const char *src, const char *dest,
|
||||
pg_fatal("error while cloning file \"%s\" to \"%s\": %m", src, dest);
|
||||
#elif defined(__linux__) && defined(FICLONE)
|
||||
{
|
||||
int src_fd;
|
||||
int dest_fd;
|
||||
|
||||
if ((src_fd = open(src, O_RDONLY | PG_BINARY, 0)) < 0)
|
||||
pg_fatal("could not open file \"%s\": %m", src);
|
||||
|
||||
@ -228,8 +235,11 @@ copy_file_clone(const char *src, const char *dest,
|
||||
unlink(dest);
|
||||
|
||||
pg_fatal("error while cloning file \"%s\" to \"%s\": %s",
|
||||
src, dest);
|
||||
src, dest, strerror(save_errno));
|
||||
}
|
||||
|
||||
close(src_fd);
|
||||
close(dest_fd);
|
||||
}
|
||||
#else
|
||||
pg_fatal("file cloning not supported on this platform");
|
||||
|
@ -16,6 +16,14 @@
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifdef HAVE_COPYFILE_H
|
||||
#include <copyfile.h>
|
||||
#endif
|
||||
#ifdef __linux__
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/fs.h>
|
||||
#endif
|
||||
|
||||
#include "backup_label.h"
|
||||
#include "common/blkreftable.h"
|
||||
#include "common/checksum_helper.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user