mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
NFS: Don't do a full flush to disk on close() if we hold a delegation
If we hold a delegation then we know that it should be safe to continue to cache the data beyond the close(). However since the process that wrote the data may die after close(), we may still want to send the data to server before those RPCSEC_GSS credentials expire. We therefore compromise by starting writeback to the server, but don't wait for completion. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
1385b81173
commit
14546c3375
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user