NFS: Fix an unstable write data integrity race
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 22 Apr 2010 19:35:57 +0000 (15:35 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 22 Apr 2010 19:35:57 +0000 (15:35 -0400)
commit71d0a6112a363e703e383ae5b12c492485c39701
treefc22ab92565fb61a37a77f829a82fa9b8ea6497f
parentcdd29ecfcb9554132cd94b82ae8b69ba37adb3b5
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>
fs/nfs/write.c
include/linux/nfs_fs.h