summaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorTrond Myklebust2007-04-15 22:21:49 +0200
committerLinus Torvalds2007-04-16 01:48:11 +0200
commiteb4cac10d9f7b006da842e2d37414d13e1333781 (patch)
tree8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2 /fs/nfs
parentFix VMI relocation processing logic error (diff)
downloadkernel-qcow2-linux-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.gz
kernel-qcow2-linux-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.xz
kernel-qcow2-linux-eb4cac10d9f7b006da842e2d37414d13e1333781.zip
NFS: Fix a list corruption problem
We must remove the request from whatever list it is currently on before we can add it to the dirty list. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/write.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index e5d7cac569aa..ad2e91b4904f 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -280,8 +280,10 @@ static int nfs_page_mark_flush(struct page *page)
spin_lock(req_lock);
}
spin_unlock(req_lock);
- if (nfs_set_page_writeback(page) == 0)
+ if (nfs_set_page_writeback(page) == 0) {
+ nfs_list_remove_request(req);
nfs_mark_request_dirty(req);
+ }
ret = test_bit(PG_NEED_FLUSH, &req->wb_flags);
nfs_unlock_request(req);
return ret;