aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.h
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-04-09 16:28:12 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:04:01 -0400
commitce9adaa5a792c2099a83246265eb4055bc38b6b8 (patch)
tree3ac03bb73cd3aad0c0b194d387cbb5b136c92fa7 /fs/btrfs/ctree.h
parent728131d8e40c2a47c59ca91a806299c4708029f9 (diff)
Btrfs: Do metadata checksums for reads via a workqueue
Before, metadata checksumming was done by the callers of read_tree_block, which would set EXTENT_CSUM bits in the extent tree to show that a given range of pages was already checksummed and didn't need to be verified again. But, those bits could go away via try_to_releasepage, and the end result was bogus checksum failures on pages that never left the cache. The new code validates checksums when the page is read. It is a little tricky because metadata blocks can span pages and a single read may end up going via multiple bios. Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r--fs/btrfs/ctree.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 4b3b20459f6..e803c4daad2 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -485,6 +485,10 @@ struct btrfs_fs_info {
485 struct list_head trans_list; 485 struct list_head trans_list;
486 struct list_head hashers; 486 struct list_head hashers;
487 struct list_head dead_roots; 487 struct list_head dead_roots;
488 struct list_head end_io_work_list;
489 struct work_struct end_io_work;
490 spinlock_t end_io_work_lock;
491
488#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,18) 492#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,18)
489 struct work_struct trans_work; 493 struct work_struct trans_work;
490#else 494#else