ext3's fully data-journalled mode has been broken for a year. This patch
fixes it up.
The prepare_write/commit_write/writepage implementations have been split up.
Instead of having each function handle all three journalling mode we now have
three separate sets of address_space_operations.
The problematic part of data=journal is MAP_SHARED writepage traffic: pages
which don't have buffers. In 2.4 these were cheatingly treated as
data-ordered buffers and that caused several nasty problems.
Here we do it properly: writepage traffic is fully journalled. This means
that the various workarounds for the 2.4 scheme can be removed, when I
remember where they all are.
The PG_checked flag has been borrowed: it it set in the atomic set_page_dirty
a_op to tell the subsequent writepage() that this page needs to have buffers
attached, dirtied and journalled.
This rather defines PG_checked as "fs-private info in page->flags" and it
should be renamed sometime.