ext3: Add more journal error check
Namhyung Kim [Wed, 24 Nov 2010 16:53:13 +0000 (01:53 +0900)]
Check return value of ext3_journal_get_write_acccess() and
ext3_journal_dirty_metadata().

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>

fs/ext3/inode.c
fs/ext3/namei.c

index a958061..ae94f6d 100644 (file)
@@ -2145,13 +2145,15 @@ static void ext3_clear_blocks(handle_t *handle, struct inode *inode,
        if (try_to_extend_transaction(handle, inode)) {
                if (bh) {
                        BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
-                       ext3_journal_dirty_metadata(handle, bh);
+                       if (ext3_journal_dirty_metadata(handle, bh))
+                               return;
                }
                ext3_mark_inode_dirty(handle, inode);
                truncate_restart_transaction(handle, inode);
                if (bh) {
                        BUFFER_TRACE(bh, "retaking write access");
-                       ext3_journal_get_write_access(handle, bh);
+                       if (ext3_journal_get_write_access(handle, bh))
+                               return;
                }
        }
 
index e69eed5..cc682ab 100644 (file)
@@ -1598,7 +1598,9 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry,
                        if (err)
                                goto journal_error;
                }
-               ext3_journal_dirty_metadata(handle, frames[0].bh);
+               err = ext3_journal_dirty_metadata(handle, frames[0].bh);
+               if (err)
+                       goto journal_error;
        }
        de = do_split(handle, dir, &bh, frame, &hinfo, &err);
        if (!de)