The call to mark_buffer_dirty() should be conditional upon it not being a journaled data file. The code in gfs2_block_truncate_page() is copied largely into gfs2_adjust_quota() and this bug was discovered and corrected there in through the patch for bug 555754. This needs to be fixed here as well.
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
Actually this is correct as it is. Its rather confusing due to the different way in which we treat data and metadata in the journal. Our writepages for jdata knows how to do the right thing, and if we don't mark it dirty then writepages won't ever get called on that page. Sorry for the confusion.