summaryrefslogtreecommitdiff
path: root/fs/nfs/file.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2013-05-05 08:24:42 +0200
committerThomas Gleixner <tglx@linutronix.de>2013-05-05 08:27:03 +0200
commitf99e44a7f3352d7131c7526207f153f13ec5acd4 (patch)
tree0f448b21128c478053ee7f7765b865954c4eebe8 /fs/nfs/file.c
parentfd29f424d458118f02e89596505c68a63dcb3007 (diff)
parentce857229e0c3adc211944a13a5579ef84fd7b4af (diff)
Merge branch 'linus' into core/urgent
Update with Linus tree so fixes for the same can be applied. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'fs/nfs/file.c')
-rw-r--r--fs/nfs/file.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 29f4a48a0ee6..a87a44f84113 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -744,6 +744,7 @@ static int
do_unlk(struct file *filp, int cmd, struct file_lock *fl, int is_local)
{
struct inode *inode = filp->f_mapping->host;
+ struct nfs_lock_context *l_ctx;
int status;
/*
@@ -752,6 +753,14 @@ do_unlk(struct file *filp, int cmd, struct file_lock *fl, int is_local)
*/
nfs_sync_mapping(filp->f_mapping);
+ l_ctx = nfs_get_lock_context(nfs_file_open_context(filp));
+ if (!IS_ERR(l_ctx)) {
+ status = nfs_iocounter_wait(&l_ctx->io_count);
+ nfs_put_lock_context(l_ctx);
+ if (status < 0)
+ return status;
+ }
+
/* NOTE: special case
* If we're signalled while cleaning up locks on process exit, we
* still need to complete the unlock.