diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2015-11-02 12:08:25 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-11-02 15:37:26 +0100 |
commit | dad28a9a17a862605b3b5a5ed2c1918f8d6d6793 (patch) | |
tree | 23917f429ccf41fbbeab86a65a5d1e0294039d2a | |
parent | d64c9bf8dbe6550da458831729d0e57a86970e76 (diff) | |
download | newlib-dad28a9a17a862605b3b5a5ed2c1918f8d6d6793.zip newlib-dad28a9a17a862605b3b5a5ed2c1918f8d6d6793.tar.gz newlib-dad28a9a17a862605b3b5a5ed2c1918f8d6d6793.tar.bz2 |
Add support for Parallels Desktop FS (prlfs)
* mount.h (enum fs_info_type): Add prlfs (Parallels Desktop FS).
(class fs_info): Add has_broken_fnoi flag. Implement prlfs FS flag.
* mount.cc (fs_info::update): Handle PrlFS. Fill new has_broken_fnoi
flag with life.
(fs_names): Add prlfs.
* globals.cc (ro_u_prlfs): Define.
* path.h (path_conv::has_broken_fnoi): New method.
* path.cc (symlink_info::check): Call file_get_fnoi utilizing new
has_broken_fnoi filesystem flag.
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Ditto.
* new-features.xml (ov-new2.3): Document Parallels Desktop FS support.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r-- | winsup/cygwin/ChangeLog | 13 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_disk_file.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/globals.cc | 1 | ||||
-rw-r--r-- | winsup/cygwin/mount.cc | 10 | ||||
-rw-r--r-- | winsup/cygwin/mount.h | 6 | ||||
-rw-r--r-- | winsup/cygwin/path.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/path.h | 1 | ||||
-rw-r--r-- | winsup/cygwin/release/2.3.0 | 2 | ||||
-rw-r--r-- | winsup/doc/ChangeLog | 4 | ||||
-rw-r--r-- | winsup/doc/new-features.xml | 4 |
10 files changed, 41 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index ba11e0c..cd4de37 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,16 @@ +2015-11-02 Corinna Vinschen <corinna@vinschen.de> + + * mount.h (enum fs_info_type): Add prlfs (Parallels Desktop FS). + (class fs_info): Add has_broken_fnoi flag. Implement prlfs FS flag. + * mount.cc (fs_info::update): Handle PrlFS. Fill new has_broken_fnoi + flag with life. + (fs_names): Add prlfs. + * globals.cc (ro_u_prlfs): Define. + * path.h (path_conv::has_broken_fnoi): New method. + * path.cc (symlink_info::check): Call file_get_fnoi utilizing new + has_broken_fnoi filesystem flag. + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Ditto. + 2015-10-30 Corinna Vinschen <corinna@vinschen.de> * nlsfuncs.cc (__get_lcid_from_locale): Handle LocaleNameToLCID diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 4885885..cf87d2c 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -416,7 +416,7 @@ fhandler_base::fstat_by_handle (struct stat *buf) on the information stored in pc.fnoi. So we overwrite them here. */ if (get_io_handle ()) { - status = file_get_fnoi (h, pc.fs_is_netapp (), pc.fnoi ()); + status = file_get_fnoi (h, pc.has_broken_fnoi (), pc.fnoi ()); if (!NT_SUCCESS (status)) { debug_printf ("%y = NtQueryInformationFile(%S, " diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index 09c08f2..7a17376 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -138,6 +138,7 @@ extern "C" { extern UNICODE_STRING _RDATA ro_u_mvfs = _ROU (L"MVFS"); extern UNICODE_STRING _RDATA ro_u_nfs = _ROU (L"NFS"); extern UNICODE_STRING _RDATA ro_u_ntfs = _ROU (L"NTFS"); + extern UNICODE_STRING _RDATA ro_u_prlfs = _ROU (L"PrlSF"); /* No typo! */ 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"); diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 6cf3ddf..01f1759 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -1,7 +1,7 @@ /* mount.cc: mount handling. Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Red Hat, Inc. + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Red Hat, Inc. This file is part of Cygwin. @@ -370,7 +370,8 @@ 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)) + && !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). */ @@ -402,6 +403,10 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) only support this if the filename is non-null and the handle is the handle to a directory. NcFsd IR10 is supposed to be ok. */ has_buggy_reopen (is_netapp () || is_nwfs ()); + /* Netapp and Parallels Desktop FS have problems with the + FileNetworkOpenInformation info class. Netapp doesn't + implement it at all, Parallels always returns a size of 0. */ + has_broken_fnoi (is_netapp () || is_prlfs ()); } } if (!got_fs () @@ -1527,6 +1532,7 @@ fs_names_t fs_names[] = { { "nwfs", false }, { "ncfsd", false }, { "afs", false }, + { "prlfs", false }, { NULL, false } }; diff --git a/winsup/cygwin/mount.h b/winsup/cygwin/mount.h index e7d5426..986f9a9 100644 --- a/winsup/cygwin/mount.h +++ b/winsup/cygwin/mount.h @@ -1,7 +1,7 @@ /* mount.h: mount definitions. Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2010, 2011, 2012, 2013, 2014 Red Hat, Inc. + 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Red Hat, Inc. This file is part of Cygwin. @@ -45,6 +45,7 @@ enum fs_info_type nwfs, ncfsd, afs, + prlfs, /* Always last. */ max_fs_type }; @@ -75,6 +76,7 @@ class fs_info unsigned has_buggy_fileid_dirinfo : 1; unsigned has_buggy_basic_info : 1; unsigned has_dos_filenames_only : 1; + unsigned has_broken_fnoi : 1; } status; ULONG sernum; /* Volume Serial Number */ char fsn[80]; /* Windows filesystem name */ @@ -100,6 +102,7 @@ class fs_info IMPLEMENT_STATUS_FLAG (bool, has_buggy_fileid_dirinfo) IMPLEMENT_STATUS_FLAG (bool, has_buggy_basic_info) IMPLEMENT_STATUS_FLAG (bool, has_dos_filenames_only) + IMPLEMENT_STATUS_FLAG (bool, has_broken_fnoi) IMPLEMENT_FS_FLAG (fat) IMPLEMENT_FS_FLAG (ntfs) IMPLEMENT_FS_FLAG (refs) @@ -116,6 +119,7 @@ class fs_info IMPLEMENT_FS_FLAG (nwfs) IMPLEMENT_FS_FLAG (ncfsd) IMPLEMENT_FS_FLAG (afs) + IMPLEMENT_FS_FLAG (prlfs) fs_info_type what_fs () const { return status.fs_type; } bool got_fs () const { return status.fs_type != none; } diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 96cf3f5..f26e7f8 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2827,7 +2827,8 @@ restart: } else { - status = file_get_fnoi (h, fs.is_netapp (), conv_hdl.fnoi ()); + status = file_get_fnoi (h, fs.has_broken_fnoi (), + conv_hdl.fnoi ()); if (NT_SUCCESS (status)) fileattr = conv_hdl.fnoi ()->FileAttributes; } diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index 5c464dc..f8cb37a 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -169,6 +169,7 @@ class path_conv 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 ();} + int has_broken_fnoi () const {return fs.has_broken_fnoi ();} int binmode () const { if (path_flags & PATH_BINARY) diff --git a/winsup/cygwin/release/2.3.0 b/winsup/cygwin/release/2.3.0 index d58de2f..ae8f3fc 100644 --- a/winsup/cygwin/release/2.3.0 +++ b/winsup/cygwin/release/2.3.0 @@ -25,6 +25,8 @@ What changed: - setfacl(1) now allows to use the -b and -k option combined to allow reducing an ACL to only reflect standard POSIX permissions. +- Add support for Parallels Desktop FS (prlfs). + Bug Fixes --------- diff --git a/winsup/doc/ChangeLog b/winsup/doc/ChangeLog index f289628..14dd387 100644 --- a/winsup/doc/ChangeLog +++ b/winsup/doc/ChangeLog @@ -1,3 +1,7 @@ +2015-11-02 Corinna Vinschen <corinna@vinschen.de> + + * new-features.xml (ov-new2.3): Document Parallels Desktop FS support. + 2015-10-27 Corinna Vinschen <corinna@vinschen.de> * new-features.xml (ov-new2.3): Document strftime %s addition. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index d65145b..9e742f4 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -40,6 +40,10 @@ an ACL to only reflect standard POSIX permissions. New API: aligned_alloc, at_quick_exit, quick_exit. </para></listitem> +<listitem><para> +Add support for Parallels Desktop FS (prlfs). +</para></listitem> + </itemizedlist> </sect2> |