summaryrefslogtreecommitdiffstats
path: root/sys/nlm
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2010-10-19 00:20:00 +0000
committerrmacklem <rmacklem@FreeBSD.org>2010-10-19 00:20:00 +0000
commit4cbec41fe48ec04d799dae677c7c44d5a703e182 (patch)
tree58fc2b105e6e1fb43a4b74746fd54253f3f2102d /sys/nlm
parent4393b7cb7eaacda209dfdb075d90146991a14617 (diff)
downloadFreeBSD-src-4cbec41fe48ec04d799dae677c7c44d5a703e182.zip
FreeBSD-src-4cbec41fe48ec04d799dae677c7c44d5a703e182.tar.gz
Modify the NFS clients and the NLM so that the NLM can be used
by both clients. Since the NLM uses various fields of the nfsmount structure, those fields were extracted and put in a separate nfs_mountcommon structure stored in sys/nfs/nfs_mountcommon.h. This structure also has a function pointer for a function that extracts the required information from the mount point and nfs vnode for that particular client, for information stored differently by the clients. Reviewed by: jhb MFC after: 2 weeks
Diffstat (limited to 'sys/nlm')
-rw-r--r--sys/nlm/nlm_advlock.c15
-rw-r--r--sys/nlm/nlm_prot_impl.c4
2 files changed, 7 insertions, 12 deletions
diff --git a/sys/nlm/nlm_advlock.c b/sys/nlm/nlm_advlock.c
index b179595..b4edb4d 100644
--- a/sys/nlm/nlm_advlock.c
+++ b/sys/nlm/nlm_advlock.c
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/mount.h>
#include <sys/mutex.h>
#include <sys/proc.h>
+#include <sys/socket.h>
#include <sys/syslog.h>
#include <sys/systm.h>
#include <sys/unistd.h>
@@ -47,7 +48,6 @@ __FBSDID("$FreeBSD$");
#include <nfs/nfsproto.h>
#include <nfsclient/nfs.h>
-#include <nfsclient/nfsnode.h>
#include <nfsclient/nfsmount.h>
#include <nlm/nlm_prot.h>
@@ -196,7 +196,6 @@ nlm_advlock_internal(struct vnode *vp, void *id, int op, struct flock *fl,
{
struct thread *td = curthread;
struct nfsmount *nmp;
- struct nfsnode *np;
off_t size;
size_t fhlen;
union nfsfh fh;
@@ -214,6 +213,7 @@ nlm_advlock_internal(struct vnode *vp, void *id, int op, struct flock *fl,
struct nlm_file_svid *ns;
int svid;
int error;
+ int is_v3;
ASSERT_VOP_LOCKED(vp, "nlm_advlock_1");
@@ -225,18 +225,13 @@ nlm_advlock_internal(struct vnode *vp, void *id, int op, struct flock *fl,
if (op == F_SETLK || op == F_UNLCK)
nfs_vinvalbuf(vp, V_SAVE, td, 1);
- np = VTONFS(vp);
nmp = VFSTONFS(vp->v_mount);
- size = np->n_size;
- sa = nmp->nm_nam;
- memcpy(&ss, sa, sa->sa_len);
- sa = (struct sockaddr *) &ss;
strcpy(servername, nmp->nm_hostname);
- fhlen = np->n_fhsize;
- memcpy(&fh.fh_bytes, np->n_fhp, fhlen);
+ nmp->nm_getinfo(vp, fh.fh_bytes, &fhlen, &ss, &is_v3, &size);
+ sa = (struct sockaddr *) &ss;
timo.tv_sec = nmp->nm_timeo / NFS_HZ;
timo.tv_usec = (nmp->nm_timeo % NFS_HZ) * (1000000 / NFS_HZ);
- if (NFS_ISV3(vp))
+ if (is_v3 != 0)
vers = NLM_VERS4;
else
vers = NLM_VERS;
diff --git a/sys/nlm/nlm_prot_impl.c b/sys/nlm/nlm_prot_impl.c
index 5f7f8e1..ea4baca 100644
--- a/sys/nlm/nlm_prot_impl.c
+++ b/sys/nlm/nlm_prot_impl.c
@@ -55,8 +55,7 @@ __FBSDID("$FreeBSD$");
#include <sys/vnode.h>
#include <nfs/nfsproto.h>
-#include <nfsclient/nfs.h>
-#include <nfsclient/nfsnode.h>
+#include <nfs/nfs_lock.h>
#include <nlm/nlm_prot.h>
#include <nlm/sm_inter.h>
@@ -2432,4 +2431,5 @@ DECLARE_MODULE(nfslockd, nfslockd_mod, SI_SUB_VFS, SI_ORDER_ANY);
/* So that loader and kldload(2) can find us, wherever we are.. */
MODULE_DEPEND(nfslockd, krpc, 1, 1, 1);
MODULE_DEPEND(nfslockd, nfs, 1, 1, 1);
+MODULE_DEPEND(nfslockd, nfslock, 1, 1, 1);
MODULE_VERSION(nfslockd, 1);
OpenPOWER on IntegriCloud