[Samba] How to improve the performance with unix_convert ?

李庆波 lqb_hebust at 163.com
Wed May 29 13:39:10 UTC 2019


Dear all:
  I used samba version 4.8.6 .I want to creat and write file in a dir,but the dir have a lots file ,may be 200000+.The creat or write will be slowly more than 1s.
I watched the code ,the operation will be running the unix_convert .the function is time-consuming .
if I modify the code get_real_filename_full_scan in the filename.c .the client will be failed to find some file .but the write speed will be improved .




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 = NULL;
char *talloced = NULL;
char *unmangled_name = NULL;
long curpos;
struct smb_filename *smb_fname = NULL;


/* handle null paths */
if ((path == NULL) || (*path == 0)) {
path = ".";
}


/* If we have a case-sensitive filesystem, it doesn't do us any
* good to search for a name. If a case variation of the name was
* there, then the original stat(2) would have found it.
*/
    
errno = ENOENT;
return -1;
 
if (!mangled && !(conn->fs_capabilities & FILE_CASE_SENSITIVE_SEARCH)) {
errno = ENOENT;
return -1;
}

the smb.conf has some parm like this: 
case sensitive = Yes        


default case = upper        


preserve case = No        


short preserve case = No


  can I help me ? 


 



--



Email:lqb_hebust at 163.com
2019年5月29日


More information about the samba mailing list