summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/locking/nolock/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2/locking/nolock/main.c')
-rw-r--r--fs/gfs2/locking/nolock/main.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/gfs2/locking/nolock/main.c b/fs/gfs2/locking/nolock/main.c
index 9398309f281..ecd37371eba 100644
--- a/fs/gfs2/locking/nolock/main.c
+++ b/fs/gfs2/locking/nolock/main.c
@@ -176,14 +176,13 @@ static void nolock_sync_lvb(lm_lock_t *lock, char *lvb)
static int nolock_plock_get(lm_lockspace_t *lockspace, struct lm_lockname *name,
struct file *file, struct file_lock *fl)
{
- struct file_lock *tmp;
+ struct file_lock tmp;
+ int ret;
- lock_kernel();
- tmp = posix_test_lock(file, fl);
+ ret = posix_test_lock(file, fl, &tmp);
fl->fl_type = F_UNLCK;
- if (tmp)
- memcpy(fl, tmp, sizeof(struct file_lock));
- unlock_kernel();
+ if (ret)
+ memcpy(fl, &tmp, sizeof(struct file_lock));
return 0;
}
@@ -192,9 +191,7 @@ static int nolock_plock(lm_lockspace_t *lockspace, struct lm_lockname *name,
struct file *file, int cmd, struct file_lock *fl)
{
int error;
- lock_kernel();
error = posix_lock_file_wait(file, fl);
- unlock_kernel();
return error;
}
@@ -202,9 +199,7 @@ static int nolock_punlock(lm_lockspace_t *lockspace, struct lm_lockname *name,
struct file *file, struct file_lock *fl)
{
int error;
- lock_kernel();
error = posix_lock_file_wait(file, fl);
- unlock_kernel();
return error;
}