Browse Source

ext3: Add journal error check into ext3_delete_entry()

Check return value of ext3_journal_get_write_access() and
ext3_journal_dirty_metadata().

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Namhyung Kim 14 years ago
parent
commit
fbcae8e32d
1 changed files with 12 additions and 2 deletions
  1. 12 2
      fs/ext3/namei.c

+ 12 - 2
fs/ext3/namei.c

@@ -1644,8 +1644,13 @@ static int ext3_delete_entry (handle_t *handle,
 		if (!ext3_check_dir_entry("ext3_delete_entry", dir, de, bh, i))
 		if (!ext3_check_dir_entry("ext3_delete_entry", dir, de, bh, i))
 			return -EIO;
 			return -EIO;
 		if (de == de_del)  {
 		if (de == de_del)  {
+			int err;
+
 			BUFFER_TRACE(bh, "get_write_access");
 			BUFFER_TRACE(bh, "get_write_access");
-			ext3_journal_get_write_access(handle, bh);
+			err = ext3_journal_get_write_access(handle, bh);
+			if (err)
+				goto journal_error;
+
 			if (pde)
 			if (pde)
 				pde->rec_len = ext3_rec_len_to_disk(
 				pde->rec_len = ext3_rec_len_to_disk(
 					ext3_rec_len_from_disk(pde->rec_len) +
 					ext3_rec_len_from_disk(pde->rec_len) +
@@ -1654,7 +1659,12 @@ static int ext3_delete_entry (handle_t *handle,
 				de->inode = 0;
 				de->inode = 0;
 			dir->i_version++;
 			dir->i_version++;
 			BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
 			BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata");
-			ext3_journal_dirty_metadata(handle, bh);
+			err = ext3_journal_dirty_metadata(handle, bh);
+			if (err) {
+journal_error:
+				ext3_std_error(dir->i_sb, err);
+				return err;
+			}
 			return 0;
 			return 0;
 		}
 		}
 		i += ext3_rec_len_from_disk(de->rec_len);
 		i += ext3_rec_len_from_disk(de->rec_len);