aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nilfs2/btree.c
diff options
context:
space:
mode:
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>2010-07-17 21:42:25 -0400
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>2010-07-22 21:02:15 -0400
commit4e13e66bee2d792c1aae21797f16c181024834eb (patch)
tree1fa51dade28bc025d9bda0e09dec1f202281a498 /fs/nilfs2/btree.c
parent464ece88630d0fb715ca942eabb1da825046a534 (diff)
nilfs2: introduce check flag to btree node buffer
nilfs_btree_get_block() now may return untested buffer due to read-ahead. This adds a new flag for buffer heads so that the btree code can check whether the buffer is already verified or not. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2/btree.c')
-rw-r--r--fs/nilfs2/btree.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c
index 1b5321c0bcac..d3faa0bba171 100644
--- a/fs/nilfs2/btree.c
+++ b/fs/nilfs2/btree.c
@@ -370,8 +370,16 @@ static int nilfs_btree_node_broken(const struct nilfs_btree_node *node,
370 370
371int nilfs_btree_broken_node_block(struct buffer_head *bh) 371int nilfs_btree_broken_node_block(struct buffer_head *bh)
372{ 372{
373 return nilfs_btree_node_broken((struct nilfs_btree_node *)bh->b_data, 373 int ret;
374
375 if (buffer_nilfs_checked(bh))
376 return 0;
377
378 ret = nilfs_btree_node_broken((struct nilfs_btree_node *)bh->b_data,
374 bh->b_size, bh->b_blocknr); 379 bh->b_size, bh->b_blocknr);
380 if (likely(!ret))
381 set_buffer_nilfs_checked(bh);
382 return ret;
375} 383}
376 384
377static struct nilfs_btree_node * 385static struct nilfs_btree_node *