summaryrefslogtreecommitdiffstats
path: root/sys/nlm
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2009-05-21 01:14:12 +0000
committerrmacklem <rmacklem@FreeBSD.org>2009-05-21 01:14:12 +0000
commitbf4995d98dd2a619f6574195847e805fef2f44b2 (patch)
treec95f66b1841efd82eddae7c0029366723144b73d /sys/nlm
parent77979532cf260986b996444ebf7a9a8ed7e79b5a (diff)
downloadFreeBSD-src-bf4995d98dd2a619f6574195847e805fef2f44b2.zip
FreeBSD-src-bf4995d98dd2a619f6574195847e805fef2f44b2.tar.gz
Add a function to sys/nlm/nlm_prot_impl.c that returns a unique
lock sysid to be used for non-nlm remote locking. This is required for the experimental nfsv4 server, so that it can acquire byte range locks correctly on behalf of nfsv4 clients. Reviewed by: dfr Approved by: kib (mentor)
Diffstat (limited to 'sys/nlm')
-rw-r--r--sys/nlm/nlm.h5
-rw-r--r--sys/nlm/nlm_prot_impl.c14
2 files changed, 19 insertions, 0 deletions
diff --git a/sys/nlm/nlm.h b/sys/nlm/nlm.h
index 27b921f..d2c5ee1 100644
--- a/sys/nlm/nlm.h
+++ b/sys/nlm/nlm.h
@@ -210,6 +210,11 @@ struct vop_reclaim_args;
extern int nlm_advlock(struct vop_advlock_args *ap);
extern int nlm_reclaim(struct vop_reclaim_args *ap);
+/*
+ * Acquire the next sysid for remote locks not handled by the NLM.
+ */
+extern uint32_t nlm_acquire_next_sysid(void);
+
#endif
#endif
diff --git a/sys/nlm/nlm_prot_impl.c b/sys/nlm/nlm_prot_impl.c
index a46d432..6ee6baa 100644
--- a/sys/nlm/nlm_prot_impl.c
+++ b/sys/nlm/nlm_prot_impl.c
@@ -835,6 +835,20 @@ nlm_create_host(const char* caller_name)
}
/*
+ * Acquire the next sysid for remote locks not handled by the NLM.
+ */
+uint32_t
+nlm_acquire_next_sysid(void)
+{
+ uint32_t next_sysid;
+
+ mtx_lock(&nlm_global_lock);
+ next_sysid = nlm_next_sysid++;
+ mtx_unlock(&nlm_global_lock);
+ return (next_sysid);
+}
+
+/*
* Return non-zero if the address parts of the two sockaddrs are the
* same.
*/
OpenPOWER on IntegriCloud