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

jra at samba.org jra at samba.org
Tue Oct 25 05:28:01 GMT 2005


Author: jra
Date: 2005-10-25 05:28:00 +0000 (Tue, 25 Oct 2005)
New Revision: 11284

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

Log:
Move to using sival_int from sival_ptr. Part of bug #2922.
Jeremy.

Modified:
   trunk/source/smbd/aio.c


Changeset:
Modified: trunk/source/smbd/aio.c
===================================================================
--- trunk/source/smbd/aio.c	2005-10-25 05:26:53 UTC (rev 11283)
+++ trunk/source/smbd/aio.c	2005-10-25 05:28:00 UTC (rev 11284)
@@ -155,7 +155,7 @@
 static void signal_handler(int sig, siginfo_t *info, void *unused)
 {
 	if (signals_received < AIO_PENDING_SIZE - 1) {
-		aio_pending_array[signals_received] = *(uint16 *)(info->si_value.sival_ptr);
+		aio_pending_array[signals_received] = info->si_value.sival_int;
 		signals_received++;
 	} /* Else signal is lost. */
 	sys_select_signal(RT_SIGNAL_AIO);
@@ -248,7 +248,7 @@
 	a->aio_offset = startpos;
 	a->aio_sigevent.sigev_notify = SIGEV_SIGNAL;
 	a->aio_sigevent.sigev_signo  = RT_SIGNAL_AIO;
-	a->aio_sigevent.sigev_value.sival_ptr = (void *)&aio_ex->mid;
+	a->aio_sigevent.sigev_value.sival_int = aio_ex->mid;
 
 	if (SMB_VFS_AIO_READ(fsp,a) == -1) {
 		DEBUG(0,("schedule_aio_read_and_X: aio_read failed. Error %s\n",
@@ -327,7 +327,7 @@
 	a->aio_offset = startpos;
 	a->aio_sigevent.sigev_notify = SIGEV_SIGNAL;
 	a->aio_sigevent.sigev_signo  = RT_SIGNAL_AIO;
-	a->aio_sigevent.sigev_value.sival_ptr = (void *)&aio_ex->mid;
+	a->aio_sigevent.sigev_value.sival_int = aio_ex->mid;
 
 	if (SMB_VFS_AIO_WRITE(fsp,a) == -1) {
 		DEBUG(3,("schedule_aio_wrote_and_X: aio_write failed. Error %s\n",
@@ -642,10 +642,16 @@
 
 		/* One or more events might have completed - process them if so. */
 		for( i = 0; i < aio_completion_count; i++) {
-			uint16 mid = *(uint16 *)aiocb_list[i]->aio_sigevent.sigev_value.sival_ptr;
+			uint16 mid = aiocb_list[i]->aio_sigevent.sigev_value.sival_int;
 
 			aio_ex = find_aio_ex(mid);
 
+			if (!aio_ex) {
+				DEBUG(0, ("wait_for_aio_completion: mid %u doesn't match an aio record\n",
+					(unsigned int)mid ));
+				continue;
+			}
+
 			if (!handle_aio_completed(aio_ex, &err)) {
 				continue;
 			}



More information about the samba-cvs mailing list