mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 22:51:37 +00:00
lockd: save lock state on deferral
We need to keep some state for a pending asynchronous lock request, so this patch adds that state to struct nlm_block. This also adds a function which defers the request, by calling rqstp->rq_chandle.defer and storing the resulting deferred request in a nlm_block structure which we insert into lockd's global block list. That new function isn't called yet, so it's dead code until a later patch. Signed-off-by: Marc Eshel <eshel@almaden.ibm.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
2beb6614f5
commit
2b36f412ab
2 changed files with 35 additions and 0 deletions
|
@ -119,6 +119,9 @@ struct nlm_file {
|
|||
* couldn't be granted because of a conflicting lock).
|
||||
*/
|
||||
#define NLM_NEVER (~(unsigned long) 0)
|
||||
/* timeout on non-blocking call: */
|
||||
#define NLM_TIMEOUT (7 * HZ)
|
||||
|
||||
struct nlm_block {
|
||||
struct kref b_count; /* Reference count */
|
||||
struct list_head b_list; /* linked list of all blocks */
|
||||
|
@ -130,6 +133,13 @@ struct nlm_block {
|
|||
unsigned int b_id; /* block id */
|
||||
unsigned char b_granted; /* VFS granted lock */
|
||||
struct nlm_file * b_file; /* file in question */
|
||||
struct cache_req * b_cache_req; /* deferred request handling */
|
||||
struct file_lock * b_fl; /* set for GETLK */
|
||||
struct cache_deferred_req * b_deferred_req;
|
||||
unsigned int b_flags; /* block flags */
|
||||
#define B_QUEUED 1 /* lock queued */
|
||||
#define B_GOT_CALLBACK 2 /* got lock or conflicting lock */
|
||||
#define B_TIMED_OUT 4 /* filesystem too slow to respond */
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue