diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-09-11 16:01:22 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-09-28 16:03:05 -0400 |
commit | 05990d1bf2708b9e84d67074551f964d3738eedc (patch) | |
tree | b4133627b503563eadea21aab695df78080402e1 /include/linux/nfs_fs.h | |
parent | 795a88c968eef031f370973512b42124bacb2f17 (diff) | |
download | linux-stable-05990d1bf2708b9e84d67074551f964d3738eedc.tar.gz linux-stable-05990d1bf2708b9e84d67074551f964d3738eedc.tar.bz2 linux-stable-05990d1bf2708b9e84d67074551f964d3738eedc.zip |
NFS: Fix fdatasync/fsync() when confronted with a server reboot
If the server reboots before it can commit the unstable writes to disk,
then nfs_commit_release_pages() will detect this when it compares the
verifier returned by COMMIT to the one returned by WRITE. When this
happens, the client needs to resend those writes in order to guarantee
that they make it to stable storage.
This patch adds a signalling mechanism to notify fsync() that it
needs to retry all writes before it can exit.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/nfs_fs.h')
-rw-r--r-- | include/linux/nfs_fs.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 869eac0c2635..383f3313f053 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -103,6 +103,7 @@ struct nfs_open_context { unsigned long flags; #define NFS_CONTEXT_ERROR_WRITE (0) +#define NFS_CONTEXT_RESEND_WRITES (1) int error; struct list_head list; |