]> Pileus Git - ~andy/linux/blob - fs/btrfs/transaction.h
Btrfs: add compat ioctl
[~andy/linux] / 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         unsigned long start_time;
15         wait_queue_head_t writer_wait;
16         wait_queue_head_t commit_wait;
17 };
18
19 struct btrfs_trans_handle {
20         int magic;
21         u64 transid;
22         unsigned long blocks_reserved;
23         unsigned long blocks_used;
24         struct btrfs_transaction *transaction;
25         struct btrfs_block_group_cache *block_group;
26         int magic2;
27 };
28
29
30 static inline void btrfs_set_trans_block_group(struct btrfs_trans_handle *trans,
31                                                struct inode *inode)
32 {
33         trans->block_group = BTRFS_I(inode)->block_group;
34 }
35
36 static inline void btrfs_update_inode_block_group(struct
37                                                   btrfs_trans_handle *trans,
38                                                   struct inode *inode)
39 {
40         BTRFS_I(inode)->block_group = trans->block_group;
41 }
42
43 int btrfs_end_transaction(struct btrfs_trans_handle *trans,
44                           struct btrfs_root *root);
45 struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root,
46                                                    int num_blocks);
47 int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
48                                      struct btrfs_root *root);
49 int btrfs_commit_tree_roots(struct btrfs_trans_handle *trans,
50                             struct btrfs_root *root);
51
52 void btrfs_transaction_cleaner(struct work_struct *work);
53 void btrfs_transaction_flush_work(struct btrfs_root *root);
54 void btrfs_transaction_queue_work(struct btrfs_root *root, int delay);
55 void btrfs_init_transaction_sys(void);
56 void btrfs_exit_transaction_sys(void);
57
58 #endif