svn commit: samba r7414 - in trunk/source/smbd: .

jra at samba.org jra at samba.org
Wed Jun 8 21:39:30 GMT 2005


Author: jra
Date: 2005-06-08 21:39:29 +0000 (Wed, 08 Jun 2005)
New Revision: 7414

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7414

Log:
Pass valgrind with multiple aio write calls in flight.
Jeremy.

Modified:
   trunk/source/smbd/aio.c


Changeset:
Modified: trunk/source/smbd/aio.c
===================================================================
--- trunk/source/smbd/aio.c	2005-06-08 21:01:04 UTC (rev 7413)
+++ trunk/source/smbd/aio.c	2005-06-08 21:39:29 UTC (rev 7414)
@@ -267,6 +267,7 @@
 {
 	struct aio_extra *aio_ex;
 	SMB_STRUCT_AIOCB *a;
+	size_t outbufsize;
 	size_t min_aio_write_size = lp_aio_write_size(SNUM(conn));
 
 	if (min_aio_write_size && (numtowrite < min_aio_write_size)) {
@@ -284,7 +285,8 @@
 		return False;
 	}
 
-	if ((aio_ex = create_aio_ex_write(fsp, smb_len(outbuf) + 4, SVAL(inbuf,smb_mid))) == NULL) {
+	outbufsize = smb_len(outbuf) + 4;
+	if ((aio_ex = create_aio_ex_write(fsp, outbufsize, SVAL(inbuf,smb_mid))) == NULL) {
 		DEBUG(10,("schedule_aio_read_and_X: malloc fail.\n"));
 		return False;
 	}
@@ -293,7 +295,7 @@
 	SMB_ASSERT(aio_ex->inbuf == inbuf);
 
 	/* Copy the SMB header already setup in outbuf. */
-	memcpy(aio_ex->outbuf, outbuf, smb_buf(outbuf) - outbuf);
+	memcpy(aio_ex->outbuf, outbuf, outbufsize);
 	SCVAL(aio_ex->outbuf,smb_vwv0,0xFF); /* Never a chained reply. */
 
 	a = &aio_ex->acb;
@@ -390,7 +392,6 @@
 
 static void handle_aio_write_complete(struct aio_extra *aio_ex)
 {
-	int outsize;
 	char *outbuf = aio_ex->outbuf;
 	ssize_t nwritten = aio_return(&aio_ex->acb);
 	ssize_t numtowrite = aio_ex->acb.aio_nbytes;
@@ -402,6 +403,9 @@
 		return;
 	}
 
+	/* We don't need outsize or set_message here as we've already set the
+	   fixed size length when we set up the aio call. */
+
 	if(nwritten == -1) {
 		DEBUG( 3,( "handle_aio_write: file %s wanted %u bytes. nwritten == %d. Error = %s\n",
 			aio_ex->fsp->fsp_name, (unsigned int)numtowrite,
@@ -413,7 +417,7 @@
 			return;
 		}
 
-                outsize = (UNIXERROR(ERRHRD,ERRdiskfull));
+		UNIXERROR(ERRHRD,ERRdiskfull);
         } else {
 		BOOL write_through = BITSETW(aio_ex->inbuf+smb_vwv7,0);
 
@@ -430,7 +434,6 @@
 		}
 	}
 
-	smb_setlen(outbuf,outsize - 4);
 	show_msg(outbuf);
 	if (!send_smb(smbd_server_fd(),outbuf)) {
 		exit_server("handle_aio_write: send_smb failed.");



More information about the samba-cvs mailing list