aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-11-02 12:08:25 +0100
committerCorinna Vinschen <corinna@vinschen.de>2015-11-02 15:37:26 +0100
commitdad28a9a17a862605b3b5a5ed2c1918f8d6d6793 (patch)
tree23917f429ccf41fbbeab86a65a5d1e0294039d2a
parentd64c9bf8dbe6550da458831729d0e57a86970e76 (diff)
downloadnewlib-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/ChangeLog13
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc2
-rw-r--r--winsup/cygwin/globals.cc1
-rw-r--r--winsup/cygwin/mount.cc10
-rw-r--r--winsup/cygwin/mount.h6
-rw-r--r--winsup/cygwin/path.cc3
-rw-r--r--winsup/cygwin/path.h1
-rw-r--r--winsup/cygwin/release/2.3.02
-rw-r--r--winsup/doc/ChangeLog4
-rw-r--r--winsup/doc/new-features.xml4
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>