[Ocfs2-commits] mfasheh commits r2248 - trunk/fs/ocfs2
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Mon May 16 14:32:03 CDT 2005
Author: mfasheh
Signed-off-by: jlbec
Date: 2005-05-16 14:32:02 -0500 (Mon, 16 May 2005)
New Revision: 2248
Modified:
trunk/fs/ocfs2/alloc.c
trunk/fs/ocfs2/aops.c
trunk/fs/ocfs2/dlmglue.c
trunk/fs/ocfs2/extent_map.c
trunk/fs/ocfs2/file.c
trunk/fs/ocfs2/inode.c
trunk/fs/ocfs2/journal.c
trunk/fs/ocfs2/ocfs.h
trunk/fs/ocfs2/suballoc.c
Log:
* Print useful information when we discover some bad fs metadata.
Signed-off-by: jlbec
Modified: trunk/fs/ocfs2/alloc.c
===================================================================
--- trunk/fs/ocfs2/alloc.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/alloc.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -119,7 +119,7 @@
mlog_entry_void();
- OCFS_ASSERT(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
if (fe->i_last_eb_blk) {
retval = ocfs_read_block(osb, fe->i_last_eb_blk, &eb_bh,
@@ -314,7 +314,7 @@
for(i = 0; i < new_blocks; i++) {
bh = new_eb_bhs[i];
eb = (ocfs2_extent_block *) bh->b_data;
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
eb_el = &eb->h_list;
status = ocfs_journal_access(handle, inode, bh,
@@ -440,7 +440,7 @@
}
eb = (ocfs2_extent_block *) new_eb_bh->b_data;
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
eb_el = &eb->h_list;
fe = (ocfs2_dinode *) fe_bh->b_data;
fe_el = &fe->id2.i_list;
@@ -570,7 +570,7 @@
goto bail;
}
eb = (ocfs2_extent_block *) eb_bhs[i]->b_data;
- OCFS_ASSERT_RO(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
status = ocfs_journal_access(handle, inode, eb_bhs[i],
OCFS_JOURNAL_ACCESS_WRITE);
@@ -730,7 +730,7 @@
}
eb = (ocfs2_extent_block *) bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &eb->h_list;
if (el->l_next_free_rec < el->l_count) {
@@ -879,7 +879,7 @@
ocfs2_extent_list *el;
struct buffer_head *bh = NULL;
- OCFS_ASSERT(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
*new_last_eb = NULL;
@@ -928,7 +928,7 @@
}
eb = (ocfs2_extent_block *) bh->b_data;
el = &(eb->h_list);
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
} while (el->l_tree_depth);
*new_last_eb = bh;
@@ -1055,7 +1055,7 @@
goto bail;
}
eb = (ocfs2_extent_block *)eb_bh->b_data;
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &(eb->h_list);
status = ocfs_journal_access(handle, inode, eb_bh,
@@ -1214,7 +1214,7 @@
goto bail;
}
eb = (ocfs2_extent_block *) last_eb_bh->b_data;
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &(eb->h_list);
}
@@ -1338,7 +1338,7 @@
goto bail;
}
eb = (ocfs2_extent_block *) last_eb_bh->b_data;
- OCFS_ASSERT(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &(eb->h_list);
if (el->l_recs[0].e_cpos >= new_i_clusters)
metadata_delete = 1;
Modified: trunk/fs/ocfs2/aops.c
===================================================================
--- trunk/fs/ocfs2/aops.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/aops.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -70,16 +70,16 @@
}
fe = (ocfs2_dinode *) bh->b_data;
- if (!IS_VALID_FILE_ENTRY(fe)) {
- mlog(ML_ERROR, "Invalid fe at blkno %llu",
- (unsigned long long)OCFS_I(inode)->ip_blkno);
+ if (!OCFS2_IS_VALID_DINODE(fe)) {
+ mlog(ML_ERROR, "Invalid dinode #%"MLFu64": signature = %.*s\n",
+ fe->i_blkno, 7, fe->i_signature);
goto bail;
}
if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb,
fe->i_clusters)) {
- mlog(ML_ERROR, "block offset is outside the allocated size: %llu",
- (unsigned long long)iblock);
+ mlog(ML_ERROR, "block offset is outside the allocated size: "
+ "%llu\n", (unsigned long long)iblock);
goto bail;
}
Modified: trunk/fs/ocfs2/dlmglue.c
===================================================================
--- trunk/fs/ocfs2/dlmglue.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/dlmglue.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -1397,9 +1397,7 @@
/* This is a good chance to make sure we're not
* locking an invalid object. */
- mlog_bug_on_msg(!IS_VALID_FILE_ENTRY(fe),
- "Invalid dinode %"MLFu64" Signature: %s\n",
- OCFS_I(inode)->ip_blkno, fe->i_signature);
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
mlog_bug_on_msg(inode->i_generation !=
le32_to_cpu(fe->i_generation),
"Invalid dinode %"MLFu64" disk generation: %u "
Modified: trunk/fs/ocfs2/extent_map.c
===================================================================
--- trunk/fs/ocfs2/extent_map.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/extent_map.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -226,7 +226,7 @@
if (ret)
goto out_free;
eb = (ocfs2_extent_block *)eb_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &eb->h_list;
}
@@ -287,7 +287,7 @@
return ret;
}
eb = (ocfs2_extent_block *)bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_EXTENT_BLOCK(eb));
+ OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(eb);
el = &eb->h_list;
} else {
spin_unlock(&OCFS_I(inode)->ip_lock);
@@ -301,7 +301,7 @@
return ret;
}
di = (ocfs2_dinode *)bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_FILE_ENTRY(di));
+ OCFS2_BUG_ON_INVALID_DINODE(di);
el = &di->id2.i_list;
}
Modified: trunk/fs/ocfs2/file.c
===================================================================
--- trunk/fs/ocfs2/file.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/file.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -456,7 +456,7 @@
}
fe = (ocfs2_dinode *) fe_bh->b_data;
- OCFS_ASSERT(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
OCFS_ASSERT(fe->i_size == i_size_read(inode));
if (new_i_size > fe->i_size) {
@@ -741,7 +741,7 @@
}
fe = (ocfs2_dinode *) bh->b_data;
- OCFS_ASSERT(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
OCFS_ASSERT(i_size_read(inode) == (fe->i_size - *bytes_extended));
OCFS_ASSERT(new_i_size >= i_size_read(inode));
Modified: trunk/fs/ocfs2/inode.c
===================================================================
--- trunk/fs/ocfs2/inode.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/inode.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -254,13 +254,13 @@
sb = inode->i_sb;
osb = OCFS2_SB(sb);
- // this means that read_inode cannot create a superblock
- // inode today. change if needed.
- if (!IS_VALID_FILE_ENTRY(fe) || !(fe->i_flags & OCFS2_VALID_FL)) {
- mlog(ML_ERROR, "invalid file entry! i_ino=%lu, "
- "fe->i_blkno=%"MLFu64", valid_flag = %d\n",
- inode->i_ino, fe->i_blkno,
- (fe->i_flags & OCFS2_VALID_FL));
+ /* this means that read_inode cannot create a superblock inode
+ * today. change if needed. */
+ if (!OCFS2_IS_VALID_DINODE(fe) || !(fe->i_flags & OCFS2_VALID_FL)) {
+ mlog(ML_ERROR, "Invalid dinode: i_ino=%lu, i_blkno=%"MLFu64", "
+ "signature = %.*s, flags = 0x%x\n",
+ inode->i_ino, fe->i_blkno, 7, fe->i_signature,
+ fe->i_flags);
goto bail;
}
@@ -388,7 +388,7 @@
if (!args) {
mlog(ML_ERROR, "bad inode args\n");
- make_bad_inode (inode);
+ make_bad_inode(inode);
goto bail;
}
@@ -398,13 +398,15 @@
status = ocfs_read_block(osb, args->blkno, &bh, 0, NULL);
if (status < 0) {
mlog_errno(status);
- make_bad_inode (inode);
+ make_bad_inode(inode);
goto bail;
}
fe = (ocfs2_dinode *) bh->b_data;
- if(!IS_VALID_FILE_ENTRY(fe)) {
- make_bad_inode (inode);
+ if (!OCFS2_IS_VALID_DINODE(fe)) {
+ mlog(ML_ERROR, "Invalid dinode #%"MLFu64": signature = %.*s\n",
+ fe->i_blkno, 7, fe->i_signature);
+ make_bad_inode(inode);
goto bail;
}
@@ -416,7 +418,7 @@
if (ocfs_populate_inode (inode, fe, 0) < 0) {
mlog(ML_ERROR, "populate inode failed! i_blkno=%"MLFu64", "
"i_ino=%lu\n", fe->i_blkno, inode->i_ino);
- make_bad_inode (inode);
+ make_bad_inode(inode);
goto bail;
}
Modified: trunk/fs/ocfs2/journal.c
===================================================================
--- trunk/fs/ocfs2/journal.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/journal.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -609,7 +609,7 @@
mlog_entry_void();
fe = (ocfs2_dinode *) bh->b_data;
- OCFS_ASSERT(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
flags = le32_to_cpu(fe->id1.journal1.ij_flags);
if (dirty)
Modified: trunk/fs/ocfs2/ocfs.h
===================================================================
--- trunk/fs/ocfs2/ocfs.h 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/ocfs.h 2005-05-16 19:32:02 UTC (rev 2248)
@@ -60,13 +60,36 @@
#define OCFS_INVALID_NODE_NUM -1
-#define IS_VALID_FILE_ENTRY(ptr) \
+#define OCFS2_IS_VALID_DINODE(ptr) \
(!strcmp((ptr)->i_signature, OCFS2_INODE_SIGNATURE))
-#define IS_VALID_EXTENT_BLOCK(ptr) \
+
+#define OCFS2_BUG_ON_INVALID_DINODE(__di) do { \
+ mlog_bug_on_msg(!OCFS2_IS_VALID_DINODE((__di)), \
+ "Dinode # %"MLFu64" has bad signature %.*s\n", \
+ (__di)->i_blkno, 7, \
+ (__di)->i_signature); \
+} while (0);
+
+#define OCFS2_IS_VALID_EXTENT_BLOCK(ptr) \
(!strcmp((ptr)->h_signature, OCFS2_EXTENT_BLOCK_SIGNATURE))
-#define IS_VALID_GROUP_DESC(ptr) \
+
+#define OCFS2_BUG_ON_INVALID_EXTENT_BLOCK(__eb) do { \
+ mlog_bug_on_msg(!OCFS2_IS_VALID_EXTENT_BLOCK((__eb)), \
+ "Extent Block # %"MLFu64" has bad signature %.*s\n", \
+ (__eb)->h_blkno, 7, \
+ (__eb)->h_signature); \
+} while (0);
+
+#define OCFS2_IS_VALID_GROUP_DESC(ptr) \
(!strcmp((ptr)->bg_signature, OCFS2_GROUP_DESC_SIGNATURE))
+#define OCFS2_BUG_ON_INVALID_GROUP_DESC(__gd) do { \
+ mlog_bug_on_msg(!OCFS2_IS_VALID_GROUP_DESC((__gd)), \
+ "Group Descriptor # %"MLFu64" has bad signature %.*s\n",\
+ (__gd)->bg_blkno, 7, \
+ (__gd)->bg_signature); \
+} while (0);
+
/*
** Structures...
*/
Modified: trunk/fs/ocfs2/suballoc.c
===================================================================
--- trunk/fs/ocfs2/suballoc.c 2005-05-16 18:36:11 UTC (rev 2247)
+++ trunk/fs/ocfs2/suballoc.c 2005-05-16 19:32:02 UTC (rev 2248)
@@ -364,7 +364,7 @@
}
fe = (ocfs2_dinode *) bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
OCFS_ASSERT_RO(fe->i_flags & OCFS2_CHAIN_FL);
free_bits = le32_to_cpu(fe->id1.bitmap1.i_total) -
@@ -643,7 +643,7 @@
int offset, start, found, status = 0;
ocfs2_group_desc *bg = (ocfs2_group_desc *) bg_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
found = start = best_offset = best_size = 0;
bitmap = bg->bg_bitmap;
@@ -710,7 +710,7 @@
mlog_entry_void();
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
OCFS_ASSERT(bg->bg_free_bits_count >= num_bits);
mlog(0, "block_group_set_bits: off = %u, num = %u\n", bit_off,
@@ -778,9 +778,9 @@
ocfs2_group_desc *bg = (ocfs2_group_desc *) bg_bh->b_data;
ocfs2_group_desc *prev_bg = (ocfs2_group_desc *) prev_bg_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_FILE_ENTRY(fe));
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(prev_bg));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(prev_bg);
mlog(0, "In suballoc %"MLFu64", chain %u, move group %"MLFu64" to "
"top, prev = %"MLFu64"\n",
@@ -933,7 +933,7 @@
goto bail;
}
bg = (ocfs2_group_desc *) group_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
status = -ENOSPC;
/* for now, the chain search is a bit simplistic. We just use
@@ -959,7 +959,7 @@
goto bail;
}
bg = (ocfs2_group_desc *) group_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
}
if (status < 0) {
if (status != -ENOSPC)
@@ -1067,7 +1067,7 @@
OCFS_ASSERT(ac->ac_bh);
fe = (ocfs2_dinode *) ac->ac_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
OCFS_ASSERT_RO(le32_to_cpu(fe->id1.bitmap1.i_used) <
le32_to_cpu(fe->id1.bitmap1.i_total));
@@ -1342,7 +1342,7 @@
mlog_entry_void();
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(bg));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(bg);
mlog(0, "off = %u, num = %u\n", bit_off, num_bits);
@@ -1396,7 +1396,7 @@
mlog_entry_void();
- OCFS_ASSERT_RO(IS_VALID_FILE_ENTRY(fe));
+ OCFS2_BUG_ON_INVALID_DINODE(fe);
OCFS_ASSERT((count + start_bit)
<= ((u32) cl->cl_cpg * (u32) cl->cl_bpc));
@@ -1412,7 +1412,7 @@
}
group = (ocfs2_group_desc *) group_bh->b_data;
- OCFS_ASSERT_RO(IS_VALID_GROUP_DESC(group));
+ OCFS2_BUG_ON_INVALID_GROUP_DESC(group);
OCFS_ASSERT((count + start_bit) <= group->bg_bits);
status = ocfs_block_group_clear_bits(handle, alloc_inode,
More information about the Ocfs2-commits
mailing list