diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-04-15 16:21:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-15 19:48:11 -0400 |
commit | eb4cac10d9f7b006da842e2d37414d13e1333781 (patch) | |
tree | 8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2 /fs/nfs/write.c | |
parent | 0492c371372ef5eac3a952509391dea231b0de89 (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>
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r-- | fs/nfs/write.c | 4 |
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; |