[PATCH] cifs: don't use CIFSGetSrvInodeNumber in is_path_accessible

Jeff Layton <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
Because it's lighter weight, CIFS tries to do a QPathInfo call with an
infolevel of SMB_QUERY_FILE_INTERNAL_INFO to verify the accessibility of
the root inode. It then falls back to using an infolevel of
SMB_QUERY_FILE_ALL_INFO if that fails with -EOPNOTSUPP.

There's a problem however. SMB_QUERY_FILE_INTERNAL_INFO isn't as well
supported by all servers as SMB_QUERY_FILE_ALL_INFO is, and the error
returns from those servers aren't well standardized. I have at least one
report of a server that returns NT_STATUS_INTERNAL_ERROR (which
translates to EIO) rather than something that translates to EOPNOTSUPP.

Given that that function only gets called at mount time, I think it's
better to do this as simply as possible. Rather than trying to be
clever, just have is_path_accessible use SMB_QUERY_FILE_ALL_INFO. That
call is widely supported and it shouldn't increase the overhead
significantly.

Unfortunately, the reporter of this problem doesn't seem to be in a
hurry to test it, so I don't have any test results from it. Given what I
see in the captures though, I expect that this will fix the problem.

Signed-off-by: Jeff Layton <[email protected]>
---
 fs/cifs/connect.c |    8 --------
 1 files changed, 0 insertions(+), 8 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index b090980..63ea83f 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -2220,16 +2220,8 @@ is_path_accessible(int xid, struct cifsTconInfo *tcon,
 		   struct cifs_sb_info *cifs_sb, const char *full_path)
 {
 	int rc;
-	__u64 inode_num;
 	FILE_ALL_INFO *pfile_info;
 
-	rc = CIFSGetSrvInodeNumber(xid, tcon, full_path, &inode_num,
-				   cifs_sb->local_nls,
-				   cifs_sb->mnt_cifs_flags &
-						CIFS_MOUNT_MAP_SPECIAL_CHR);
-	if (rc != -EOPNOTSUPP)
-		return rc;
-
 	pfile_info = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL);
 	if (pfile_info == NULL)
 		return -ENOMEM;
-- 
1.6.0.6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.