OSDN Git Service

Let's try forcing errno to zero before issuing fsync. The current buildfarm
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 22 Feb 2010 15:29:46 +0000 (15:29 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 22 Feb 2010 15:29:46 +0000 (15:29 +0000)
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

index df763da..3cd7db7 100644 (file)
@@ -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);
 }