summaryrefslogtreecommitdiff
path: root/source3/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
commit5e5e320d361afcb4d9503354b3912b4c7a672197 (patch)
tree77b9557fe080a5e15d077d8e9fec3bae993356f7 /source3/smbd/trans2.c
parent74a2764726ce1047c79c7eaa84628901462a9b10 (diff)
downloadsamba-5e5e320d361afcb4d9503354b3912b4c7a672197.tar.gz
samba-5e5e320d361afcb4d9503354b3912b4c7a672197.tar.bz2
samba-5e5e320d361afcb4d9503354b3912b4c7a672197.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. (This used to be commit d0e48a2d8072c3e77a57ac6a2fb5044c05f03b41)
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index fe22a21ca1..da11dbcb29 100644
--- a/source3/smbd/trans2.c
+++ b/source3/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));