]> sourceware.org Git - newlib-cygwin.git/commitdiff
Add support for Parallels Desktop FS (prlfs)
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 2 Nov 2015 11:08:25 +0000 (12:08 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 2 Nov 2015 11:08:25 +0000 (12:08 +0100)
* 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>
winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_disk_file.cc
winsup/cygwin/globals.cc
winsup/cygwin/mount.cc
winsup/cygwin/mount.h
winsup/cygwin/path.cc
winsup/cygwin/path.h
winsup/cygwin/release/2.3.0
winsup/doc/ChangeLog
winsup/doc/new-features.xml

index e46ffef09fcc6805324926e09628e60eef09904c..9dfa1b37858f45466f374be0ad2d545e25a48275 100644 (file)
@@ -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
index 455c478fb85ee047f3d885218aec6f72d0ead382..c38ba024386d478da4a1046ea00b95e771f7abb3 100644 (file)
@@ -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, "
index 09c08f20c52ca85eef0afd25331955172e6e67d0..7a17376afda96e9048a342383b0ad75d09f8a7cc 100644 (file)
@@ -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");
index 6cf3ddf46793c006d85221505baf0650aee175f7..01f17598c88d7678369ddc8811468378a664505b 100644 (file)
@@ -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 }
 };
 
index e7d5426834ced8c25fedf0f5f0ddacb5e31b26ac..986f9a96b4ad6fff443baab746c4f4522a95b4fd 100644 (file)
@@ -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; }
 
index 54c96fee51a7bb0bcc94ba8252273c4a83c67c8e..035872d3772899052c7a624138b534f9d9d449f9 100644 (file)
@@ -2828,7 +2828,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;
            }
index 5c464dc9a4f6c1ca4ea677adbdd5311aed251c56..f8cb37a8b77ebb10ed15fcfc211a07a7eca1d65e 100644 (file)
@@ -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)
index 77090e38e477f4cd57a41961e38d83cc6ba51416..8cf032d8916a7d964f66976c3fa49edcf15e3a35 100644 (file)
@@ -22,6 +22,8 @@ What's new:
 What changed:
 -------------
 
+- Add support for Parallels Desktop FS (prlfs).
+
 
 Bug Fixes
 ---------
index f2896288097951cbc5f573bd9e251c770ba2eee7..14dd387f947d41a515fdea773aad0e420567fa26 100644 (file)
@@ -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.
index 469312fee1455ead0da4629cf73a70d499f635f4..88eb25ca6bbcd08e7455552d1d406451afa9ae1d 100644 (file)
@@ -35,6 +35,10 @@ sysconf() now supports returning CPU cache information:
 New API: aligned_alloc, at_quick_exit, quick_exit.
 </para></listitem>
 
+<listitem><para>
+Add support for Parallels Desktop FS (prlfs).
+</para></listitem>
+
 </itemizedlist>
 
 </sect2>
This page took 0.047564 seconds and 5 git commands to generate.