Drop has_broken_udf flag

This commit is contained in:
Corinna Vinschen 2015-12-15 15:04:26 +01:00
parent 222e412f8d
commit e931b1a0eb
4 changed files with 3 additions and 47 deletions

View File

@ -448,18 +448,9 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
except on Samba which handles Windows clients case insensitive. except on Samba which handles Windows clients case insensitive.
NFS doesn't set the FILE_CASE_SENSITIVE_SEARCH flag but is case NFS doesn't set the FILE_CASE_SENSITIVE_SEARCH flag but is case
sensitive. sensitive. */
caseinsensitive ((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ())
UDF on NT 5.x is broken (at least) in terms of case sensitivity. && !is_nfs ());
The UDF driver reports the FILE_CASE_SENSITIVE_SEARCH capability
but:
- Opening the root directory for query seems to work at first,
but the filenames in the directory listing are mutilated.
- When trying to open a file or directory case sensitive, the file
appears to be non-existant. */
caseinsensitive (((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ())
&& !is_nfs ())
|| (is_udf () && wincap.has_broken_udf ()));
if (!in_vol) if (!in_vol)
NtClose (vol); NtClose (vol);

View File

@ -2703,32 +2703,6 @@ restart:
} }
if (status == STATUS_OBJECT_NAME_NOT_FOUND) if (status == STATUS_OBJECT_NAME_NOT_FOUND)
{ {
if (ci_flag == 0 && wincap.has_broken_udf ()
&& (!fs.inited () || fs.is_udf ()))
{
/* On NT 5.x UDF is broken (at least) in terms of case
sensitivity. When trying to open a file case sensitive,
the file appears to be non-existant. Another bug is
described in fs_info::update. */
attr.Attributes = OBJ_CASE_INSENSITIVE;
status = NtOpenFile (&h, READ_CONTROL | FILE_READ_ATTRIBUTES,
&attr, &io, FILE_SHARE_VALID_FLAGS,
FILE_OPEN_REPARSE_POINT
| FILE_OPEN_FOR_BACKUP_INTENT);
debug_printf ("%y = NtOpenFile (broken-UDF, %S)", status, &upath);
attr.Attributes = 0;
if (NT_SUCCESS (status))
{
if (!fs.inited ())
fs.update (&upath, h);
if (!fs.is_udf ())
{
NtClose (h);
h = NULL;
status = STATUS_OBJECT_NAME_NOT_FOUND;
}
}
}
/* There are filesystems out in the wild (Netapp, NWFS, and others) /* There are filesystems out in the wild (Netapp, NWFS, and others)
which are uncapable of generating pathnames outside the Win32 which are uncapable of generating pathnames outside the Win32
rules. That means, filenames on these FSes must not have a rules. That means, filenames on these FSes must not have a

View File

@ -24,7 +24,6 @@ wincaps wincap_xpsp2 __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false, has_gaa_largeaddress_bug:false,
has_transactions:false, has_transactions:false,
has_broken_udf:true,
has_broken_alloc_console:false, has_broken_alloc_console:false,
has_always_all_codepages:false, has_always_all_codepages:false,
has_localenames:false, has_localenames:false,
@ -53,7 +52,6 @@ wincaps wincap_2003 __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false, has_gaa_largeaddress_bug:false,
has_transactions:false, has_transactions:false,
has_broken_udf:true,
has_broken_alloc_console:false, has_broken_alloc_console:false,
has_always_all_codepages:false, has_always_all_codepages:false,
has_localenames:false, has_localenames:false,
@ -82,7 +80,6 @@ wincaps wincap_vista __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:true, needs_count_in_si_lpres2:true,
has_gaa_largeaddress_bug:true, has_gaa_largeaddress_bug:true,
has_transactions:true, has_transactions:true,
has_broken_udf:false,
has_broken_alloc_console:false, has_broken_alloc_console:false,
has_always_all_codepages:true, has_always_all_codepages:true,
has_localenames:true, has_localenames:true,
@ -111,7 +108,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:true, has_gaa_largeaddress_bug:true,
has_transactions:true, has_transactions:true,
has_broken_udf:false,
has_broken_alloc_console:true, has_broken_alloc_console:true,
has_always_all_codepages:true, has_always_all_codepages:true,
has_localenames:true, has_localenames:true,
@ -140,7 +136,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false, has_gaa_largeaddress_bug:false,
has_transactions:true, has_transactions:true,
has_broken_udf:false,
has_broken_alloc_console:true, has_broken_alloc_console:true,
has_always_all_codepages:true, has_always_all_codepages:true,
has_localenames:true, has_localenames:true,
@ -169,7 +164,6 @@ wincaps wincap_10 __attribute__((section (".cygwin_dll_common"), shared)) = {
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false, has_gaa_largeaddress_bug:false,
has_transactions:true, has_transactions:true,
has_broken_udf:false,
has_broken_alloc_console:true, has_broken_alloc_console:true,
has_always_all_codepages:true, has_always_all_codepages:true,
has_localenames:true, has_localenames:true,
@ -198,7 +192,6 @@ wincaps wincap_10_1511 __attribute__((section (".cygwin_dll_common"), shared)) =
needs_count_in_si_lpres2:false, needs_count_in_si_lpres2:false,
has_gaa_largeaddress_bug:false, has_gaa_largeaddress_bug:false,
has_transactions:true, has_transactions:true,
has_broken_udf:false,
has_broken_alloc_console:true, has_broken_alloc_console:true,
has_always_all_codepages:true, has_always_all_codepages:true,
has_localenames:true, has_localenames:true,

View File

@ -17,7 +17,6 @@ struct wincaps
unsigned needs_count_in_si_lpres2 : 1; unsigned needs_count_in_si_lpres2 : 1;
unsigned has_gaa_largeaddress_bug : 1; unsigned has_gaa_largeaddress_bug : 1;
unsigned has_transactions : 1; unsigned has_transactions : 1;
unsigned has_broken_udf : 1;
unsigned has_broken_alloc_console : 1; unsigned has_broken_alloc_console : 1;
unsigned has_always_all_codepages : 1; unsigned has_always_all_codepages : 1;
unsigned has_localenames : 1; unsigned has_localenames : 1;
@ -71,7 +70,6 @@ public:
bool IMPLEMENT (needs_count_in_si_lpres2) bool IMPLEMENT (needs_count_in_si_lpres2)
bool IMPLEMENT (has_gaa_largeaddress_bug) bool IMPLEMENT (has_gaa_largeaddress_bug)
bool IMPLEMENT (has_transactions) bool IMPLEMENT (has_transactions)
bool IMPLEMENT (has_broken_udf)
bool IMPLEMENT (has_broken_alloc_console) bool IMPLEMENT (has_broken_alloc_console)
bool IMPLEMENT (has_always_all_codepages) bool IMPLEMENT (has_always_all_codepages)
bool IMPLEMENT (has_localenames) bool IMPLEMENT (has_localenames)