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 16:48:11 -0700 |
commit | eb4cac10d9f7b006da842e2d37414d13e1333781 (patch) | |
tree | 8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2 | |
parent | 0492c371372ef5eac3a952509391dea231b0de89 (diff) | |
download | linux-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.gz linux-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.bz2 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>
-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) 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; |