Btrfs: allocator improvements, inode block groups
[safe/jmp/linux-2.6] / fs / btrfs / transaction.h
1 #ifndef __TRANSACTION__
2 #define __TRANSACTION__
3 #include "btrfs_inode.h"
4
5 struct btrfs_transaction {
6         u64 transid;
7         unsigned long num_writers;
8         int in_commit;
9         int use_count;
10         int commit_done;
11         int magic;
12         struct list_head list;
13         struct radix_tree_root dirty_pages;
14         wait_queue_head_t writer_wait;
15         wait_queue_head_t commit_wait;
16 };
17
18 struct btrfs_trans_handle {
19         int magic;
20         u64 transid;
21         unsigned long blocks_reserved;
22         unsigned long blocks_used;
23         struct btrfs_transaction *transaction;
24         struct btrfs_block_group_cache *block_group;
25         int magic2;
26 };
27
28
29 static inline void btrfs_set_trans_block_group(struct btrfs_trans_handle *trans,
30                                                struct inode *inode)
31 {
32         trans->block_group = BTRFS_I(inode)->block_group;
33 }
34
35 static inline void btrfs_update_inode_block_group(struct
36                                                   btrfs_trans_handle *trans,
37                                                   struct inode *inode)
38 {
39         BTRFS_I(inode)->block_group = trans->block_group;
40 }
41
42 int btrfs_end_transaction(struct btrfs_trans_handle *trans,
43                           struct btrfs_root *root);
44 struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root,
45                                                    int num_blocks);
46 int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
47                                      struct btrfs_root *root);
48 int btrfs_commit_tree_roots(struct btrfs_trans_handle *trans,
49                             struct btrfs_root *root);
50 #endif