On Mon, Aug 20, 2012 at 10:22:03AM -0000, Jan Kara wrote: > ext4 users of data=journal mode with blocksize < pagesize were occasionally > hitting assertion failure in jbd2_journal_commit_transaction() checking whether > the transaction has at least as many credits reserved as buffers attached. The > core of the problem is that when a file gets truncated, buffers that still need > checkpointing or that are attached to the committing transaction are left with > buffer_mapped set. When this happens to buffers beyond i_size attached to a > page stradding i_size, subsequent write extending the file will see these > buffers and as they are mapped (but underlying blocks were freed) things go > awry from here. > > The assertion failure just coincidentally (and in this case luckily as we would > start corrupting filesystem) triggers due to journal_head not being properly > cleaned up as well. > > We fix the problem by unmapping buffers if possible (in lots of cases we just > need a buffer attached to a transaction as a place holder but it must not be > written out anyway). And in one case, we just have to bite the bullet and wait > for transaction commit to finish. > > CC: Josef Bacik <jbacik@xxxxxxxxxxxx> > Signed-off-by: Jan Kara <jack@xxxxxxx> Applied, thanks! - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html