]> sourceware.org Git - newlib-cygwin.git/commitdiff
Fix EIO error accessing certain (OS X SMB?) drives
authorCorinna Vinschen <corinna@vinschen.de>
Wed, 21 Oct 2015 10:01:11 +0000 (12:01 +0200)
committerCorinna Vinschen <corinna@vinschen.de>
Thu, 22 Oct 2015 15:32:11 +0000 (17:32 +0200)
* path.cc (symlink_info::check_reparse_point): Don't generate an EIO
error if NtFsControlFile returns STATUS_NOT_A_REPARSE_POINT.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/ChangeLog
winsup/cygwin/path.cc
winsup/cygwin/release/2.3.0

index d5170d730b3cbebb0bb761bcfcdc7108c6bc669f..b883cb40a735d465069d5ebece6aaba7448e6848 100644 (file)
@@ -1,3 +1,8 @@
+2015-10-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (symlink_info::check_reparse_point): Don't generate an EIO
+       error if NtFsControlFile returns STATUS_NOT_A_REPARSE_POINT.
+
 2015-09-23  Evgeny Grin  <k2k@yandex.ru>
 
        * fhandler_socket.cc (fhandler_socket::wait_for_events): Fix compiler
index a7feb3195d46d97f749dcc5e8ec60bea30320493..c65c1cac7fefdafa5ed17c12732288af67082466 100644 (file)
@@ -2288,7 +2288,13 @@ symlink_info::check_reparse_point (HANDLE h, bool remote)
     {
       debug_printf ("NtFsControlFile(FSCTL_GET_REPARSE_POINT) failed, %y",
                    status);
-      set_error (EIO);
+      /* When accessing the root dir of some remote drives (observed with
+        OS X shares), the FILE_ATTRIBUTE_REPARSE_POINT flag is set, but
+        the followup call to NtFsControlFile(FSCTL_GET_REPARSE_POINT)
+        returns with STATUS_NOT_A_REPARSE_POINT.  That's quite buggy, but
+        we cope here with this scenario by not setting an error code. */
+      if (status != STATUS_NOT_A_REPARSE_POINT)
+       set_error (EIO);
       return 0;
     }
   if (rp->ReparseTag == IO_REPARSE_TAG_SYMLINK)
index 7b0cb61bbbe634fc183b11ed167a442d5957bdd1..ad34671ad869042f4db4019999de60dee788bad0 100644 (file)
@@ -39,3 +39,6 @@ Bug Fixes
 - Fix a potential crash in advisory file locking due to usage of stack space
   out of scope.
   Addresses: https://cygwin.com/ml/cygwin/2015-09/msg00079.html
+
+- Fix EIO error accessing certain (OS X SMB?) drives
+  Addresses: https://cygwin.com/ml/cygwin/2015-09/msg00229.html
This page took 0.034801 seconds and 5 git commands to generate.