OSDN Git Service

* fhandler.cc (fhandler_base::fsync): Ignore ERROR_INVALID_FUNCTION
authorcorinna <corinna>
Tue, 1 Feb 2011 17:46:47 +0000 (17:46 +0000)
committercorinna <corinna>
Tue, 1 Feb 2011 17:46:47 +0000 (17:46 +0000)
error from FlushFileBuffers().

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler.cc

index fb21b9d..72ea9ad 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-01  Christian Franke  <franke@computer.org>
+
+       * fhandler.cc (fhandler_base::fsync): Ignore ERROR_INVALID_FUNCTION
+       error from FlushFileBuffers().
+
 2011-01-31  Corinna Vinschen  <corinna@vinschen.de>
 
        * syscalls.cc (utmp_data): Fix potential buffer overflow.
index c97cc01..02c2857 100644 (file)
@@ -1588,7 +1588,14 @@ fhandler_base::fsync ()
     return 0;
   if (FlushFileBuffers (get_handle ()))
     return 0;
-  __seterrno ();
+
+  /* Ignore ERROR_INVALID_FUNCTION because FlushFileBuffers() always fails
+     with this code on raw devices which are unbuffered by default.  */
+  DWORD errcode = GetLastError();
+  if (errcode == ERROR_INVALID_FUNCTION)
+    return 0;
+
+  __seterrno_from_win_error (errcode);
   return -1;
 }