* globals.cc (ro_u_ncfsd): New R/O unicode string.

* mount.cc (fs_info::update): Check for "NcFsd" FS.  Set flags and
	change comments accordingly.
	(fs_names): Add entry for NcFsd FS.
	* mount.h (enum fs_info_type): Add ncfsd.
	(class fs_info): Add ncfsd flag and accessor methods.
	* path.h (class path_conv): Add fs_is_ncfsd method.
	* syscalls.cc (unlink_nt): Experimentally try delete-on-close on NcFsd
	in STATUS_CANNOT_DELETE case.
This commit is contained in:
Corinna Vinschen
2011-10-21 08:29:19 +00:00
parent b2099ee728
commit 69178ca038
6 changed files with 31 additions and 10 deletions

View File

@@ -360,7 +360,9 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
and stuff like that. */
&& !is_mvfs (RtlEqualUnicodePathPrefix (&fsname, &ro_u_mvfs, FALSE))
/* NWFS == Novell Netware FS. Broken info class, see below. */
/* NcFsd == Novell Netware FS via own driver since Windows Vista. */
&& !is_nwfs (RtlEqualUnicodeString (&fsname, &ro_u_nwfs, FALSE))
&& !is_ncfsd (RtlEqualUnicodeString (&fsname, &ro_u_ncfsd, FALSE))
/* UNIXFS == TotalNet Advanced Server (TAS). Doesn't support
FileIdBothDirectoryInformation. See below. */
&& !is_unixfs (RtlEqualUnicodeString (&fsname, &ro_u_unixfs, FALSE)))
@@ -377,22 +379,23 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
Know example: EMC NS-702. We just don't use that info class on
any remote CIFS. */
has_buggy_fileid_dirinfo (is_cifs () || is_unixfs ());
/* NWFS is known to have a broken FileBasicInformation info class.
It can't be used to fetch information, only to set information.
Therefore, for NWFS we have to fallback to the
/* NWFS/NcFsd is known to have a broken FileBasicInformation info
class. It can't be used to fetch information, only to set
information. Therefore, for NWFS we have to fallback to the
FileNetworkOpenInformation info class. Unfortunately we can't
use FileNetworkOpenInformation all the time since that fails on
other filesystems like NFS.
UNUSED, but keep in for information purposes. */
has_buggy_basic_info (is_nwfs ());
/* Netapp and NWFS are too dumb to allow non-DOS filenames
has_buggy_basic_info (is_nwfs () || is_ncfsd ());
/* Netapp and NWFS/NcFsd are too dumb to allow non-DOS filenames
containing trailing dots and spaces when accessed from Windows
clients. We subsume CIFS into this class of filesystems right
away since at least some of them are not capable either. */
has_dos_filenames_only (is_netapp () || is_nwfs () || is_cifs ());
has_dos_filenames_only (is_netapp () || is_nwfs ()
|| is_ncfsd () || is_cifs ());
/* NWFS does not grok re-opening a file by handle. It only
supports this if the filename is non-null and the handle is
the handle to a directory. */
the handle to a directory. NcFsd IR10 is supposed to be ok. */
has_buggy_reopen (is_nwfs ());
}
}
@@ -1584,7 +1587,8 @@ fs_names_t fs_names[] = {
{ "unixfs", false },
{ "mvfs", false },
{ "cifs", false },
{ "nwfs", false }
{ "nwfs", false },
{ "ncfsd", false }
};
static mntent *