From: Tom Lane Date: Mon, 22 Feb 2010 15:29:46 +0000 (+0000) Subject: Let's try forcing errno to zero before issuing fsync. The current buildfarm X-Git-Tag: REL9_0_ALPHA5~231 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9dd6c4686bc496912f1b4958139931ef6a6f029b;p=postgresql Let's try forcing errno to zero before issuing fsync. The current buildfarm results claiming EBADF seem improbable enough that I'm not convinced fsync is really returning that --- could it be failing to set errno at all? --- diff --git a/src/port/copydir.c b/src/port/copydir.c index df763daa47..3cd7db7a4c 100644 --- a/src/port/copydir.c +++ b/src/port/copydir.c @@ -11,7 +11,7 @@ * as a service. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/copydir.c,v 1.30 2010/02/22 02:50:10 tgl Exp $ + * $PostgreSQL: pgsql/src/port/copydir.c,v 1.31 2010/02/22 15:29:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -229,9 +229,12 @@ fsync_fname(char *fname) (errcode_for_file_access(), errmsg("could not open file \"%s\": %m", fname))); + errno = 0; + if (pg_fsync(fd) != 0) ereport(ERROR, (errcode_for_file_access(), errmsg("could not fsync file \"%s\": %m", fname))); + close(fd); }