[GFS2] Fix releasepage bug (fixes direct i/o writes)
authorSteven Whitehouse <swhiteho@redhat.com>
Thu, 31 Aug 2006 16:14:44 +0000 (12:14 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 31 Aug 2006 16:14:44 +0000 (12:14 -0400)
commit623d93555c8884768db65ffc11509c93e50dd4db
tree08be5484217e9c7851b129d2794b4afe8e44760c
parent899be4d3b7e00bf364d84c1c8cfe8bbbd1e3507b
[GFS2] Fix releasepage bug (fixes direct i/o writes)

This patch fixes three main bugs. Firstly the direct i/o get_block
was returning the wrong return code in certain cases. Secondly, the
GFS2's releasepage function was not dealing with cases when clean,
ordered buffers were found still queued on a transaction (which can
happen depending on the ordering of journal flushes). Thirdly, the
journaling code itself needed altering to take account of the
after effects of removing the clean ordered buffers from the transactions
before a journal flush.

The releasepage bug did also show up under "normal" buffered i/o
as well, so its not just a fix for direct i/o. In fact its not
normally used in the direct i/o path at all, except when flushing
existing buffers after performing a direct i/o write, but that was
the code path that led us to spot this.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/lops.c
fs/gfs2/ops_address.c