-
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.
yaml --- r: 114335 b: refs/heads/master c: af558e3 h: refs/heads/master i: 114333: 7037d70 114331: a6a2bb7 114327: a500b36 114319: 3a92718 114303: eab0809 v: v3
- Loading branch information
J. Bruce Fields
committed
Oct 3, 2008
1 parent
050ec4f
commit 356c5fe
Showing
11 changed files
with
105 additions
and
62 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: d5b337b4877f7c4e1d761434ee04d045b0201e03 | ||
refs/heads/master: af558e33bedab672f5cfd3260bce7445e353fe21 |
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); |
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
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
Oops, something went wrong.