aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nilfs2/gcinode.c
diff options
context:
space:
mode:
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>2010-07-16 10:52:40 -0400
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>2010-07-22 21:02:13 -0400
commit1d5385b9f30ae43209459db424416a3e1d8f2bde (patch)
tree202a19586853da9ec598645b5d289d4a0164b232 /fs/nilfs2/gcinode.c
parentcfa913a5077f7619869b2b4d1bf23ccb4f8b3d7b (diff)
nilfs2: verify btree node after reading
This inserts sanity checks soon after read btree node from disk. This allows early detection of broken btree nodes, and helps to narrow down problems due to file system corruption. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2/gcinode.c')
-rw-r--r--fs/nilfs2/gcinode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/nilfs2/gcinode.c b/fs/nilfs2/gcinode.c
index 145f03cd7d3e..edb53fcb7f83 100644
--- a/fs/nilfs2/gcinode.c
+++ b/fs/nilfs2/gcinode.c
@@ -164,10 +164,15 @@ int nilfs_gccache_wait_and_mark_dirty(struct buffer_head *bh)
164 if (buffer_dirty(bh)) 164 if (buffer_dirty(bh))
165 return -EEXIST; 165 return -EEXIST;
166 166
167 if (buffer_nilfs_node(bh)) 167 if (buffer_nilfs_node(bh)) {
168 if (nilfs_btree_broken_node_block(bh)) {
169 clear_buffer_uptodate(bh);
170 return -EIO;
171 }
168 nilfs_btnode_mark_dirty(bh); 172 nilfs_btnode_mark_dirty(bh);
169 else 173 } else {
170 nilfs_mdt_mark_buffer_dirty(bh); 174 nilfs_mdt_mark_buffer_dirty(bh);
175 }
171 return 0; 176 return 0;
172} 177}
173 178