+++ /dev/null
-Index: linux-stage/include/linux/ext3_fs.h
-===================================================================
---- linux-stage.orig/include/linux/ext3_fs.h
-+++ linux-stage/include/linux/ext3_fs.h
-@@ -921,6 +921,7 @@ extern unsigned ext3_list_backups(struct
- unsigned *five, unsigned *seven);
-
- /* super.c */
-+extern void ext3_commit_super (struct super_block *, struct ext3_super_block *, int);
- extern void ext3_error (struct super_block *, const char *, const char *, ...)
- __attribute__ ((format (printf, 3, 4)));
- extern void __ext3_std_error (struct super_block *, const char *, int);
-Index: linux-stage/fs/ext3/super.c
-===================================================================
---- linux-stage.orig/fs/ext3/super.c
-+++ linux-stage/fs/ext3/super.c
-@@ -47,9 +47,6 @@ static int ext3_load_journal(struct supe
- unsigned long journal_devnum);
- static int ext3_create_journal(struct super_block *, struct ext3_super_block *,
- int);
--static void ext3_commit_super (struct super_block * sb,
-- struct ext3_super_block * es,
-- int sync);
- static void ext3_mark_recovery_complete(struct super_block * sb,
- struct ext3_super_block * es);
- static void ext3_clear_journal_err(struct super_block * sb,
-@@ -2175,7 +2172,7 @@ static int ext3_create_journal(struct su
- return 0;
- }
-
--static void ext3_commit_super (struct super_block * sb,
-+void ext3_commit_super (struct super_block * sb,
- struct ext3_super_block * es,
- int sync)
- {
-Index: linux-stage/fs/ext3/namei.c
-===================================================================
---- linux-stage.orig/fs/ext3/namei.c
-+++ linux-stage/fs/ext3/namei.c
-@@ -1591,7 +1591,7 @@ static int ext3_delete_entry (handle_t *
- struct buffer_head * bh)
- {
- struct ext3_dir_entry_2 * de, * pde;
-- int i;
-+ int i, err;
-
- i = 0;
- pde = NULL;
-@@ -1601,7 +1601,9 @@ static int ext3_delete_entry (handle_t *
- return -EIO;
- if (de == de_del) {
- BUFFER_TRACE(bh, "get_write_access");
-- ext3_journal_get_write_access(handle, bh);
-+ err = ext3_journal_get_write_access(handle, bh);
-+ if (err)
-+ return err;
- if (pde)
- pde->rec_len =
- cpu_to_le16(le16_to_cpu(pde->rec_len) +
-Index: linux-stage/fs/ext3/inode.c
-===================================================================
---- linux-stage.orig/fs/ext3/inode.c
-+++ linux-stage/fs/ext3/inode.c
-@@ -1838,8 +1838,18 @@ ext3_clear_blocks(handle_t *handle, stru
- ext3_mark_inode_dirty(handle, inode);
- ext3_journal_test_restart(handle, inode);
- if (bh) {
-+ int err;
- BUFFER_TRACE(bh, "retaking write access");
-- ext3_journal_get_write_access(handle, bh);
-+ err = ext3_journal_get_write_access(handle, bh);
-+ if (err) {
-+ struct super_block *sb = inode->i_sb;
-+ struct ext3_super_block *es = EXT3_SB(sb)->s_es;
-+ printk (KERN_CRIT"EXT3-fs: can't continue truncate\n");
-+ EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;
-+ es->s_state |= cpu_to_le16(EXT3_ERROR_FS);
-+ ext3_commit_super(sb, es, 1);
-+ return;
-+ }
- }
- }
-