This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: opendir/readdir failure on non-Samba Unix-hosted remote volumess


On Jul 29 13:54, Sam Nelson wrote:
> On Mon, July 28, 2008 13:31, Corinna Vinschen wrote:
> >   and right in front of the comment starting in line 1713 in
> >   fhandler_disk_file.cc add
> >
> >     if (!NT_SUCCESS (status))
> >       debug_printf ("NtQueryDirectoryFile failed, status %p, win32 error
> > %lu",
> > 		    status, RtlNtStatusToDosError (status));
> >
> >   Add the same lines preceeding the closing brace in line 1728.
> 
> OK, did that.  With the `augmented' cygwin1.dll in place, my `strace ls'
> now says (excerpted):
> 
> --------------------------------------------------------------------
>  1481  230803 [main] ls 5132 path_conv::check: this->path(h:\), has_acls(0)
>   562  231365 [main] ls 5132 build_fh_pc: fh 0x61168D40
>  7242  238607 [main] ls 5132 fhandler_disk_file::opendir: 0x6857F0 =
> opendir (/cygdrive/h)
>   934  239541 [main] ls 5132 fhandler_disk_file::readdir:
> NtQueryDirectoryFile failed, status 0xC00000BB, win32 error 50
>   526  240067 [main] ls 5132 fhandler_disk_file::readdir:
> NtQueryDirectoryFile failed, status 0xC00000BB, win32 error 50

That's weird.  None of the calls work and the status code is actually
STATUS_NOT_SUPPORTED.  That's ... weird.  I have no idea what to think
about this.  At least the FileBothDirectoryInformation info class is
really old and exists since at least NT 4 times.

Here's a question:  Does TAS have a client side component?  Do you
have to install a driver or something?  Or does it work transparently
like Samba?

> and is otherwise as before, as far as I can tell.  I trust that was
> required?  I haven't tried running against a snapshot build yet, as
> suggested in your later response.

That might not change anything.  The problem here is to figure out what
the underlying problem is and then how to workaround it.  I don't know
how much time you want to invest, but if you want to, you will have to
dig deeper:

- First of all, disable setting dir->__flags |= dirent_get_d_ino in
  fhandler_disk_file::opendir at line 1570.  This disables the
  FileIdBothDirectoryInformation call entirely, so only the
  FileBothDirectoryInformation call is left.

  Try again.  Still status 0xC00000BB?  Bummer.

  Keep dirent_get_d_ino disabled so you can concentrate on a single
  NtQueryDirectoryFile call, the second one.

- Replace FileBothDirectoryInformation with FileDirectoryInformation.
  The readdir call will crash now at one point, but if you call
  `strace ls' from cmd.exe, you get at least one of the above debug
  strings.  Still status 0xC00000BB?  Try FileNamesInformation  Still?

- Change the ninth parameter to NtQueryDirectoryFile from FALSE to TRUE.
  Try again.  Still?  Try in combination with the different info classes.

- Change the NtOpenFile call in fhandler_disk_file::opendir to
  use GENERIC_READ instead of FILE_LIST_DIRECTORY.

- Remove the FILE_OPEN_FOR_BACKUP_INTENT from NtOpenFile.

- Still?  Then we're probably stuck if you can't get help from the
  TAS guys.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]