summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2010-04-22 15:35:57 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-04-22 15:35:57 -0400
commit71d0a6112a363e703e383ae5b12c492485c39701 (patch)
treefc22ab92565fb61a37a77f829a82fa9b8ea6497f /include/linux
parentcdd29ecfcb9554132cd94b82ae8b69ba37adb3b5 (diff)
downloadop-kernel-dev-71d0a6112a363e703e383ae5b12c492485c39701.zip
op-kernel-dev-71d0a6112a363e703e383ae5b12c492485c39701.tar.gz
NFS: Fix an unstable write data integrity race
Commit 2c61be0a9478258f77b66208a0c4b1f5f8161c3c (NFS: Ensure that the WRITE and COMMIT RPC calls are always uninterruptible) exposed a race on file close. In order to ensure correct close-to-open behaviour, we want to wait for all outstanding background commit operations to complete. This patch adds an inode flag that indicates if a commit operation is under way, and provides a mechanism to allow ->write_inode() to wait for its completion if this is a data integrity flush. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/nfs_fs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 1a0b85a..07ce460 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -209,6 +209,7 @@ struct nfs_inode {
#define NFS_INO_FLUSHING (4) /* inode is flushing out data */
#define NFS_INO_FSCACHE (5) /* inode can be cached by FS-Cache */
#define NFS_INO_FSCACHE_LOCK (6) /* FS-Cache cookie management lock */
+#define NFS_INO_COMMIT (7) /* inode is committing unstable writes */
static inline struct nfs_inode *NFS_I(const struct inode *inode)
{
OpenPOWER on IntegriCloud