Commit 15dadef9 authored by Andy Adamson's avatar Andy Adamson Committed by Trond Myklebust

lockd: clean up nlmsvc_lock

Slightly more consistent dprintk error reporting, consolidate some up()'s.
Signed-off-by: default avatarAndy Adamson <andros@citi.umich.edu>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 1e7cb3dc
...@@ -300,6 +300,7 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, ...@@ -300,6 +300,7 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file,
struct file_lock *conflock; struct file_lock *conflock;
struct nlm_block *block; struct nlm_block *block;
int error; int error;
u32 ret;
dprintk("lockd: nlmsvc_lock(%s/%ld, ty=%d, pi=%d, %Ld-%Ld, bl=%d)\n", dprintk("lockd: nlmsvc_lock(%s/%ld, ty=%d, pi=%d, %Ld-%Ld, bl=%d)\n",
file->f_file->f_dentry->d_inode->i_sb->s_id, file->f_file->f_dentry->d_inode->i_sb->s_id,
...@@ -329,24 +330,28 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, ...@@ -329,24 +330,28 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file,
dprintk("lockd: posix_lock_file returned %d\n", -error); dprintk("lockd: posix_lock_file returned %d\n", -error);
switch(-error) { switch(-error) {
case 0: case 0:
return nlm_granted; ret = nlm_granted;
goto out;
case EDEADLK: case EDEADLK:
return nlm_deadlock; ret = nlm_deadlock;
goto out;
case EAGAIN: case EAGAIN:
return nlm_lck_denied; ret = nlm_lck_denied;
goto out;
default: /* includes ENOLCK */ default: /* includes ENOLCK */
return nlm_lck_denied_nolocks; ret = nlm_lck_denied_nolocks;
goto out;
} }
} }
if (!wait) { if (!wait) {
up(&file->f_sema); ret = nlm_lck_denied;
return nlm_lck_denied; goto out_unlock;
} }
if (posix_locks_deadlock(&lock->fl, conflock)) { if (posix_locks_deadlock(&lock->fl, conflock)) {
up(&file->f_sema); ret = nlm_deadlock;
return nlm_deadlock; goto out_unlock;
} }
/* If we don't have a block, create and initialize it. Then /* If we don't have a block, create and initialize it. Then
...@@ -371,8 +376,12 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, ...@@ -371,8 +376,12 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file,
posix_block_lock(conflock, &block->b_call.a_args.lock.fl); posix_block_lock(conflock, &block->b_call.a_args.lock.fl);
} }
ret = nlm_lck_blocked;
out_unlock:
up(&file->f_sema); up(&file->f_sema);
return nlm_lck_blocked; out:
dprintk("lockd: nlmsvc_lock returned %u\n", ret);
return ret;
} }
/* /*
...@@ -535,8 +544,7 @@ nlmsvc_grant_blocked(struct nlm_block *block) ...@@ -535,8 +544,7 @@ nlmsvc_grant_blocked(struct nlm_block *block)
dprintk("lockd: lock still blocked\n"); dprintk("lockd: lock still blocked\n");
nlmsvc_insert_block(block, NLM_NEVER); nlmsvc_insert_block(block, NLM_NEVER);
posix_block_lock(conflock, &lock->fl); posix_block_lock(conflock, &lock->fl);
up(&file->f_sema); goto out_unlock;
return;
} }
/* Alright, no conflicting lock. Now lock it for real. If the /* Alright, no conflicting lock. Now lock it for real. If the
...@@ -547,8 +555,7 @@ nlmsvc_grant_blocked(struct nlm_block *block) ...@@ -547,8 +555,7 @@ nlmsvc_grant_blocked(struct nlm_block *block)
printk(KERN_WARNING "lockd: unexpected error %d in %s!\n", printk(KERN_WARNING "lockd: unexpected error %d in %s!\n",
-error, __FUNCTION__); -error, __FUNCTION__);
nlmsvc_insert_block(block, 10 * HZ); nlmsvc_insert_block(block, 10 * HZ);
up(&file->f_sema); goto out_unlock;
return;
} }
callback: callback:
...@@ -565,6 +572,7 @@ nlmsvc_grant_blocked(struct nlm_block *block) ...@@ -565,6 +572,7 @@ nlmsvc_grant_blocked(struct nlm_block *block)
if (nlmsvc_async_call(&block->b_call, NLMPROC_GRANTED_MSG, if (nlmsvc_async_call(&block->b_call, NLMPROC_GRANTED_MSG,
&nlmsvc_grant_ops) < 0) &nlmsvc_grant_ops) < 0)
nlm_release_host(block->b_call.a_host); nlm_release_host(block->b_call.a_host);
out_unlock:
up(&file->f_sema); up(&file->f_sema);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment