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