Fix for a rare problem seen under stress in data=journal mode: if we
have to restart a truncate transaction while traversing the inode's
direct blocks, we need to deal with bh==NULL in ext3_clear_blocks.
--- linux-ext3-2.4merge/fs/ext3/inode.c.=K0009=.orig Tue Aug 27 23:19:57 2002
+++ linux-ext3-2.4merge/fs/ext3/inode.c Tue Aug 27 23:19:57 2002
@@ -1591,8 +1591,10 @@
}
ext3_mark_inode_dirty(handle, inode);
ext3_journal_test_restart(handle, inode);
- BUFFER_TRACE(bh, "get_write_access");
- ext3_journal_get_write_access(handle, bh);
+ if (bh) {
+ BUFFER_TRACE(bh, "retaking write access");
+ ext3_journal_get_write_access(handle, bh);
+ }
}
/*