diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-05-31 07:13:38 +0200 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-09 15:34:14 +0200 |
commit | d2ccddf042c403b146159beea438c6bfc4a445e2 (patch) | |
tree | e38f5faeccb73cacd442e899328ae44b75f15559 /fs/nfs/file.c | |
parent | NFSv4: remove obviously bogus comparison from decode_getacl (diff) | |
download | linux-d2ccddf042c403b146159beea438c6bfc4a445e2.tar.xz linux-d2ccddf042c403b146159beea438c6bfc4a445e2.zip |
NFS: Flesh out nfs_invalidate_page()
In the case of a call to truncate_inode_pages(), we should really try to
cancel any pending writes on the page.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/file.c')
-rw-r--r-- | fs/nfs/file.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 63154070145a..106ef0dec04d 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -303,7 +303,11 @@ static int nfs_commit_write(struct file *file, struct page *page, unsigned offse static void nfs_invalidate_page(struct page *page, unsigned long offset) { - /* FIXME: we really should cancel any unstarted writes on this page */ + struct inode *inode = page->mapping->host; + + /* Cancel any unstarted writes on this page */ + if (offset == 0) + nfs_sync_inode_wait(inode, page->index, 1, FLUSH_INVALIDATE); } static int nfs_release_page(struct page *page, gfp_t gfp) |