From 596c08801d91a8bc75614bbf5e059439c0e8c31c Mon Sep 17 00:00:00 2001 From: Rick Macklem Date: Thu, 21 May 2009 01:14:12 +0000 Subject: 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) --- sys/nlm/nlm.h | 5 +++++ sys/nlm/nlm_prot_impl.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/sys/nlm/nlm.h b/sys/nlm/nlm.h index 27b921fa5cec..d2c5ee1610a5 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 a46d4327b0b0..6ee6baa282ac 100644 --- a/sys/nlm/nlm_prot_impl.c +++ b/sys/nlm/nlm_prot_impl.c @@ -834,6 +834,20 @@ nlm_create_host(const char* caller_name) return (host); } +/* + * 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. -- cgit v1.3