[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-88-g4a35c97

Volker Lendecke vlendec at samba.org
Sun Mar 1 11:28:46 GMT 2009


The branch, master has been updated
       via  4a35c974e97551b1ccbfa41d4c08f0598e3c26aa (commit)
      from  79fc0ddaf44af1e31d7e6f2c6f576fd3c05e087d (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 4a35c974e97551b1ccbfa41d4c08f0598e3c26aa
Author: Volker Lendecke <vl at samba.org>
Date:   Sun Mar 1 11:39:44 2009 +0100

    Only copy sharename up from rap_to_pjobid
    
    Why?? :-)
    
    Another one of the little micro-optimizations that I just came across: If you
    allocate a variable in a sub-block like the "fstring sharename" in
    write_file(), gcc even with -O3 will allocate this variable unconditionally on
    the stack at the beginning of the routine. So with eliminating this fstring we
    cut 256 bytes of stack in a very hot code path writing to a file. It might make
    us a bit more cache-friendly.
    
    This would probably not be worth a second look if it involved larger code
    changes, but this one was just too simple to let it pass :-)

-----------------------------------------------------------------------

Summary of changes:
 source3/printing/printfsp.c |    3 +--
 source3/printing/printing.c |    4 +++-
 source3/smbd/fileio.c       |    3 +--
 3 files changed, 5 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/printing/printfsp.c b/source3/printing/printfsp.c
index b485711..243b8ea 100644
--- a/source3/printing/printfsp.c
+++ b/source3/printing/printfsp.c
@@ -88,7 +88,6 @@ NTSTATUS print_fsp_open(struct smb_request *req, connection_struct *conn,
 void print_fsp_end(files_struct *fsp, enum file_close_type close_type)
 {
 	uint32 jobid;
-	fstring sharename;
 
 	if (fsp->fh->private_options & FILE_DELETE_ON_CLOSE) {
 		/*
@@ -102,7 +101,7 @@ void print_fsp_end(files_struct *fsp, enum file_close_type close_type)
 		string_free(&fsp->fsp_name);
 	}
 
-	if (!rap_to_pjobid(fsp->rap_print_jobid, sharename, &jobid)) {
+	if (!rap_to_pjobid(fsp->rap_print_jobid, NULL, &jobid)) {
 		DEBUG(3,("print_fsp_end: Unable to convert RAP jobid %u to print jobid.\n",
 			(unsigned int)fsp->rap_print_jobid ));
 		return;
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index 49bd5ac..fc3667e 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -117,7 +117,9 @@ bool rap_to_pjobid(uint16 rap_jobid, fstring sharename, uint32 *pjobid)
 	if ( data.dptr && data.dsize == sizeof(struct rap_jobid_key) )
 	{
 		struct rap_jobid_key *jinfo = (struct rap_jobid_key*)data.dptr;
-		fstrcpy( sharename, jinfo->sharename );
+		if (sharename != NULL) {
+			fstrcpy( sharename, jinfo->sharename );
+		}
 		*pjobid = jinfo->jobid;
 		DEBUG(10,("rap_to_pjobid: jobid %u maps to RAP jobid %u\n",
 			(unsigned int)*pjobid, (unsigned int)rap_jobid));
diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c
index a9a97a2..adf664b 100644
--- a/source3/smbd/fileio.c
+++ b/source3/smbd/fileio.c
@@ -256,10 +256,9 @@ ssize_t write_file(struct smb_request *req,
 	int write_path = -1;
 
 	if (fsp->print_file) {
-		fstring sharename;
 		uint32 jobid;
 
-		if (!rap_to_pjobid(fsp->rap_print_jobid, sharename, &jobid)) {
+		if (!rap_to_pjobid(fsp->rap_print_jobid, NULL, &jobid)) {
 			DEBUG(3,("write_file: Unable to map RAP jobid %u to jobid.\n",
 						(unsigned int)fsp->rap_print_jobid ));
 			errno = EBADF;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list