blob: 099f7eea0ec791cc3967765cda9857e1fd9050f5 [file] [log] [blame]
Chris Masoneb60cea2007-02-02 09:18:22 -05001#ifndef __DISKIO__
2#define __DISKIO__
3
Chris Masone20d96d2007-03-22 12:13:20 -04004#include <linux/buffer_head.h>
Chris Mason3768f362007-03-13 16:47:54 -04005
Chris Mason123abc82007-03-14 14:14:43 -04006#define BTRFS_SUPER_INFO_OFFSET (16 * 1024)
Chris Masoneb60cea2007-02-02 09:18:22 -05007
Chris Masone20d96d2007-03-22 12:13:20 -04008static inline struct btrfs_node *btrfs_buffer_node(struct buffer_head *bh)
9{
10 return (struct btrfs_node *)bh->b_data;
11}
12
13static inline struct btrfs_leaf *btrfs_buffer_leaf(struct buffer_head *bh)
14{
15 return (struct btrfs_leaf *)bh->b_data;
16}
17
18static inline struct btrfs_header *btrfs_buffer_header(struct buffer_head *bh)
19{
20 return &((struct btrfs_node *)bh->b_data)->header;
21}
22
23struct buffer_head *read_tree_block(struct btrfs_root *root, u64 blocknr);
24struct buffer_head *find_tree_block(struct btrfs_root *root, u64 blocknr);
25int write_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root,
26 struct buffer_head *buf);
27int dirty_tree_block(struct btrfs_trans_handle *trans, struct btrfs_root *root,
28 struct buffer_head *buf);
29int clean_tree_block(struct btrfs_trans_handle *trans,
30 struct btrfs_root *root, struct buffer_head *buf);
Chris Mason79154b12007-03-22 15:59:16 -040031int btrfs_commit_transaction(struct btrfs_trans_handle *trans,
32 struct btrfs_root *root);
Chris Masone20d96d2007-03-22 12:13:20 -040033struct btrfs_root *open_ctree(struct super_block *sb,
34 struct buffer_head *sb_buffer,
35 struct btrfs_super_block *disk_super);
36int close_ctree(struct btrfs_root *root);
37void btrfs_block_release(struct btrfs_root *root, struct buffer_head *buf);
Chris Mason79154b12007-03-22 15:59:16 -040038int write_ctree_super(struct btrfs_trans_handle *trans,
39 struct btrfs_root *root);
Chris Masone20d96d2007-03-22 12:13:20 -040040int mkfs(int fd, u64 num_blocks, u32 blocksize);
Chris Masoneb60cea2007-02-02 09:18:22 -050041#endif