--- linux-ext3-2.4merge/fs/jbd/commit.c.=K0008=.orig Tue Aug 27 23:16:07 2002
+++ linux-ext3-2.4merge/fs/jbd/commit.c Tue Aug 27 23:19:57 2002
@@ -663,6 +663,20 @@
* there's no point in keeping a checkpoint record for
* it. */
bh = jh2bh(jh);
+
+ /* A buffer which has been freed while still being
+ * journaled by a previous transaction may end up still
+ * being dirty here, but we want to avoid writing back
+ * that buffer in the future now that the last use has
+ * been committed. That's not only a performance gain,
+ * it also stops aliasing problems if the buffer is left
+ * behind for writeback and gets reallocated for another
+ * use in a different page. */
+ if (__buffer_state(bh, Freed)) {
+ clear_bit(BH_Freed, &bh->b_state);
+ clear_bit(BH_JBDDirty, &bh->b_state);
+ }
+
if (buffer_jdirty(bh)) {
JBUFFER_TRACE(jh, "add to new checkpointing trans");
__journal_insert_checkpoint(jh, commit_transaction);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/