Fix EIO error accessing certain (OS X SMB?) drives
* 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>
This commit is contained in:
parent
215dbf05fe
commit
713161b28b
|
@ -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
|
||||
|
|
|
@ -2289,7 +2289,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)
|
||||
|
|
|
@ -36,3 +36,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
|
||||
|
|
Loading…
Reference in New Issue