aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2010-05-16 21:00:00 -0400
committerTheodore Ts'o <tytso@mit.edu>2010-05-16 21:00:00 -0400
commit24676da469f50f433baa347845639662c561d1f6 (patch)
treeb4b8205f8b50376af286193d0dcbe76f2bc2d1e1
parent2ed886852adfcb070bf350e66a0da0d98b2f3ab5 (diff)
ext4: Convert calls of ext4_error() to EXT4_ERROR_INODE()
EXT4_ERROR_INODE() tends to provide better error information and in a more consistent format. Some errors were not even identifying the inode or directory which was corrupted, which made them not very useful. Addresses-Google-Bug: #2507977 Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
-rw-r--r--fs/ext4/dir.c10
-rw-r--r--fs/ext4/ext4.h4
-rw-r--r--fs/ext4/extents.c10
-rw-r--r--fs/ext4/inode.c83
-rw-r--r--fs/ext4/move_extent.c8
-rw-r--r--fs/ext4/namei.c39
-rw-r--r--fs/ext4/xattr.c35
7 files changed, 86 insertions, 103 deletions
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c
index e3f2700b8be7..6a2b8bcff641 100644
--- a/fs/ext4/dir.c
+++ b/fs/ext4/dir.c
@@ -83,11 +83,10 @@ int ext4_check_dir_entry(const char *function, struct inode *dir,
83 error_msg = "inode out of bounds"; 83 error_msg = "inode out of bounds";
84 84
85 if (error_msg != NULL) 85 if (error_msg != NULL)
86 __ext4_error(dir->i_sb, function, 86 ext4_error_inode(function, dir,
87 "bad entry in directory #%lu: %s - block=%llu" 87 "bad entry in directory: %s - block=%llu"
88 "offset=%u(%u), inode=%u, rec_len=%d, name_len=%d", 88 "offset=%u(%u), inode=%u, rec_len=%d, name_len=%d",
89 dir->i_ino, error_msg, 89 error_msg, (unsigned long long) bh->b_blocknr,
90 (unsigned long long) bh->b_blocknr,
91 (unsigned) (offset%bh->b_size), offset, 90 (unsigned) (offset%bh->b_size), offset,
92 le32_to_cpu(de->inode), 91 le32_to_cpu(de->inode),
93 rlen, de->name_len); 92 rlen, de->name_len);
@@ -152,9 +151,8 @@ static int ext4_readdir(struct file *filp,
152 */ 151 */
153 if (!bh) { 152 if (!bh) {
154 if (!dir_has_error) { 153 if (!dir_has_error) {
155 ext4_error(sb, "directory #%lu " 154 EXT4_ERROR_INODE(inode, "directory "
156 "contains a hole at offset %Lu", 155 "contains a hole at offset %Lu",
157 inode->i_ino,
158 (unsigned long long) filp->f_pos); 156 (unsigned long long) filp->f_pos);
159 dir_has_error = 1; 157 dir_has_error = 1;
160 } 158 }
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 57fc0e5c0918..413321ff1e20 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -54,10 +54,10 @@
54#endif 54#endif
55 55
56#define EXT4_ERROR_INODE(inode, fmt, a...) \ 56#define EXT4_ERROR_INODE(inode, fmt, a...) \
57 ext4_error_inode(__func__, (inode), (fmt), ## a); 57 ext4_error_inode(__func__, (inode), (fmt), ## a)
58 58
59#define EXT4_ERROR_FILE(file, fmt, a...) \ 59#define EXT4_ERROR_FILE(file, fmt, a...) \
60 ext4_error_file(__func__, (file), (fmt), ## a); 60 ext4_error_file(__func__, (file), (fmt), ## a)
61 61
62/* data type for block offset of block group */ 62/* data type for block offset of block group */
63typedef int ext4_grpblk_t; 63typedef int ext4_grpblk_t;
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index d6801eb7232b..91c3873970e4 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -439,10 +439,10 @@ static int __ext4_ext_check(const char *function, struct inode *inode,
439 return 0; 439 return 0;
440 440
441corrupted: 441corrupted:
442 __ext4_error(inode->i_sb, function, 442 ext4_error_inode(function, inode,
443 "bad header/extent in inode #%lu: %s - magic %x, " 443 "bad header/extent: %s - magic %x, "
444 "entries %u, max %u(%u), depth %u(%u)", 444 "entries %u, max %u(%u), depth %u(%u)",
445 inode->i_ino, error_msg, le16_to_cpu(eh->eh_magic), 445 error_msg, le16_to_cpu(eh->eh_magic),
446 le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max), 446 le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max),
447 max, le16_to_cpu(eh->eh_depth), depth); 447 max, le16_to_cpu(eh->eh_depth), depth);
448 448
@@ -1622,9 +1622,7 @@ int ext4_ext_try_to_merge(struct inode *inode,
1622 merge_done = 1; 1622 merge_done = 1;
1623 WARN_ON(eh->eh_entries == 0); 1623 WARN_ON(eh->eh_entries == 0);
1624 if (!eh->eh_entries) 1624 if (!eh->eh_entries)
1625 ext4_error(inode->i_sb, 1625 EXT4_ERROR_INODE(inode, "eh->eh_entries = 0!");
1626 "inode#%lu, eh->eh_entries = 0!",
1627 inode->i_ino);
1628 } 1626 }
1629 1627
1630 return merge_done; 1628 return merge_done;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 0b1d7c89f93f..3b6877257580 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -348,9 +348,8 @@ static int __ext4_check_blockref(const char *function, struct inode *inode,
348 if (blk && 348 if (blk &&
349 unlikely(!ext4_data_block_valid(EXT4_SB(inode->i_sb), 349 unlikely(!ext4_data_block_valid(EXT4_SB(inode->i_sb),
350 blk, 1))) { 350 blk, 1))) {
351 __ext4_error(inode->i_sb, function, 351 ext4_error_inode(function, inode,
352 "invalid block reference %u " 352 "invalid block reference %u", blk);
353 "in inode #%lu", blk, inode->i_ino);
354 return -EIO; 353 return -EIO;
355 } 354 }
356 } 355 }
@@ -1129,15 +1128,15 @@ void ext4_da_update_reserve_space(struct inode *inode,
1129 ext4_discard_preallocations(inode); 1128 ext4_discard_preallocations(inode);
1130} 1129}
1131 1130
1132static int check_block_validity(struct inode *inode, const char *msg, 1131static int check_block_validity(struct inode *inode, const char *func,
1133 sector_t logical, sector_t phys, int len) 1132 struct ext4_map_blocks *map)
1134{ 1133{
1135 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), phys, len)) { 1134 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), map->m_pblk,
1136 __ext4_error(inode->i_sb, msg, 1135 map->m_len)) {
1137 "inode #%lu logical block %llu mapped to %llu " 1136 ext4_error_inode(func, inode,
1138 "(size %d)", inode->i_ino, 1137 "lblock %lu mapped to illegal pblock %llu "
1139 (unsigned long long) logical, 1138 "(length %d)", (unsigned long) map->m_lblk,
1140 (unsigned long long) phys, len); 1139 map->m_pblk, map->m_len);
1141 return -EIO; 1140 return -EIO;
1142 } 1141 }
1143 return 0; 1142 return 0;
@@ -1245,8 +1244,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
1245 up_read((&EXT4_I(inode)->i_data_sem)); 1244 up_read((&EXT4_I(inode)->i_data_sem));
1246 1245
1247 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { 1246 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) {
1248 int ret = check_block_validity(inode, "file system corruption", 1247 int ret = check_block_validity(inode, __func__, map);
1249 map->m_lblk, map->m_pblk, retval);
1250 if (ret != 0) 1248 if (ret != 0)
1251 return ret; 1249 return ret;
1252 } 1250 }
@@ -1326,10 +1324,9 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
1326 1324
1327 up_write((&EXT4_I(inode)->i_data_sem)); 1325 up_write((&EXT4_I(inode)->i_data_sem));
1328 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { 1326 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) {
1329 int ret = check_block_validity(inode, "file system " 1327 int ret = check_block_validity(inode,
1330 "corruption after allocation", 1328 "ext4_map_blocks_after_alloc",
1331 map->m_lblk, map->m_pblk, 1329 map);
1332 retval);
1333 if (ret != 0) 1330 if (ret != 0)
1334 return ret; 1331 return ret;
1335 } 1332 }
@@ -4327,10 +4324,9 @@ static int ext4_clear_blocks(handle_t *handle, struct inode *inode,
4327 4324
4328 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), block_to_free, 4325 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), block_to_free,
4329 count)) { 4326 count)) {
4330 ext4_error(inode->i_sb, "inode #%lu: " 4327 EXT4_ERROR_INODE(inode, "attempt to clear invalid "
4331 "attempt to clear blocks %llu len %lu, invalid", 4328 "blocks %llu len %lu",
4332 inode->i_ino, (unsigned long long) block_to_free, 4329 (unsigned long long) block_to_free, count);
4333 count);
4334 return 1; 4330 return 1;
4335 } 4331 }
4336 4332
@@ -4435,11 +4431,10 @@ static void ext4_free_data(handle_t *handle, struct inode *inode,
4435 if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh)) 4431 if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh))
4436 ext4_handle_dirty_metadata(handle, inode, this_bh); 4432 ext4_handle_dirty_metadata(handle, inode, this_bh);
4437 else 4433 else
4438 ext4_error(inode->i_sb, 4434 EXT4_ERROR_INODE(inode,
4439 "circular indirect block detected, " 4435 "circular indirect block detected at "
4440 "inode=%lu, block=%llu", 4436 "block %llu",
4441 inode->i_ino, 4437 (unsigned long long) this_bh->b_blocknr);
4442 (unsigned long long) this_bh->b_blocknr);
4443 } 4438 }
4444} 4439}
4445 4440
@@ -4477,11 +4472,10 @@ static void ext4_free_branches(handle_t *handle, struct inode *inode,
4477 4472
4478 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), 4473 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb),
4479 nr, 1)) { 4474 nr, 1)) {
4480 ext4_error(inode->i_sb, 4475 EXT4_ERROR_INODE(inode,
4481 "indirect mapped block in inode " 4476 "invalid indirect mapped "
4482 "#%lu invalid (level %d, blk #%lu)", 4477 "block %lu (level %d)",
4483 inode->i_ino, depth, 4478 (unsigned long) nr, depth);
4484 (unsigned long) nr);
4485 break; 4479 break;
4486 } 4480 }
4487 4481
@@ -4493,9 +4487,9 @@ static void ext4_free_branches(handle_t *handle, struct inode *inode,
4493 * (should be rare). 4487 * (should be rare).
4494 */ 4488 */
4495 if (!bh) { 4489 if (!bh) {
4496 ext4_error(inode->i_sb, 4490 EXT4_ERROR_INODE(inode,
4497 "Read failure, inode=%lu, block=%llu", 4491 "Read failure block=%llu",
4498 inode->i_ino, nr); 4492 (unsigned long long) nr);
4499 continue; 4493 continue;
4500 } 4494 }
4501 4495
@@ -4810,8 +4804,8 @@ static int __ext4_get_inode_loc(struct inode *inode,
4810 4804
4811 bh = sb_getblk(sb, block); 4805 bh = sb_getblk(sb, block);
4812 if (!bh) { 4806 if (!bh) {
4813 ext4_error(sb, "unable to read inode block - " 4807 EXT4_ERROR_INODE(inode, "unable to read inode block - "
4814 "inode=%lu, block=%llu", inode->i_ino, block); 4808 "block %llu", block);
4815 return -EIO; 4809 return -EIO;
4816 } 4810 }
4817 if (!buffer_uptodate(bh)) { 4811 if (!buffer_uptodate(bh)) {
@@ -4909,8 +4903,8 @@ make_io:
4909 submit_bh(READ_META, bh); 4903 submit_bh(READ_META, bh);
4910 wait_on_buffer(bh); 4904 wait_on_buffer(bh);
4911 if (!buffer_uptodate(bh)) { 4905 if (!buffer_uptodate(bh)) {
4912 ext4_error(sb, "unable to read inode block - inode=%lu," 4906 EXT4_ERROR_INODE(inode, "unable to read inode "
4913 " block=%llu", inode->i_ino, block); 4907 "block %llu", block);
4914 brelse(bh); 4908 brelse(bh);
4915 return -EIO; 4909 return -EIO;
4916 } 4910 }
@@ -5121,8 +5115,8 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
5121 ret = 0; 5115 ret = 0;
5122 if (ei->i_file_acl && 5116 if (ei->i_file_acl &&
5123 !ext4_data_block_valid(EXT4_SB(sb), ei->i_file_acl, 1)) { 5117 !ext4_data_block_valid(EXT4_SB(sb), ei->i_file_acl, 1)) {
5124 ext4_error(sb, "bad extended attribute block %llu inode #%lu", 5118 EXT4_ERROR_INODE(inode, "bad extended attribute block %llu",
5125 ei->i_file_acl, inode->i_ino); 5119 ei->i_file_acl);
5126 ret = -EIO; 5120 ret = -EIO;
5127 goto bad_inode; 5121 goto bad_inode;
5128 } else if (ei->i_flags & EXT4_EXTENTS_FL) { 5122 } else if (ei->i_flags & EXT4_EXTENTS_FL) {
@@ -5167,8 +5161,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
5167 new_decode_dev(le32_to_cpu(raw_inode->i_block[1]))); 5161 new_decode_dev(le32_to_cpu(raw_inode->i_block[1])));
5168 } else { 5162 } else {
5169 ret = -EIO; 5163 ret = -EIO;
5170 ext4_error(inode->i_sb, "bogus i_mode (%o) for inode=%lu", 5164 EXT4_ERROR_INODE(inode, "bogus i_mode (%o)", inode->i_mode);
5171 inode->i_mode, inode->i_ino);
5172 goto bad_inode; 5165 goto bad_inode;
5173 } 5166 }
5174 brelse(iloc.bh); 5167 brelse(iloc.bh);
@@ -5406,9 +5399,9 @@ int ext4_write_inode(struct inode *inode, struct writeback_control *wbc)
5406 if (wbc->sync_mode == WB_SYNC_ALL) 5399 if (wbc->sync_mode == WB_SYNC_ALL)
5407 sync_dirty_buffer(iloc.bh); 5400 sync_dirty_buffer(iloc.bh);
5408 if (buffer_req(iloc.bh) && !buffer_uptodate(iloc.bh)) { 5401 if (buffer_req(iloc.bh) && !buffer_uptodate(iloc.bh)) {
5409 ext4_error(inode->i_sb, "IO error syncing inode, " 5402 EXT4_ERROR_INODE(inode,
5410 "inode=%lu, block=%llu", inode->i_ino, 5403 "IO error syncing inode (block=%llu)",
5411 (unsigned long long)iloc.bh->b_blocknr); 5404 (unsigned long long) iloc.bh->b_blocknr);
5412 err = -EIO; 5405 err = -EIO;
5413 } 5406 }
5414 brelse(iloc.bh); 5407 brelse(iloc.bh);
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
index 82621a360932..b8b8ea1ceda8 100644
--- a/fs/ext4/move_extent.c
+++ b/fs/ext4/move_extent.c
@@ -530,7 +530,7 @@ mext_leaf_block(handle_t *handle, struct inode *orig_inode,
530 * new_ext |-------| 530 * new_ext |-------|
531 */ 531 */
532 if (le32_to_cpu(oext->ee_block) + oext_alen - 1 < new_ext_end) { 532 if (le32_to_cpu(oext->ee_block) + oext_alen - 1 < new_ext_end) {
533 ext4_error(orig_inode->i_sb, 533 EXT4_ERROR_INODE(orig_inode,
534 "new_ext_end(%u) should be less than or equal to " 534 "new_ext_end(%u) should be less than or equal to "
535 "oext->ee_block(%u) + oext_alen(%d) - 1", 535 "oext->ee_block(%u) + oext_alen(%d) - 1",
536 new_ext_end, le32_to_cpu(oext->ee_block), 536 new_ext_end, le32_to_cpu(oext->ee_block),
@@ -693,12 +693,12 @@ mext_replace_branches(handle_t *handle, struct inode *orig_inode,
693 while (1) { 693 while (1) {
694 /* The extent for donor must be found. */ 694 /* The extent for donor must be found. */
695 if (!dext) { 695 if (!dext) {
696 ext4_error(donor_inode->i_sb, 696 EXT4_ERROR_INODE(donor_inode,
697 "The extent for donor must be found"); 697 "The extent for donor must be found");
698 *err = -EIO; 698 *err = -EIO;
699 goto out; 699 goto out;
700 } else if (donor_off != le32_to_cpu(tmp_dext.ee_block)) { 700 } else if (donor_off != le32_to_cpu(tmp_dext.ee_block)) {
701 ext4_error(donor_inode->i_sb, 701 EXT4_ERROR_INODE(donor_inode,
702 "Donor offset(%u) and the first block of donor " 702 "Donor offset(%u) and the first block of donor "
703 "extent(%u) should be equal", 703 "extent(%u) should be equal",
704 donor_off, 704 donor_off,
@@ -1355,7 +1355,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp,
1355 if (ret1 < 0) 1355 if (ret1 < 0)
1356 break; 1356 break;
1357 if (*moved_len > len) { 1357 if (*moved_len > len) {
1358 ext4_error(orig_inode->i_sb, 1358 EXT4_ERROR_INODE(orig_inode,
1359 "We replaced blocks too much! " 1359 "We replaced blocks too much! "
1360 "sum of replaced: %llu requested: %llu", 1360 "sum of replaced: %llu requested: %llu",
1361 *moved_len, len); 1361 *moved_len, len);
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 0c070fabd108..bff77b04f0d1 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -943,8 +943,8 @@ restart:
943 wait_on_buffer(bh); 943 wait_on_buffer(bh);
944 if (!buffer_uptodate(bh)) { 944 if (!buffer_uptodate(bh)) {
945 /* read error, skip block & hope for the best */ 945 /* read error, skip block & hope for the best */
946 ext4_error(sb, "reading directory #%lu offset %lu", 946 EXT4_ERROR_INODE(dir, "reading directory lblock %lu",
947 dir->i_ino, (unsigned long)block); 947 (unsigned long) block);
948 brelse(bh); 948 brelse(bh);
949 goto next; 949 goto next;
950 } 950 }
@@ -1066,15 +1066,15 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, stru
1066 __u32 ino = le32_to_cpu(de->inode); 1066 __u32 ino = le32_to_cpu(de->inode);
1067 brelse(bh); 1067 brelse(bh);
1068 if (!ext4_valid_inum(dir->i_sb, ino)) { 1068 if (!ext4_valid_inum(dir->i_sb, ino)) {
1069 ext4_error(dir->i_sb, "bad inode number: %u", ino); 1069 EXT4_ERROR_INODE(dir, "bad inode number: %u", ino);
1070 return ERR_PTR(-EIO); 1070 return ERR_PTR(-EIO);
1071 } 1071 }
1072 inode = ext4_iget(dir->i_sb, ino); 1072 inode = ext4_iget(dir->i_sb, ino);
1073 if (unlikely(IS_ERR(inode))) { 1073 if (unlikely(IS_ERR(inode))) {
1074 if (PTR_ERR(inode) == -ESTALE) { 1074 if (PTR_ERR(inode) == -ESTALE) {
1075 ext4_error(dir->i_sb, 1075 EXT4_ERROR_INODE(dir,
1076 "deleted inode referenced: %u", 1076 "deleted inode referenced: %u",
1077 ino); 1077 ino);
1078 return ERR_PTR(-EIO); 1078 return ERR_PTR(-EIO);
1079 } else { 1079 } else {
1080 return ERR_CAST(inode); 1080 return ERR_CAST(inode);
@@ -1104,8 +1104,8 @@ struct dentry *ext4_get_parent(struct dentry *child)
1104 brelse(bh); 1104 brelse(bh);
1105 1105
1106 if (!ext4_valid_inum(child->d_inode->i_sb, ino)) { 1106 if (!ext4_valid_inum(child->d_inode->i_sb, ino)) {
1107 ext4_error(child->d_inode->i_sb, 1107 EXT4_ERROR_INODE(child->d_inode,
1108 "bad inode number: %u", ino); 1108 "bad parent inode number: %u", ino);
1109 return ERR_PTR(-EIO); 1109 return ERR_PTR(-EIO);
1110 } 1110 }
1111 1111
@@ -1404,9 +1404,7 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
1404 de = (struct ext4_dir_entry_2 *)((char *)fde + 1404 de = (struct ext4_dir_entry_2 *)((char *)fde +
1405 ext4_rec_len_from_disk(fde->rec_len, blocksize)); 1405 ext4_rec_len_from_disk(fde->rec_len, blocksize));
1406 if ((char *) de >= (((char *) root) + blocksize)) { 1406 if ((char *) de >= (((char *) root) + blocksize)) {
1407 ext4_error(dir->i_sb, 1407 EXT4_ERROR_INODE(dir, "invalid rec_len for '..'");
1408 "invalid rec_len for '..' in inode %lu",
1409 dir->i_ino);
1410 brelse(bh); 1408 brelse(bh);
1411 return -EIO; 1409 return -EIO;
1412 } 1410 }
@@ -1915,9 +1913,8 @@ static int empty_dir(struct inode *inode)
1915 if (inode->i_size < EXT4_DIR_REC_LEN(1) + EXT4_DIR_REC_LEN(2) || 1913 if (inode->i_size < EXT4_DIR_REC_LEN(1) + EXT4_DIR_REC_LEN(2) ||
1916 !(bh = ext4_bread(NULL, inode, 0, 0, &err))) { 1914 !(bh = ext4_bread(NULL, inode, 0, 0, &err))) {
1917 if (err) 1915 if (err)
1918 ext4_error(inode->i_sb, 1916 EXT4_ERROR_INODE(inode,
1919 "error %d reading directory #%lu offset 0", 1917 "error %d reading directory lblock 0", err);
1920 err, inode->i_ino);
1921 else 1918 else
1922 ext4_warning(inode->i_sb, 1919 ext4_warning(inode->i_sb,
1923 "bad directory (dir #%lu) - no data block", 1920 "bad directory (dir #%lu) - no data block",
@@ -1941,17 +1938,17 @@ static int empty_dir(struct inode *inode)
1941 de = ext4_next_entry(de1, sb->s_blocksize); 1938 de = ext4_next_entry(de1, sb->s_blocksize);
1942 while (offset < inode->i_size) { 1939 while (offset < inode->i_size) {
1943 if (!bh || 1940 if (!bh ||
1944 (void *) de >= (void *) (bh->b_data+sb->s_blocksize)) { 1941 (void *) de >= (void *) (bh->b_data+sb->s_blocksize)) {
1942 unsigned int lblock;
1945 err = 0; 1943 err = 0;
1946 brelse(bh); 1944 brelse(bh);
1947 bh = ext4_bread(NULL, inode, 1945 lblock = offset >> EXT4_BLOCK_SIZE_BITS(sb);
1948 offset >> EXT4_BLOCK_SIZE_BITS(sb), 0, &err); 1946 bh = ext4_bread(NULL, inode, lblock, 0, &err);
1949 if (!bh) { 1947 if (!bh) {
1950 if (err) 1948 if (err)
1951 ext4_error(sb, 1949 EXT4_ERROR_INODE(inode,
1952 "error %d reading directory" 1950 "error %d reading directory "
1953 " #%lu offset %u", 1951 "lblock %u", err, lblock);
1954 err, inode->i_ino, offset);
1955 offset += sb->s_blocksize; 1952 offset += sb->s_blocksize;
1956 continue; 1953 continue;
1957 } 1954 }
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index b4c5aa8489d8..0a09a2e96f0a 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -228,9 +228,8 @@ ext4_xattr_block_get(struct inode *inode, int name_index, const char *name,
228 atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount)); 228 atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
229 if (ext4_xattr_check_block(bh)) { 229 if (ext4_xattr_check_block(bh)) {
230bad_block: 230bad_block:
231 ext4_error(inode->i_sb, 231 EXT4_ERROR_INODE(inode, "bad block %llu",
232 "inode %lu: bad block %llu", inode->i_ino, 232 EXT4_I(inode)->i_file_acl);
233 EXT4_I(inode)->i_file_acl);
234 error = -EIO; 233 error = -EIO;
235 goto cleanup; 234 goto cleanup;
236 } 235 }
@@ -372,9 +371,8 @@ ext4_xattr_block_list(struct dentry *dentry, char *buffer, size_t buffer_size)
372 ea_bdebug(bh, "b_count=%d, refcount=%d", 371 ea_bdebug(bh, "b_count=%d, refcount=%d",
373 atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount)); 372 atomic_read(&(bh->b_count)), le32_to_cpu(BHDR(bh)->h_refcount));
374 if (ext4_xattr_check_block(bh)) { 373 if (ext4_xattr_check_block(bh)) {
375 ext4_error(inode->i_sb, 374 EXT4_ERROR_INODE(inode, "bad block %llu",
376 "inode %lu: bad block %llu", inode->i_ino, 375 EXT4_I(inode)->i_file_acl);
377 EXT4_I(inode)->i_file_acl);
378 error = -EIO; 376 error = -EIO;
379 goto cleanup; 377 goto cleanup;
380 } 378 }
@@ -666,8 +664,8 @@ ext4_xattr_block_find(struct inode *inode, struct ext4_xattr_info *i,
666 atomic_read(&(bs->bh->b_count)), 664 atomic_read(&(bs->bh->b_count)),
667 le32_to_cpu(BHDR(bs->bh)->h_refcount)); 665 le32_to_cpu(BHDR(bs->bh)->h_refcount));
668 if (ext4_xattr_check_block(bs->bh)) { 666 if (ext4_xattr_check_block(bs->bh)) {
669 ext4_error(sb, "inode %lu: bad block %llu", 667 EXT4_ERROR_INODE(inode, "bad block %llu",
670 inode->i_ino, EXT4_I(inode)->i_file_acl); 668 EXT4_I(inode)->i_file_acl);
671 error = -EIO; 669 error = -EIO;
672 goto cleanup; 670 goto cleanup;
673 } 671 }
@@ -880,8 +878,8 @@ cleanup_dquot:
880 goto cleanup; 878 goto cleanup;
881 879
882bad_block: 880bad_block:
883 ext4_error(inode->i_sb, "inode %lu: bad block %llu", 881 EXT4_ERROR_INODE(inode, "bad block %llu",
884 inode->i_ino, EXT4_I(inode)->i_file_acl); 882 EXT4_I(inode)->i_file_acl);
885 goto cleanup; 883 goto cleanup;
886 884
887#undef header 885#undef header
@@ -1194,8 +1192,8 @@ retry:
1194 if (!bh) 1192 if (!bh)
1195 goto cleanup; 1193 goto cleanup;
1196 if (ext4_xattr_check_block(bh)) { 1194 if (ext4_xattr_check_block(bh)) {
1197 ext4_error(inode->i_sb, "inode %lu: bad block %llu", 1195 EXT4_ERROR_INODE(inode, "bad block %llu",
1198 inode->i_ino, EXT4_I(inode)->i_file_acl); 1196 EXT4_I(inode)->i_file_acl);
1199 error = -EIO; 1197 error = -EIO;
1200 goto cleanup; 1198 goto cleanup;
1201 } 1199 }
@@ -1372,14 +1370,14 @@ ext4_xattr_delete_inode(handle_t *handle, struct inode *inode)
1372 goto cleanup; 1370 goto cleanup;
1373 bh = sb_bread(inode->i_sb, EXT4_I(inode)->i_file_acl); 1371 bh = sb_bread(inode->i_sb, EXT4_I(inode)->i_file_acl);
1374 if (!bh) { 1372 if (!bh) {
1375 ext4_error(inode->i_sb, "inode %lu: block %llu read error", 1373 EXT4_ERROR_INODE(inode, "block %llu read error",
1376 inode->i_ino, EXT4_I(inode)->i_file_acl); 1374 EXT4_I(inode)->i_file_acl);
1377 goto cleanup; 1375 goto cleanup;
1378 } 1376 }
1379 if (BHDR(bh)->h_magic != cpu_to_le32(EXT4_XATTR_MAGIC) || 1377 if (BHDR(bh)->h_magic != cpu_to_le32(EXT4_XATTR_MAGIC) ||
1380 BHDR(bh)->h_blocks != cpu_to_le32(1)) { 1378 BHDR(bh)->h_blocks != cpu_to_le32(1)) {
1381 ext4_error(inode->i_sb, "inode %lu: bad block %llu", 1379 EXT4_ERROR_INODE(inode, "bad block %llu",
1382 inode->i_ino, EXT4_I(inode)->i_file_acl); 1380 EXT4_I(inode)->i_file_acl);
1383 goto cleanup; 1381 goto cleanup;
1384 } 1382 }
1385 ext4_xattr_release_block(handle, inode, bh); 1383 ext4_xattr_release_block(handle, inode, bh);
@@ -1504,9 +1502,8 @@ again:
1504 } 1502 }
1505 bh = sb_bread(inode->i_sb, ce->e_block); 1503 bh = sb_bread(inode->i_sb, ce->e_block);
1506 if (!bh) { 1504 if (!bh) {
1507 ext4_error(inode->i_sb, 1505 EXT4_ERROR_INODE(inode, "block %lu read error",
1508 "inode %lu: block %lu read error", 1506 (unsigned long) ce->e_block);
1509 inode->i_ino, (unsigned long) ce->e_block);
1510 } else if (le32_to_cpu(BHDR(bh)->h_refcount) >= 1507 } else if (le32_to_cpu(BHDR(bh)->h_refcount) >=
1511 EXT4_XATTR_REFCOUNT_MAX) { 1508 EXT4_XATTR_REFCOUNT_MAX) {
1512 ea_idebug(inode, "block %lu refcount %d>=%d", 1509 ea_idebug(inode, "block %lu refcount %d>=%d",