Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Dec 2003 15:01:22 -0800 (PST)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 43694 for review
Message-ID:  <200312092301.hB9N1MSk033244@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=43694

Change 43694 by sam@sam_ebb on 2003/12/09 15:00:21

	o remove Giant assertions
	o lock snd sockbuf so we can preserve assertions; not necessary
	  unless we decide to do fine-grained locking of nfs

Affected files ...

.. //depot/projects/netperf+sockets/sys/nfsclient/bootp_subr.c#3 edit
.. //depot/projects/netperf+sockets/sys/nfsclient/krpc_subr.c#3 edit
.. //depot/projects/netperf+sockets/sys/nfsclient/nfs_bio.c#3 edit
.. //depot/projects/netperf+sockets/sys/nfsclient/nfs_socket.c#3 edit
.. //depot/projects/netperf+sockets/sys/nfsclient/nfs_subs.c#3 edit
.. //depot/projects/netperf+sockets/sys/nfsclient/nfs_vfsops.c#4 edit

Differences ...

==== //depot/projects/netperf+sockets/sys/nfsclient/bootp_subr.c#3 (text+ko) ====

@@ -589,8 +589,6 @@
 	int retry;
 	const char *s;
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	/*
 	 * Create socket and set its recieve timeout.
 	 */
@@ -981,8 +979,6 @@
 	struct ifaddr *ifa;
 	struct sockaddr_dl *sdl;
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	error = socreate(AF_INET, &ifctx->so, SOCK_DGRAM, 0, td->td_ucred, td);
 	if (error != 0)
 		panic("nfs_boot: socreate, error=%d", error);

==== //depot/projects/netperf+sockets/sys/nfsclient/krpc_subr.c#3 (text+ko) ====

@@ -215,8 +215,6 @@
 	nam = mhead = NULL;
 	from = NULL;
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	/*
 	 * Create socket and set its recieve timeout.
 	 */

==== //depot/projects/netperf+sockets/sys/nfsclient/nfs_bio.c#3 (text+ko) ====


==== //depot/projects/netperf+sockets/sys/nfsclient/nfs_socket.c#3 (text+ko) ====

@@ -165,8 +165,6 @@
 	struct sockaddr *saddr;
 	struct thread *td = &thread0; /* only used for socreate and sobind */
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	nmp->nm_so = NULL;
 	saddr = nmp->nm_nam;
 	error = socreate(saddr->sa_family, &nmp->nm_so, nmp->nm_sotype,
@@ -383,8 +381,6 @@
 {
 	struct socket *so;
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	if (nmp->nm_so) {
 		so = nmp->nm_so;
 		nmp->nm_so = NULL;
@@ -419,8 +415,6 @@
 	struct sockaddr *sendnam;
 	int error, soflags, flags;
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	KASSERT(rep, ("nfs_send: called with rep == NULL"));
 
 	if (rep->r_flags & R_SOFTTERM) {
@@ -494,8 +488,6 @@
 	int error, sotype, rcvflg;
 	struct thread *td = curthread;	/* XXX */
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 	/*
 	 * Set up arguments for soreceive()
 	 */
@@ -1139,6 +1131,7 @@
 		 * Set r_rtt to -1 in case we fail to send it now.
 		 */
 		rep->r_rtt = -1;
+		SOCKBUF_LOCK(&so->so_snd);
 		if (sbspace(&so->so_snd) >= rep->r_mreq->m_pkthdr.len &&
 		   ((nmp->nm_flag & NFSMNT_DUMBTIMR) ||
 		    (rep->r_flags & R_SENT) ||
@@ -1174,6 +1167,7 @@
 				rep->r_rtt = 0;
 			}
 		}
+		SOCKBUF_UNLOCK(&so->so_snd);
 	}
 	splx(s);
 	nfs_timer_handle = timeout(nfs_timer, NULL, nfs_ticks);

==== //depot/projects/netperf+sockets/sys/nfsclient/nfs_subs.c#3 (text+ko) ====


==== //depot/projects/netperf+sockets/sys/nfsclient/nfs_vfsops.c#4 (text+ko) ====

@@ -387,8 +387,6 @@
 	u_long l;
 	char buf[128];
 
-	GIANT_REQUIRED;		/* XXX until socket locking done */
-
 #if defined(BOOTP_NFSROOT) && defined(BOOTP)
 	bootpc_init();		/* use bootp to get nfs_diskless filled in */
 #elif defined(NFS_ROOT)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200312092301.hB9N1MSk033244>