From 9dd6c4686bc496912f1b4958139931ef6a6f029b Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 22 Feb 2010 15:29:46 +0000
Subject: [PATCH] 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?

---
 src/port/copydir.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

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);
 }
-- 
2.24.1