summaryrefslogtreecommitdiffstats
path: root/source/smbd/trans2.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-08-27 20:38:53 +0000
committerJeremy Allison <jra@samba.org>1998-08-27 20:38:53 +0000
commitd0e48a2d8072c3e77a57ac6a2fb5044c05f03b41 (patch)
tree8f51fb0e5b4ce8b76b4b2b834b1f8aa5246daaa8 /source/smbd/trans2.c
parentcdc38c276d8344127c9edf35f24754c098a90754 (diff)
downloadsamba-d0e48a2d8072c3e77a57ac6a2fb5044c05f03b41.tar.gz
samba-d0e48a2d8072c3e77a57ac6a2fb5044c05f03b41.tar.xz
samba-d0e48a2d8072c3e77a57ac6a2fb5044c05f03b41.zip
This is the stat cache code - seems to work fine (needs heavy
NetBench testing though.... :-). Attempts to efficiently reduce the number of stat() calls Samba does. Jeremy.
Diffstat (limited to 'source/smbd/trans2.c')
-rw-r--r--source/smbd/trans2.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index fe22a21ca19..da11dbcb292 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -214,7 +214,7 @@ static int call_trans2open(connection_struct *conn, char *inbuf, char *outbuf,
/* XXXX we need to handle passed times, sattr and flags */
- unix_convert(fname,conn,0,&bad_path);
+ unix_convert(fname,conn,0,&bad_path,NULL);
fsp = file_new();
if (!fsp)
@@ -659,7 +659,7 @@ static int call_trans2findfirst(connection_struct *conn,
DEBUG(5,("path=%s\n",directory));
- unix_convert(directory,conn,0,&bad_path);
+ unix_convert(directory,conn,0,&bad_path,NULL);
if(!check_name(directory,conn)) {
if((errno == ENOENT) && bad_path)
{
@@ -1225,8 +1225,8 @@ static int call_trans2qfilepathinfo(connection_struct *conn,
info_level = SVAL(params,0);
fname = &fname1[0];
pstrcpy(fname,&params[6]);
- unix_convert(fname,conn,0,&bad_path);
- if (!check_name(fname,conn) || sys_stat(fname,&sbuf)) {
+ unix_convert(fname,conn,0,&bad_path,&sbuf);
+ if (!check_name(fname,conn) || (!VALID_STAT(sbuf) && sys_stat(fname,&sbuf))) {
DEBUG(3,("fileinfo of %s failed (%s)\n",fname,strerror(errno)));
if((errno == ENOENT) && bad_path)
{
@@ -1459,7 +1459,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
info_level = SVAL(params,0);
fname = fname1;
pstrcpy(fname,&params[6]);
- unix_convert(fname,conn,0,&bad_path);
+ unix_convert(fname,conn,0,&bad_path,&st);
if(!check_name(fname, conn))
{
if((errno == ENOENT) && bad_path)
@@ -1470,7 +1470,7 @@ static int call_trans2setfilepathinfo(connection_struct *conn,
return(UNIXERROR(ERRDOS,ERRbadpath));
}
- if(sys_stat(fname,&st)!=0) {
+ if(!VALID_STAT(st) && sys_stat(fname,&st)!=0) {
DEBUG(3,("stat of %s failed (%s)\n", fname, strerror(errno)));
if((errno == ENOENT) && bad_path)
{
@@ -1648,7 +1648,7 @@ static int call_trans2mkdir(connection_struct *conn,
DEBUG(3,("call_trans2mkdir : name = %s\n", directory));
- unix_convert(directory,conn,0,&bad_path);
+ unix_convert(directory,conn,0,&bad_path,NULL);
if (check_name(directory,conn))
ret = sys_mkdir(directory,unix_mode(conn,aDIR));