Remove support for SUNWNFS file system

This commit is contained in:
Corinna Vinschen 2015-12-15 13:56:39 +01:00
parent b2867a68b9
commit 733af66c6e
5 changed files with 11 additions and 37 deletions

View File

@ -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;

View File

@ -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");

View File

@ -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 },

View File

@ -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)

View File

@ -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 ();}