diff options
author | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2010-07-17 21:42:25 -0400 |
---|---|---|
committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2010-07-22 21:02:15 -0400 |
commit | 4e13e66bee2d792c1aae21797f16c181024834eb (patch) | |
tree | 1fa51dade28bc025d9bda0e09dec1f202281a498 /fs/nilfs2/page.c | |
parent | 464ece88630d0fb715ca942eabb1da825046a534 (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/page.c')
-rw-r--r-- | fs/nilfs2/page.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/nilfs2/page.c b/fs/nilfs2/page.c index 8de3e1e48130..aab11db2cb08 100644 --- a/fs/nilfs2/page.c +++ b/fs/nilfs2/page.c | |||
@@ -37,7 +37,8 @@ | |||
37 | 37 | ||
38 | #define NILFS_BUFFER_INHERENT_BITS \ | 38 | #define NILFS_BUFFER_INHERENT_BITS \ |
39 | ((1UL << BH_Uptodate) | (1UL << BH_Mapped) | (1UL << BH_NILFS_Node) | \ | 39 | ((1UL << BH_Uptodate) | (1UL << BH_Mapped) | (1UL << BH_NILFS_Node) | \ |
40 | (1UL << BH_NILFS_Volatile) | (1UL << BH_NILFS_Allocated)) | 40 | (1UL << BH_NILFS_Volatile) | (1UL << BH_NILFS_Allocated) | \ |
41 | (1UL << BH_NILFS_Checked)) | ||
41 | 42 | ||
42 | static struct buffer_head * | 43 | static struct buffer_head * |
43 | __nilfs_get_page_block(struct page *page, unsigned long block, pgoff_t index, | 44 | __nilfs_get_page_block(struct page *page, unsigned long block, pgoff_t index, |
@@ -129,6 +130,7 @@ void nilfs_forget_buffer(struct buffer_head *bh) | |||
129 | 130 | ||
130 | lock_buffer(bh); | 131 | lock_buffer(bh); |
131 | clear_buffer_nilfs_volatile(bh); | 132 | clear_buffer_nilfs_volatile(bh); |
133 | clear_buffer_nilfs_checked(bh); | ||
132 | clear_buffer_dirty(bh); | 134 | clear_buffer_dirty(bh); |
133 | if (nilfs_page_buffers_clean(page)) | 135 | if (nilfs_page_buffers_clean(page)) |
134 | __nilfs_clear_page_dirty(page); | 136 | __nilfs_clear_page_dirty(page); |
@@ -480,6 +482,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping) | |||
480 | lock_buffer(bh); | 482 | lock_buffer(bh); |
481 | clear_buffer_dirty(bh); | 483 | clear_buffer_dirty(bh); |
482 | clear_buffer_nilfs_volatile(bh); | 484 | clear_buffer_nilfs_volatile(bh); |
485 | clear_buffer_nilfs_checked(bh); | ||
483 | clear_buffer_uptodate(bh); | 486 | clear_buffer_uptodate(bh); |
484 | clear_buffer_mapped(bh); | 487 | clear_buffer_mapped(bh); |
485 | unlock_buffer(bh); | 488 | unlock_buffer(bh); |