[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-928-g97c6682

Volker Lendecke vlendec at samba.org
Sat May 9 12:11:23 GMT 2009


The branch, v3-4-test has been updated
       via  97c668276d24743065f16dccaf29704b6f3857f4 (commit)
      from  b6c86e1ef28d9008eec1d39ad714a475dc735c38 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test


- Log -----------------------------------------------------------------
commit 97c668276d24743065f16dccaf29704b6f3857f4
Author: Volker Lendecke <vl at samba.org>
Date:   Sat May 9 11:12:52 2009 +0200

    Do not call SMB_VFS_GET_REAL_FILENAME if the name is mangled
    
    The GPFS get_real_file name does not know about mangled names. Tim, if onefs
    does not either, you need this bugfix :-)
    
    In case onefs does 8.3 names, we need to pass the mangled flag down to
    SMB_VFS_GET_REAL_FILENAME to give GPFS a chance say ENOTSUPP and do the
    fallback.

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/filename.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 774ab27..0d5529b 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -791,16 +791,14 @@ static bool fname_equal(const char *name1, const char *name2,
 
 static int get_real_filename_full_scan(connection_struct *conn,
 				       const char *path, const char *name,
+				       bool mangled,
 				       TALLOC_CTX *mem_ctx, char **found_name)
 {
 	struct smb_Dir *cur_dir;
 	const char *dname;
-	bool mangled;
 	char *unmangled_name = NULL;
 	long curpos;
 
-	mangled = mangle_is_mangled(name, conn->params);
-
 	/* handle null paths */
 	if ((path == NULL) || (*path == 0)) {
 		path = ".";
@@ -897,6 +895,14 @@ int get_real_filename(connection_struct *conn, const char *path,
 		      char **found_name)
 {
 	int ret;
+	bool mangled;
+
+	mangled = mangle_is_mangled(name, conn->params);
+
+	if (mangled) {
+		return get_real_filename_full_scan(conn, path, name, mangled,
+						   mem_ctx, found_name);
+	}
 
 	/* Try the vfs first to take advantage of case-insensitive stat. */
 	ret = SMB_VFS_GET_REAL_FILENAME(conn, path, name, mem_ctx, found_name);
@@ -910,9 +916,8 @@ int get_real_filename(connection_struct *conn, const char *path,
 		return ret;
 	}
 
-	ret = get_real_filename_full_scan(conn, path, name, mem_ctx,
-					  found_name);
-	return ret;
+	return get_real_filename_full_scan(conn, path, name, mangled, mem_ctx,
+					   found_name);
 }
 
 static NTSTATUS build_stream_path(TALLOC_CTX *mem_ctx,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list