diff options
author | mohans <mohans@FreeBSD.org> | 2006-05-19 00:04:24 +0000 |
---|---|---|
committer | mohans <mohans@FreeBSD.org> | 2006-05-19 00:04:24 +0000 |
commit | 60ef6157336e266567b08916dee68af4c4f4d21e (patch) | |
tree | 02c7543fb7adb7dda8df6f0ad320769be2b28c31 /sys/nfs4client | |
parent | 876847ec5e682b076f7a4f80cf4918cfed7d4a06 (diff) | |
download | FreeBSD-src-60ef6157336e266567b08916dee68af4c4f4d21e.zip FreeBSD-src-60ef6157336e266567b08916dee68af4c4f4d21e.tar.gz |
Changes to make the NFS client MP safe.
Thanks to Kris Kennaway for testing and sending lots of bugs my way.
Diffstat (limited to 'sys/nfs4client')
-rw-r--r-- | sys/nfs4client/nfs4_vfsops.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/nfs4client/nfs4_vfsops.c b/sys/nfs4client/nfs4_vfsops.c index e500427..d4fc2d6 100644 --- a/sys/nfs4client/nfs4_vfsops.c +++ b/sys/nfs4client/nfs4_vfsops.c @@ -563,6 +563,8 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam, vfs_getnewfsid(mp); nmp->nm_mountp = mp; + mtx_init(&nmp->nm_mtx, "NFS4mount lock", NULL, MTX_DEF); + nmp->nm_maxfilesize = 0xffffffffLL; nmp->nm_timeo = NFS_TIMEO; nmp->nm_retry = NFS_RETRANS; @@ -652,6 +654,7 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam, if (mrep != NULL) m_freem(mrep); bad: + mtx_destroy(&nmp->nm_mtx); nfs4_disconnect(nmp); uma_zfree(nfsmount_zone, nmp); FREE(nam, M_SONAME); @@ -698,6 +701,7 @@ nfs_unmount(struct mount *mp, int mntflags, struct thread *td) /* XXX there's a race condition here for SMP */ wakeup(&nfs4_daemonproc); + mtx_destroy(&nmp->nm_mtx); uma_zfree(nfsmount_zone, nmp); return (0); } |