Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Feb 2012 01:57:31 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r231004 - in projects/nfsv4.1-client/sys/fs: nfs nfsclient
Message-ID:  <201202050157.q151vVqm061253@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 		}



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