copy_file_range() conflict between pg_rewind and libc - Mailing list pgsql-hackers

From Andres Freund
Subject copy_file_range() conflict between pg_rewind and libc
Date
Msg-id 20180103033425.w7jkljth3e26sduc@alap3.anarazel.de
Whole thread Raw
List pgsql-hackers
Hi,

Animal caiman just revived and promptly failed:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=caiman&dt=2018-01-03%2003%3A13%3A54

copy_fetch.c:159:1: error: conflicting types for ‘copy_file_range’
 copy_file_range(const char *path, off_t begin, off_t end, bool trunc)
 ^~~~~~~~~~~~~~~
In file included from copy_fetch.c:15:0:
/usr/include/unistd.h:1110:9: note: previous declaration of ‘copy_file_range’ was here
 ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
         ^~~~~~~~~~~~~~~

copy_file_range() is a new-ish syscall that does in-kernel copying of
data. Therefore I think we should rename pg_rewind's version to
something like rwnd_copy_file_range(). Better names welcome.

I think we need to do so in all pg_rewind containing branches, this is
going to become an actual problem once sufficiently new glibc's are
common. Currently this appears to be unreleased (caiman runs fedora
rawhide), but that's not going to continue be the case.

Greetings,

Andres Freund


pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: FOR EACH ROW triggers on partitioned tables
Next
From: Peter Geoghegan
Date:
Subject: Re: [HACKERS] Parallel tuplesort (for parallel B-Tree index creation)