Always unlock pages when returning from writepage
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Fri, 16 Oct 2009 15:39:24 +0000 (16:39 +0100)
committerDerrick Brashear <shadow|account-1000005@unknown>
Mon, 19 Oct 2009 23:39:57 +0000 (16:39 -0700)
commit6f2ce4cdc216ad5a3e8ed09a011a5f0681f098b4
tree77b54546f884d6d35bde27a27b6a47cb00d99dd4
parentebf6516db2f1105e5ca8172f6d64038c6acc60bd
Always unlock pages when returning from writepage

Writepage has a return path which returns an error with a locked
page. However, all returns that are not AOP_WRITEPAGE_ACTIVATE must
unlock their pages - using this codepath would leave a stray page lock,
which would eventually hang the machine.

The logic behind the -EIO return was also incorrect. In the Linux page
cache model, truncates simply reduce the size recorded in the inode. If
there are pages pending writeback then they may still have writepage() called
upon them - it's up to the writepage routine to discard the write
request (rather than returning an error)

Reviewed-on: http://gerrit.openafs.org/685
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/LINUX/osi_vnodeops.c