svn commit: r231004 - in projects/nfsv4.1-client/sys/fs: nfs nfsclient

Rick Macklem rmacklem at FreeBSD.org
Sun Feb 5 01:57:32 UTC 2012


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);
 		}


More information about the svn-src-projects mailing list