From owner-svn-src-projects@FreeBSD.ORG  Sun Feb  5 01:57:31 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D18AF106564A;
	Sun,  5 Feb 2012 01:57:31 +0000 (UTC)
	(envelope-from rmacklem@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BBF528FC14;
	Sun,  5 Feb 2012 01:57:31 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q151vVHd061258;
	Sun, 5 Feb 2012 01:57:31 GMT (envelope-from rmacklem@svn.freebsd.org)
Received: (from rmacklem@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q151vVqm061253;
	Sun, 5 Feb 2012 01:57:31 GMT (envelope-from rmacklem@svn.freebsd.org)
Message-Id: <201202050157.q151vVqm061253@svn.freebsd.org>
From: Rick Macklem <rmacklem@FreeBSD.org>
Date: Sun, 5 Feb 2012 01:57:31 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r231004 - in projects/nfsv4.1-client/sys/fs: nfs
	nfsclient
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 05 Feb 2012 01:57:32 -0000

Author: rmacklem
Date: Sun Feb  5 01:57:31 2012
New Revision: 231004
URL: http://svn.freebsd.org/changeset/base/231004

Log:
  Add some fields to the nfsclds structure to store the NFSv4.1 write
  verifier for the DS. Also, initialize and destroy the mutex that is added.

Modified:
  projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h
  projects/nfsv4.1-client/sys/fs/nfs/nfsport.h
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c
  projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h	Sun Feb  5 00:51:59 2012	(r231003)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfsclstate.h	Sun Feb  5 01:57:31 2012	(r231004)
@@ -73,8 +73,11 @@ struct nfsclsession {
  * This structure holds the information used to access a Data Server (DS).
  */
 struct nfsclds {
+	struct mtx		nfsclds_mtx;
 	struct nfssockreq	nfsclds_sock;
 	struct nfsclsession	nfsclds_sess;
+	int			nfsclds_haswriteverf;
+	uint8_t			nfsclds_verf[NFSX_VERF];
 };
 
 struct nfsclclient {

Modified: projects/nfsv4.1-client/sys/fs/nfs/nfsport.h
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfs/nfsport.h	Sun Feb  5 00:51:59 2012	(r231003)
+++ projects/nfsv4.1-client/sys/fs/nfs/nfsport.h	Sun Feb  5 01:57:31 2012	(r231004)
@@ -645,6 +645,8 @@ void nfsrvd_rcv(struct socket *, void *,
 #define	NFSPROCLISTUNLOCK()	sx_sunlock(&allproc_lock)
 #define	NFSLOCKSOCKREQ(r)	mtx_lock(&((r)->nr_mtx))
 #define	NFSUNLOCKSOCKREQ(r)	mtx_unlock(&((r)->nr_mtx))
+#define	NFSLOCKDS(d)		mtx_lock(&((d)->nfsclds_mtx))
+#define	NFSUNLOCKDS(d)		mtx_unlock(&((d)->nfsclds_mtx))
 
 /*
  * Use these macros to initialize/free a mutex.

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c	Sun Feb  5 00:51:59 2012	(r231003)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clrpcops.c	Sun Feb  5 01:57:31 2012	(r231004)
@@ -5025,6 +5025,7 @@ nfsrpc_fillsa(struct nfsmount *nmp, stru
 		dsp->nfsclds_sock.nr_nam = (struct sockaddr *)sad6;
 	} else
 		return (EPERM);
+	mtx_init(&dsp->nfsclds_mtx, "nfsds", NULL, MTX_DEF);
 	dsp->nfsclds_sock.nr_sotype = SOCK_STREAM;
 	mtx_init(&dsp->nfsclds_sock.nr_mtx, "nfssock", NULL, MTX_DEF);
 	dsp->nfsclds_sock.nr_prog = NFS_PROG;
@@ -5051,6 +5052,7 @@ nfsrpc_fillsa(struct nfsmount *nmp, stru
 	}
 	if (error != 0) {
 		NFSFREECRED(dsp->nfsclds_sock.nr_cred);
+		NFSFREEMUTEX(&dsp->nfsclds_mtx);
 		NFSFREEMUTEX(&dsp->nfsclds_sock.nr_mtx);
 		free(dsp->nfsclds_sock.nr_nam, M_SONAME);
 		NFSBZERO(dsp, sizeof(*dsp));

Modified: projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c
==============================================================================
--- projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c	Sun Feb  5 00:51:59 2012	(r231003)
+++ projects/nfsv4.1-client/sys/fs/nfsclient/nfs_clstate.c	Sun Feb  5 01:57:31 2012	(r231004)
@@ -4645,6 +4645,7 @@ nfscl_freedevinfo(struct nfscldevinfo *d
 		if (dsp->nfsclds_sock.nr_nam != NULL) {
 			/* All are set or none are. */
 			NFSFREECRED(dsp->nfsclds_sock.nr_cred);
+			NFSFREEMUTEX(&dsp->nfsclds_mtx);
 			NFSFREEMUTEX(&dsp->nfsclds_sock.nr_mtx);
 			free(dsp->nfsclds_sock.nr_nam, M_SONAME);
 		}