? tsunami.dat
? dmalloc.log
? smb.conf
? diffs
? krb5.conf
? dbench_record.patch
? libads/ldap.c.saved
Index: smbd/nttrans.c
===================================================================
RCS file: /usr/cvs/nas/linux/trinity/samba/samba3/smbd/nttrans.c,v
retrieving revision 1.2
diff -u -u -r1.2 nttrans.c
--- smbd/nttrans.c	2002/01/31 06:48:38	1.2
+++ smbd/nttrans.c	2002/02/04 10:40:50
@@ -649,7 +649,7 @@
 	} else {
 		srvstr_pull(inbuf, fname, smb_buf(inbuf), sizeof(fname), -1, STR_TERMINATE);
 	}
-	
+
 	/*
 	 * Now contruct the smb_open_mode value from the filename, 
 	 * desired access and the share access.
@@ -670,6 +670,11 @@
 	 * Ordinary file or directory.
 	 */
 		
+#if DBENCH_RECORD
+	dbench_record("NTCreateX %s 0x%x 0x%x ", fname, 
+		      create_options, create_disposition);
+#endif
+	
 	/*
 	 * Check if POSIX semantics are wanted.
 	 */
@@ -697,6 +702,9 @@
 				unix_ERR_code = ERRbadpath;
 			}
 			END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+			dbench_record("-1\n");
+#endif
 			return(UNIXERROR(ERRDOS,ERRnoaccess));
 		}
 	} else {
@@ -721,6 +729,7 @@
 				 smb_ofun,unixmode, oplock_request,&rmode,&smb_action);
 
 		if (!fsp) { 
+
 			/* We cheat here. There are two cases we
 			 * care about. One is a directory rename,
 			 * where the NT client will attempt to
@@ -751,6 +760,9 @@
 					SSVAL(outbuf, smb_flg2, 
 					      SVAL(outbuf,smb_flg2) | FLAGS2_32_BIT_ERROR_CODES);
 					END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+					dbench_record("-1\n");
+#endif
 					return ERROR_NT(NT_STATUS_FILE_IS_A_DIRECTORY);
 				}
 	
@@ -764,6 +776,9 @@
 						unix_ERR_code = ERRbadpath;
 					}
 					END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+					dbench_record("-1\n");
+#endif
 					return(UNIXERROR(ERRDOS,ERRnoaccess));
 				}
 #ifdef EROFS
@@ -783,6 +798,9 @@
 				if(!fsp) {
 					restore_case_semantics(file_attributes);
 					END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+					dbench_record("-1\n");
+#endif
 					return(UNIXERROR(ERRDOS,ERRnoaccess));
 				}
 
@@ -796,6 +814,9 @@
 				restore_case_semantics(file_attributes);
 				
 				END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+				dbench_record("-1\n");
+#endif
 				return(UNIXERROR(ERRDOS,ERRnoaccess));
 			}
 		} 
@@ -810,6 +831,9 @@
 	if (!fsp->is_directory && (fmode & aDIR)) {
 		close_file(fsp,False);
 		END_PROFILE(SMBntcreateX);
+#if DBENCH_RECORD
+		dbench_record("-1\n");
+#endif
 		return ERROR_DOS(ERRDOS,ERRnoaccess);
 	} 
 	
@@ -879,6 +903,10 @@
 	SCVAL(p,0,fsp->is_directory ? 1 : 0);
 	
 	DEBUG(5,("reply_ntcreate_and_X: fnum = %d, open name = %s\n", fsp->fnum, fsp->fsp_name));
+
+#if DBENCH_RECORD
+	dbench_record("%u\n", fsp->fnum);
+#endif
 
 	result = chain_reply(inbuf,outbuf,length,bufsize);
 	END_PROFILE(SMBntcreateX);
Index: smbd/reply.c
===================================================================
RCS file: /usr/cvs/nas/linux/trinity/samba/samba3/smbd/reply.c,v
retrieving revision 1.2
diff -u -u -r1.2 reply.c
--- smbd/reply.c	2002/01/31 06:48:38	1.2
+++ smbd/reply.c	2002/02/04 10:40:53
@@ -1006,6 +1006,11 @@
   SSVAL(outbuf,smb_vwv11,smb_action);
 
   END_PROFILE(SMBopenX);
+
+#if DBENCH_RECORD
+  dbench_record("OpenX %s %u %u\n", fname, fsp->fnum, (uint32)size);
+#endif
+
   return chain_reply(inbuf,outbuf,length,bufsize);
 }
 
@@ -1354,7 +1359,11 @@
 	RESOLVE_DFSPATH(name, conn, inbuf, outbuf);
 	
 	DEBUG(3,("reply_unlink : %s\n",name));
-	
+
+#if DBENCH_RECORD
+	dbench_record("Unlink %s\n", name);
+#endif
+
 	status = unlink_internals(conn, dirtype, name);
 	if (!NT_STATUS_IS_OK(status)) return ERROR_NT(status);
 
@@ -1701,6 +1710,11 @@
   DEBUG( 3, ( "readX fnum=%d min=%d max=%d nread=%d\n",
 	      fsp->fnum, (int)smb_mincnt, (int)smb_maxcnt, (int)nread ) );
 
+#if DBENCH_RECORD
+  dbench_record("ReadX %u %u %u %u\n", fsp->fnum, (uint32)startpos, 
+		(uint32)smb_maxcnt, (uint32)nread);
+#endif
+
   END_PROFILE(SMBreadX);
   return chain_reply(inbuf,outbuf,length,bufsize);
 }
@@ -2068,6 +2082,11 @@
   DEBUG(3,("writeX fnum=%d num=%d wrote=%d\n",
 	   fsp->fnum, (int)numtowrite, (int)nwritten));
 
+#if DBENCH_RECORD
+  dbench_record("WriteX %u %u %u %u\n", fsp->fnum, 
+		(uint32)startpos, (uint32)numtowrite, (uint32)nwritten);
+#endif
+
   if (lp_syncalways(SNUM(conn)) || write_through)
     sync_file(conn,fsp);
 
@@ -2174,6 +2193,10 @@
 	} else {
 		sync_file(conn,fsp);
 	}
+
+#if DBENCH_RECORD
+	dbench_record("Flush %u\n", SVAL(inbuf, smb_vwv0));
+#endif
 	
 	DEBUG(3,("flush\n"));
 	END_PROFILE(SMBflush);
@@ -2220,6 +2243,10 @@
 
 	fsp = file_fsp(inbuf,smb_vwv0);
 
+#if DBENCH_RECORD
+	dbench_record("Close %u\n", SVAL(inbuf, smb_vwv0));
+#endif
+
 	/*
 	 * We can only use CHECK_FSP if we know it's not a directory.
 	 */
@@ -3250,6 +3277,10 @@
 	
 	DEBUG(3,("reply_mv : %s -> %s\n",name,newname));
 	
+#if DBENCH_RECORD
+	dbench_record("Rename %s %s\n", name, newname);
+#endif
+
 	status = rename_internals(conn, name, newname, False);
 	if (!NT_STATUS_IS_OK(status)) {
 		return ERROR_NT(status);
@@ -4248,3 +4279,28 @@
   END_PROFILE(SMBgetattrE);
   return(outsize);
 }
+
+
+#if DBENCH_RECORD
+void dbench_record(const char *format, ...)
+{
+	va_list ap;
+	static int log_fd = -1;
+	char *s = NULL;
+
+	if (log_fd == -1) {
+		asprintf(&s, "/tmp/dbenchlog.%u", getpid());
+		log_fd = open(s, O_WRONLY|O_CREAT|O_EXCL, 0644);
+		free(s);
+	}
+
+	if (log_fd == -1) return;
+
+	va_start(ap, format);
+	vasprintf(&s, format, ap);
+	va_end(ap);
+
+	write(log_fd, s, strlen(s));
+	free(s);
+}
+#endif
Index: smbd/trans2.c
===================================================================
RCS file: /usr/cvs/nas/linux/trinity/samba/samba3/smbd/trans2.c,v
retrieving revision 1.3
diff -u -u -r1.3 trans2.c
--- smbd/trans2.c	2002/01/31 06:48:38	1.3
+++ smbd/trans2.c	2002/02/04 10:40:55
@@ -835,6 +835,10 @@
 
   srvstr_pull(inbuf, directory, params+12, sizeof(directory), -1, STR_TERMINATE);
 
+#if DBENCH_RECORD
+  dbench_record("FIND_FIRST %s\n", directory);
+#endif
+
   RESOLVE_FINDFIRST_DFSPATH(directory, conn, inbuf, outbuf);
 
   unix_convert(directory,conn,0,&bad_path,&sbuf);
@@ -1274,6 +1278,10 @@
 
   DEBUG(3,("call_trans2qfsinfo: level = %d\n", info_level));
 
+#if DBENCH_RECORD
+  dbench_record("QUERY_FS_INFORMATION %u\n", info_level);
+#endif
+
   if(vfs_stat(conn,".",&st)!=0) {
     DEBUG(2,("call_trans2qfsinfo: stat of . failed (%s)\n", strerror(errno)));
     return ERROR_DOS(ERRSRV,ERRinvdevice);
@@ -1446,6 +1454,10 @@
 
 		DEBUG(3,("call_trans2qfilepathinfo: TRANSACT2_QFILEINFO: level = %d\n", info_level));
 
+#if DBENCH_RECORD
+		dbench_record("QUERY_FILE_INFORMATION %u\n", SVAL(params, 0));
+#endif
+
 		if(fsp && (fsp->is_directory || fsp->stat_open)) {
 			/*
 			 * This is actually a QFILEINFO on a directory
@@ -1488,6 +1500,10 @@
 		DEBUG(3,("call_trans2qfilepathinfo: TRANSACT2_QPATHINFO: level = %d\n", info_level));
 
 		srvstr_pull(inbuf, fname, &params[6], sizeof(fname), -1, STR_TERMINATE);
+
+#if DBENCH_RECORD
+		dbench_record("QUERY_PATH_INFORMATION %s\n", fname);
+#endif
 
 		RESOLVE_DFSPATH(fname, conn, inbuf, outbuf);
 
