-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.28' of git://linux-nfs.org/~bfields/linux: (59 commits) svcrdma: Fix IRD/ORD polarity svcrdma: Update svc_rdma_send_error to use DMA LKEY svcrdma: Modify the RPC reply path to use FRMR when available svcrdma: Modify the RPC recv path to use FRMR when available svcrdma: Add support to svc_rdma_send to handle chained WR svcrdma: Modify post recv path to use local dma key svcrdma: Add a service to register a Fast Reg MR with the device svcrdma: Query device for Fast Reg support during connection setup svcrdma: Add FRMR get/put services NLM: Remove unused argument from svc_addsock() function NLM: Remove "proto" argument from lockd_up() NLM: Always start both UDP and TCP listeners lockd: Remove unused fields in the nlm_reboot structure lockd: Add helper to sanity check incoming NOTIFY requests lockd: change nlmclnt_grant() to take a "struct sockaddr *" lockd: Adjust nlmsvc_lookup_host() to accomodate AF_INET6 addresses lockd: Adjust nlmclnt_lookup_host() signature to accomodate non-AF_INET lockd: Support non-AF_INET addresses in nlm_lookup_host() NLM: Convert nlm_lookup_host() to use a single argument svcrdma: Add Fast Reg MR Data Types ...
- Loading branch information
Showing
46 changed files
with
1,842 additions
and
628 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* | ||
* Common code for control of lockd and nfsv4 grace periods. | ||
*/ | ||
|
||
#include <linux/module.h> | ||
#include <linux/lockd/bind.h> | ||
|
||
static LIST_HEAD(grace_list); | ||
static DEFINE_SPINLOCK(grace_lock); | ||
|
||
/** | ||
* locks_start_grace | ||
* @lm: who this grace period is for | ||
* | ||
* A grace period is a period during which locks should not be given | ||
* out. Currently grace periods are only enforced by the two lock | ||
* managers (lockd and nfsd), using the locks_in_grace() function to | ||
* check when they are in a grace period. | ||
* | ||
* This function is called to start a grace period. | ||
*/ | ||
void locks_start_grace(struct lock_manager *lm) | ||
{ | ||
spin_lock(&grace_lock); | ||
list_add(&lm->list, &grace_list); | ||
spin_unlock(&grace_lock); | ||
} | ||
EXPORT_SYMBOL_GPL(locks_start_grace); | ||
|
||
/** | ||
* locks_end_grace | ||
* @lm: who this grace period is for | ||
* | ||
* Call this function to state that the given lock manager is ready to | ||
* resume regular locking. The grace period will not end until all lock | ||
* managers that called locks_start_grace() also call locks_end_grace(). | ||
* Note that callers count on it being safe to call this more than once, | ||
* and the second call should be a no-op. | ||
*/ | ||
void locks_end_grace(struct lock_manager *lm) | ||
{ | ||
spin_lock(&grace_lock); | ||
list_del_init(&lm->list); | ||
spin_unlock(&grace_lock); | ||
} | ||
EXPORT_SYMBOL_GPL(locks_end_grace); | ||
|
||
/** | ||
* locks_in_grace | ||
* | ||
* Lock managers call this function to determine when it is OK for them | ||
* to answer ordinary lock requests, and when they should accept only | ||
* lock reclaims. | ||
*/ | ||
int locks_in_grace(void) | ||
{ | ||
return !list_empty(&grace_list); | ||
} | ||
EXPORT_SYMBOL_GPL(locks_in_grace); |
Oops, something went wrong.