]> git.baikalelectronics.ru Git - kernel.git/commit
NFS: Fix nfs_wb_page() to always exit with an error or a clean page
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 11 Apr 2008 20:03:54 +0000 (16:03 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sat, 19 Apr 2008 20:52:58 +0000 (16:52 -0400)
commit3b6ccb62f71a47437f0cafe6eecfaadcf272f2cc
tree7f1a4be9e1b534bf9eb87fabaa1a15e468221a9e
parenta669355d58b1004b648ed1c0c3c7f4a44c35a8e3
NFS: Fix nfs_wb_page() to always exit with an error or a clean page

It is possible for nfs_wb_page() to sometimes exit with 0 return value, yet
the page is left in a dirty state.
For instance in the case where the server rebooted, and the COMMIT request
failed, then all the previously "clean" pages which were cached by the
server, but were not guaranteed to have been writted out to disk,
have to be redirtied and resent to the server.
The fix is to have nfs_wb_page_priority() check that the page is clean
before it exits...

This fixes a condition that triggers the BUG_ON(PagePrivate(page)) in
nfs_create_request() when we're in the nfs_readpage() path.

Also eliminate a redundant BUG_ON(!PageLocked(page)) while we're at it. It
turns out that clear_page_dirty_for_io() has the exact same test.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/write.c