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>
This commit is contained in:
parent
7ac60f6ceb
commit
df6206aa56
|
@ -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
|
||||
|
|
|
@ -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, "
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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 }
|
||||
};
|
||||
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -22,6 +22,8 @@ What's new:
|
|||
What changed:
|
||||
-------------
|
||||
|
||||
- Add support for Parallels Desktop FS (prlfs).
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue