diff options
author | Steve French <smfrench@austin.rr.com> | 2005-04-28 22:41:04 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-28 22:41:04 -0700 |
commit | 75cf6bdc52d86ca815f1129529e43f0d904b18d5 (patch) | |
tree | 1a2849fe1ee2603a9f8e6c6ccc0d43e73b70e02f /fs/cifs/readdir.c | |
parent | f654bac2227adc5c6956405290eeb4f81f09e9ff (diff) |
[PATCH] cifs: Gracefully turn off serverino (when serverino is enabled on mount)
Old servers such as NT4 do not support this level of FindFirst (and
retry with a lower infolevel)
Signed-off-by: Steve French (sfrench@us.ibm.com)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/cifs/readdir.c')
-rw-r--r-- | fs/cifs/readdir.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index f8bea395ec9..07838a5ba3a 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -323,6 +323,7 @@ static int initiate_cifs_search(const int xid, struct file *file) cFYI(1, ("Full path: %s start at: %lld ", full_path, file->f_pos)); +ffirst_retry: /* test for Unix extensions */ if (pTcon->ses->capabilities & CAP_UNIX) { cifsFile->srch_inf.info_level = SMB_FIND_FILE_UNIX; @@ -336,6 +337,11 @@ static int initiate_cifs_search(const int xid, struct file *file) &cifsFile->netfid, &cifsFile->srch_inf); if(rc == 0) cifsFile->invalidHandle = FALSE; + if((rc == -EOPNOTSUPP) && + (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) { + cifs_sb->mnt_cifs_flags &= ~CIFS_MOUNT_SERVER_INUM; + goto ffirst_retry; + } kfree(full_path); return rc; } |