diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2009-05-21 01:14:12 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2009-05-21 01:14:12 +0000 |
commit | bf4995d98dd2a619f6574195847e805fef2f44b2 (patch) | |
tree | c95f66b1841efd82eddae7c0029366723144b73d /sys/nlm | |
parent | 77979532cf260986b996444ebf7a9a8ed7e79b5a (diff) | |
download | FreeBSD-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.h | 5 | ||||
-rw-r--r-- | sys/nlm/nlm_prot_impl.c | 14 |
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. */ |