From 1ff146a6fa615aacb1733e0958539369ed7052e0 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sun, 6 May 2012 19:10:59 -0400 Subject: [PATCH] --- yaml --- r: 308590 b: refs/heads/master c: 14546c337588370dced50dcaf43398939be9829e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfs/file.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4b00690a00e2..e177215584d9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1385b8117325e79f74c1e7d1cbf45c789deb85c5 +refs/heads/master: 14546c337588370dced50dcaf43398939be9829e diff --git a/trunk/fs/nfs/file.c b/trunk/fs/nfs/file.c index aa9b709fd328..8eda8a6644c3 100644 --- a/trunk/fs/nfs/file.c +++ b/trunk/fs/nfs/file.c @@ -174,6 +174,13 @@ nfs_file_flush(struct file *file, fl_owner_t id) if ((file->f_mode & FMODE_WRITE) == 0) return 0; + /* + * If we're holding a write delegation, then just start the i/o + * but don't wait for completion (or send a commit). + */ + if (nfs_have_delegation(inode, FMODE_WRITE)) + return filemap_fdatawrite(file->f_mapping); + /* Flush writes to the server and return any errors */ return vfs_fsync(file, 0); }