From: Trond Myklebust Date: Thu, 5 Sep 2013 19:52:51 +0000 (-0400) Subject: NFS: Don't check lock owner compatibility in writes unless file is locked X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=0f1d26055068bbc66751d1974ecc6f0398b3ac67;p=openwrt%2Fstaging%2Fblogic.git NFS: Don't check lock owner compatibility in writes unless file is locked If we're doing buffered writes, and there is no file locking involved, then we don't have to worry about whether or not the lock owner information is identical. By relaxing this check, we ensure that fork()ed child processes can write to a page without having to first sync dirty data that was written by the parent to disk. Reported-by: Quentin Barnes Signed-off-by: Trond Myklebust Tested-by: Quentin Barnes --- diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 40979e815434..ac1dc331ba31 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -863,7 +863,7 @@ int nfs_flush_incompatible(struct file *file, struct page *page) return 0; l_ctx = req->wb_lock_context; do_flush = req->wb_page != page || req->wb_context != ctx; - if (l_ctx) { + if (l_ctx && ctx->dentry->d_inode->i_flock != NULL) { do_flush |= l_ctx->lockowner.l_owner != current->files || l_ctx->lockowner.l_pid != current->tgid; }