1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-28 01:58:17 +03:00

Revert "Remove the global char *LastDir."

Volker pointed out I'd missed the "last directory" cache
part of this code. Return us to caching the directory we're
in (reduces sys call load).

Mea maxima culpa.

Jeremy.

This reverts commit 2f30aea3324f32f9b8555e961256fc1280da2871.
This commit is contained in:
Jeremy Allison 2010-07-13 09:30:35 -07:00
parent 53e1586e2a
commit 5bdb8b472c
3 changed files with 22 additions and 1 deletions

View File

@ -105,6 +105,7 @@ int conn_ctx_stack_ndx = 0;
struct vfs_init_function_entry *backends = NULL;
char *sparse_buf = NULL;
char *LastDir = NULL;
/* Current number of oplocks we have outstanding. */
int32_t exclusive_oplocks_open = 0;

View File

@ -115,6 +115,7 @@ extern int conn_ctx_stack_ndx;
struct vfs_init_function_entry;
extern struct vfs_init_function_entry *backends;
extern char *sparse_buf;
extern char *LastDir;
/* Current number of oplocks we have outstanding. */
extern int32_t exclusive_oplocks_open;

View File

@ -707,7 +707,26 @@ const char *vfs_readdirname(connection_struct *conn, void *p,
int vfs_ChDir(connection_struct *conn, const char *path)
{
return SMB_VFS_CHDIR(conn,path);
int res;
if (!LastDir) {
LastDir = SMB_STRDUP("");
}
if (strcsequal(path,"."))
return(0);
if (*path == '/' && strcsequal(LastDir,path))
return(0);
DEBUG(4,("vfs_ChDir to %s\n",path));
res = SMB_VFS_CHDIR(conn,path);
if (!res) {
SAFE_FREE(LastDir);
LastDir = SMB_STRDUP(path);
}
return(res);
}
/*******************************************************************