diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 0d243c411..6e61ee2b8 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -1457,32 +1457,17 @@ fhandler_base::open_fs (int flags, mode_t mode) bool new_file = !exists (); int res = fhandler_base::open (flags | O_DIROPEN, mode); - if (!res) - goto out; - - /* This is for file systems known for having a buggy CreateFile call - which might return a valid HANDLE without having actually opened - the file. - The only known file system to date is the SUN NFS Solstice Client 3.1 - which returns a valid handle when trying to open a file in a nonexistent - directory. */ - if (pc.has_buggy_open () && !pc.exists ()) + if (res) { - debug_printf ("Buggy open detected."); - close_fs (); - set_errno (ENOENT); - return 0; + /* The file info in pc is wrong at this point for newly created files. + Refresh it before fetching any file info. */ + if (new_file) + pc.get_finfo (get_io_handle ()); + + if (pc.isgood_inode (pc.get_ino ())) + ino = pc.get_ino (); } - /* The file info in pc is wrong at this point for newly created files. - Refresh it before fetching any file info. */ - if (new_file) - pc.get_finfo (get_io_handle ()); - - if (pc.isgood_inode (pc.get_ino ())) - ino = pc.get_ino (); - -out: syscall_printf ("%d = fhandler_disk_file::open(%S, %y)", res, pc.get_nt_native_path (), flags); return res; diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index 742775684..34305485e 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -138,7 +138,6 @@ const int __collate_load_error = 0; in the reply from the filesystem. */ extern UNICODE_STRING _RDATA ro_u_prlfs = _ROU (L"PrlSF\0"); extern UNICODE_STRING _RDATA ro_u_refs = _ROU (L"ReFS"); - extern UNICODE_STRING _RDATA ro_u_sunwnfs = _ROU (L"SUNWNFS"); extern UNICODE_STRING _RDATA ro_u_udf = _ROU (L"UDF"); extern UNICODE_STRING _RDATA ro_u_unixfs = _ROU (L"UNIXFS"); extern UNICODE_STRING _RDATA ro_u_nwfs = _ROU (L"NWFS"); diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index acde67e5b..376fca810 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -393,15 +393,11 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) && !is_unixfs (RtlEqualUnicodeString (&fsname, &ro_u_unixfs, FALSE)) /* AFSRDRFsd == Andrew File System. Doesn't support DOS attributes. Only native symlinks are supported. */ - && !is_afs (RtlEqualUnicodeString (&fsname, &ro_u_afs, FALSE)) + && !is_afs (RtlEqualUnicodeString (&fsname, &ro_u_afs, FALSE))) + { /* PrlSF == Parallels Desktop File System. Has a bug in FileNetworkOpenInformation, see below. */ - && !is_prlfs (RtlEqualUnicodeString (&fsname, &ro_u_prlfs, FALSE))) - { - /* Known remote file system with buggy open calls. Further - explanation in fhandler.cc (fhandler_disk_file::open_fs). */ - is_sunwnfs (RtlEqualUnicodeString (&fsname, &ro_u_sunwnfs, FALSE)); - has_buggy_open (is_sunwnfs ()); + is_prlfs (RtlEqualUnicodeString (&fsname, &ro_u_prlfs, FALSE)); } if (got_fs ()) { @@ -1573,7 +1569,6 @@ fs_names_t fs_names[] = { { "iso9660", true }, { "udf", true }, { "csc-cache", false }, - { "sunwnfs", false }, { "unixfs", false }, { "mvfs", false }, { "cifs", false }, diff --git a/winsup/cygwin/mount.h b/winsup/cygwin/mount.h index d37b673e6..0b392ca85 100644 --- a/winsup/cygwin/mount.h +++ b/winsup/cygwin/mount.h @@ -39,7 +39,6 @@ enum fs_info_type cdrom, udf, csc_cache, - sunwnfs, unixfs, mvfs, cifs, @@ -72,7 +71,6 @@ class fs_info unsigned has_acls : 1; unsigned hasgood_inode : 1; unsigned caseinsensitive : 1; - unsigned has_buggy_open : 1; unsigned has_buggy_reopen : 1; unsigned has_buggy_fileid_dirinfo : 1; unsigned has_buggy_basic_info : 1; @@ -97,7 +95,6 @@ class fs_info IMPLEMENT_STATUS_FLAG (bool, has_acls) IMPLEMENT_STATUS_FLAG (bool, hasgood_inode) IMPLEMENT_STATUS_FLAG (bool, caseinsensitive) - IMPLEMENT_STATUS_FLAG (bool, has_buggy_open) IMPLEMENT_STATUS_FLAG (bool, has_buggy_reopen) IMPLEMENT_STATUS_FLAG (bool, has_buggy_fileid_dirinfo) IMPLEMENT_STATUS_FLAG (bool, has_buggy_basic_info) @@ -111,7 +108,6 @@ class fs_info IMPLEMENT_FS_FLAG (cdrom) IMPLEMENT_FS_FLAG (udf) IMPLEMENT_FS_FLAG (csc_cache) - IMPLEMENT_FS_FLAG (sunwnfs) IMPLEMENT_FS_FLAG (unixfs) IMPLEMENT_FS_FLAG (mvfs) IMPLEMENT_FS_FLAG (cifs) diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index 042ba312d..1af5d2293 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -168,7 +168,6 @@ class path_conv } int has_symlinks () const {return path_flags & PATH_HAS_SYMLINKS;} int has_dos_filenames_only () const {return path_flags & PATH_DOS;} - int has_buggy_open () const {return fs.has_buggy_open ();} int has_buggy_reopen () const {return fs.has_buggy_reopen ();} int has_buggy_fileid_dirinfo () const {return fs.has_buggy_fileid_dirinfo ();} int has_buggy_basic_info () const {return fs.has_buggy_basic_info ();}