[PATCH 2/4] ntdll: If read_directory_getattrlist() finds that the file doesn't exist, return successful "no file" result to stop search.

Ken Thomases ken at codeweavers.com
Wed May 20 15:39:57 CDT 2015


On May 20, 2015, at 3:09 PM, Matteo Bruni <matteo.mystral at gmail.com> wrote:

> 2015-05-20 21:44 GMT+02:00 Ken Thomases <ken at codeweavers.com>:
> 
>> Good point.  I can add a check for the case-sensitivity of the file system.
> 
> Yeah, that's a possibility. My thought was that it might be better to
> simply fallback to the other methods in that case instead of adding
> another syscall (you can see that as an optimization for the default
> case-insensitive filesystems at the price of worse performance on
> case-sensitive FSs). I'm just speculating though. Either is fine to
> me, your call.

Falling back to the other methods seems to be invariably worse than just checking in read_directory_getattrlist().  For example, read_directory_stat() has the same problem, so it (now) requires a call to get_dir_case_sensitivity(), anyway, plus the call to stat().

I suppose there may be some room for optimization by extracting the part of get_dir_case_sensitivity_attr() after the lookup of ATTR_CMN_DEVID and ATTR_CMN_FSID to a separate function.  Then, we can look up those attributes as part of the primary getattrlist() call in read_directory_getattrlist() and avoid having to do another call to get them for checking case sensitivity.


> BTW thank you for fixing those bugs!

You're welcome.  Thanks for doing the initial work that I was too lazy to do. ;)

-Ken




More information about the wine-devel mailing list