aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.h
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-10-15 16:14:19 -0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 11:03:56 -0400
commit5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (patch)
tree280561e4b68d573590557dd27df656869eed8023 /fs/btrfs/disk-io.h
parent50b78c24d594e6985f36a9a8d8e2fb74e1664e90 (diff)
Btrfs: Create extent_buffer interface for large blocksizes
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/disk-io.h')
-rw-r--r--fs/btrfs/disk-io.h55
1 files changed, 11 insertions, 44 deletions
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h
index fc6b520c6e0b..70d9413c599f 100644
--- a/fs/btrfs/disk-io.h
+++ b/fs/btrfs/disk-io.h
@@ -19,68 +19,35 @@
19#ifndef __DISKIO__ 19#ifndef __DISKIO__
20#define __DISKIO__ 20#define __DISKIO__
21 21
22#include <linux/buffer_head.h>
23
24#define BTRFS_SUPER_INFO_OFFSET (16 * 1024) 22#define BTRFS_SUPER_INFO_OFFSET (16 * 1024)
25 23
26enum btrfs_bh_state_bits { 24struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 blocknr);
27 BH_Checked = BH_PrivateStart,
28 BH_Defrag,
29 BH_DefragDone,
30};
31BUFFER_FNS(Checked, checked);
32BUFFER_FNS(Defrag, defrag);
33BUFFER_FNS(DefragDone, defrag_done);
34
35static inline struct btrfs_node *btrfs_buffer_node(struct buffer_head *bh)
36{
37 return (struct btrfs_node *)bh->b_data;
38}
39
40static inline struct btrfs_leaf *btrfs_buffer_leaf(struct buffer_head *bh)
41{
42 return (struct btrfs_leaf *)bh->b_data;
43}
44
45static inline struct btrfs_header *btrfs_buffer_header(struct buffer_head *bh)
46{
47 return &((struct btrfs_node *)bh->b_data)->header;
48}
49
50struct buffer_head *read_tree_block(struct btrfs_root *root, u64 blocknr);
51int readahead_tree_block(struct btrfs_root *root, u64 blocknr); 25int readahead_tree_block(struct btrfs_root *root, u64 blocknr);
52struct buffer_head *btrfs_find_create_tree_block(struct btrfs_root *root, 26struct extent_buffer *btrfs_find_create_tree_block(struct btrfs_root *root,
53 u64 blocknr); 27 u64 blocknr);
54int write_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root,
55 struct buffer_head *buf);
56int dirty_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root,
57 struct buffer_head *buf);
58int clean_tree_block(struct btrfs_trans_handle *trans, 28int clean_tree_block(struct btrfs_trans_handle *trans,
59 struct btrfs_root *root, struct buffer_head *buf); 29 struct btrfs_root *root, struct extent_buffer *buf);
60int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
61 struct btrfs_root *root);
62struct btrfs_root *open_ctree(struct super_block *sb); 30struct btrfs_root *open_ctree(struct super_block *sb);
63int close_ctree(struct btrfs_root *root); 31int close_ctree(struct btrfs_root *root);
64void btrfs_block_release(struct btrfs_root *root, struct buffer_head *buf);
65int write_ctree_super(struct btrfs_trans_handle *trans, 32int write_ctree_super(struct btrfs_trans_handle *trans,
66 struct btrfs_root *root); 33 struct btrfs_root *root);
67struct buffer_head *btrfs_find_tree_block(struct btrfs_root *root, u64 blocknr); 34struct extent_buffer *btrfs_find_tree_block(struct btrfs_root *root,
68int btrfs_csum_data(struct btrfs_root * root, char *data, size_t len, 35 u64 blocknr);
69 char *result);
70struct btrfs_root *btrfs_read_fs_root(struct btrfs_fs_info *fs_info, 36struct btrfs_root *btrfs_read_fs_root(struct btrfs_fs_info *fs_info,
71 struct btrfs_key *location, 37 struct btrfs_key *location,
72 const char *name, int namelen); 38 const char *name, int namelen);
73struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_fs_info *fs_info, 39struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_fs_info *fs_info,
74 struct btrfs_key *location); 40 struct btrfs_key *location);
75u64 bh_blocknr(struct buffer_head *bh);
76int btrfs_insert_dev_radix(struct btrfs_root *root, 41int btrfs_insert_dev_radix(struct btrfs_root *root,
77 struct block_device *bdev, 42 struct block_device *bdev,
78 u64 device_id, 43 u64 device_id,
79 u64 block_start, 44 u64 block_start,
80 u64 num_blocks); 45 u64 num_blocks);
81int btrfs_map_bh_to_logical(struct btrfs_root *root, struct buffer_head *bh,
82 u64 logical);
83void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr); 46void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr);
84int btrfs_free_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root); 47int btrfs_free_fs_root(struct btrfs_fs_info *fs_info, struct btrfs_root *root);
85void btrfs_mark_buffer_dirty(struct buffer_head *bh); 48void btrfs_mark_buffer_dirty(struct extent_buffer *buf);
49int btrfs_buffer_uptodate(struct extent_buffer *buf);
50int btrfs_set_buffer_uptodate(struct extent_buffer *buf);
51int wait_on_tree_block_writeback(struct btrfs_root *root,
52 struct extent_buffer *buf);
86#endif 53#endif