ext3: Add more journal error check
authorNamhyung Kim <namhyung@gmail.com>
Wed, 24 Nov 2010 16:53:13 +0000 (01:53 +0900)
committerJan Kara <jack@suse.cz>
Mon, 10 Jan 2011 18:04:06 +0000 (19:04 +0100)
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 a9580617edd24dc4b4e94df75265f1ce25cec8f1..ae94f6d949f526d04fc0e2dcb8983622eeab8fa0 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 e69eed547242d81976cc802abcc5e14a71be31e8..cc682ab55b73ded23067a226d1bed962bcf1300b 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)