aboutsummaryrefslogtreecommitdiffstats
path: root/fs
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 16:48:11 -0700
commiteb4cac10d9f7b006da842e2d37414d13e1333781 (patch)
tree8dbb82c4b1b4ef0c499711adbe0f4ff6efe4f5e2 /fs
parent0492c371372ef5eac3a952509391dea231b0de89 (diff)
downloadkernel_samsung_smdk4412-eb4cac10d9f7b006da842e2d37414d13e1333781.zip
kernel_samsung_smdk4412-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.gz
kernel_samsung_smdk4412-eb4cac10d9f7b006da842e2d37414d13e1333781.tar.bz2
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')
-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 e5d7cac..ad2e91b 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;