aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-04-15 16:21:49 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-15 19:48:11 -0400
commiteb4cac10d9f7b006da842e2d37414d13e1333781 (patch)
tree8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2
parent0492c371372ef5eac3a952509391dea231b0de89 (diff)
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>
-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)
280 spin_lock(req_lock); 280 spin_lock(req_lock);
281 } 281 }
282 spin_unlock(req_lock); 282 spin_unlock(req_lock);
283 if (nfs_set_page_writeback(page) == 0) 283 if (nfs_set_page_writeback(page) == 0) {
284 nfs_list_remove_request(req);
284 nfs_mark_request_dirty(req); 285 nfs_mark_request_dirty(req);
286 }
285 ret = test_bit(PG_NEED_FLUSH, &req->wb_flags); 287 ret = test_bit(PG_NEED_FLUSH, &req->wb_flags);
286 nfs_unlock_request(req); 288 nfs_unlock_request(req);
287 return ret; 289 return ret;