Module Name:    src
Committed By:   njoly
Date:           Mon Jul  6 11:46:49 UTC 2009

Modified Files:
        src/sys/netsmb: smb_iod.c smb_rq.c

Log Message:
Do initialise the callout when fetching a new request structure from
the pool, not when starting the timer. Likewise, destroy the callout
when giving back the item to the pool.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/netsmb/smb_iod.c src/sys/netsmb/smb_rq.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netsmb/smb_iod.c
diff -u src/sys/netsmb/smb_iod.c:1.31 src/sys/netsmb/smb_iod.c:1.32
--- src/sys/netsmb/smb_iod.c:1.31	Wed Jul  1 10:01:28 2009
+++ src/sys/netsmb/smb_iod.c	Mon Jul  6 11:46:49 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: smb_iod.c,v 1.31 2009/07/01 10:01:28 njoly Exp $	*/
+/*	$NetBSD: smb_iod.c,v 1.32 2009/07/06 11:46:49 njoly Exp $	*/
 
 /*
  * Copyright (c) 2000-2001 Boris Popov
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smb_iod.c,v 1.31 2009/07/01 10:01:28 njoly Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smb_iod.c,v 1.32 2009/07/06 11:46:49 njoly Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -269,11 +269,9 @@
 	m = m_copym(rqp->sr_rq.mb_top, 0, M_COPYALL, M_WAIT);
 	error = rqp->sr_lerror = (m) ? SMB_TRAN_SEND(vcp, m, l) : ENOBUFS;
 	if (error == 0) {
-		if (rqp->sr_timo > 0) {
-			callout_init(&rqp->sr_timo_ch, 0);
+		if (rqp->sr_timo > 0)
 			callout_reset(&rqp->sr_timo_ch, rqp->sr_timo,
 				smb_iod_rqtimedout, rqp);
-		}
 
 		if (rqp->sr_flags & SMBR_NOWAIT) {
 			/* caller doesn't want to wait, flag as processed */
Index: src/sys/netsmb/smb_rq.c
diff -u src/sys/netsmb/smb_rq.c:1.31 src/sys/netsmb/smb_rq.c:1.32
--- src/sys/netsmb/smb_rq.c:1.31	Wed Mar 18 16:00:24 2009
+++ src/sys/netsmb/smb_rq.c	Mon Jul  6 11:46:49 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: smb_rq.c,v 1.31 2009/03/18 16:00:24 cegger Exp $	*/
+/*	$NetBSD: smb_rq.c,v 1.32 2009/07/06 11:46:49 njoly Exp $	*/
 
 /*
  * Copyright (c) 2000-2001, Boris Popov
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smb_rq.c,v 1.31 2009/03/18 16:00:24 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smb_rq.c,v 1.32 2009/07/06 11:46:49 njoly Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -95,6 +95,7 @@
 	rqp = pool_get(&smbrq_pool, PR_WAITOK);
 	error = smb_rq_init(rqp, layer, cmd, scred);
 	rqp->sr_flags |= SMBR_ALLOCED;
+	callout_init(&rqp->sr_timo_ch, 0);
 	if (error) {
 		smb_rq_done(rqp);
 		return error;
@@ -166,8 +167,10 @@
 	mb_done(&rqp->sr_rq);
 	md_done(&rqp->sr_rp);
 	smb_sl_destroy(&rqp->sr_slock);
-	if (rqp->sr_flags & SMBR_ALLOCED)
+	if (rqp->sr_flags & SMBR_ALLOCED) {
+		callout_destroy(&rqp->sr_timo_ch);
 		pool_put(&smbrq_pool, rqp);
+	}
 }
 
 /*

Reply via email to