blob: afe42d167cee09b85fff1c98b04ad7bb159a6873 [file] [log] [blame]
Chris Masone089f052007-03-16 16:20:31 -04001#ifndef __TRANSACTION__
2#define __TRANSACTION__
3
Chris Mason79154b12007-03-22 15:59:16 -04004struct btrfs_transaction {
5 u64 transid;
6 unsigned long num_writers;
7 int in_commit;
8 int use_count;
9 int commit_done;
Chris Mason2c90e5d2007-04-02 10:50:19 -040010 int magic;
Chris Mason8fd17792007-04-19 21:01:03 -040011 struct list_head list;
Chris Mason7c4452b2007-04-28 09:29:35 -040012 struct radix_tree_root dirty_pages;
Chris Mason79154b12007-03-22 15:59:16 -040013 wait_queue_head_t writer_wait;
14 wait_queue_head_t commit_wait;
15};
16
Chris Masone089f052007-03-16 16:20:31 -040017struct btrfs_trans_handle {
Chris Mason2c90e5d2007-04-02 10:50:19 -040018 int magic;
Chris Masone089f052007-03-16 16:20:31 -040019 u64 transid;
20 unsigned long blocks_reserved;
21 unsigned long blocks_used;
Chris Mason79154b12007-03-22 15:59:16 -040022 struct btrfs_transaction *transaction;
Chris Mason2c90e5d2007-04-02 10:50:19 -040023 int magic2;
Chris Masone089f052007-03-16 16:20:31 -040024};
25
Chris Masone089f052007-03-16 16:20:31 -040026
Chris Mason79154b12007-03-22 15:59:16 -040027int btrfs_end_transaction(struct btrfs_trans_handle *trans,
28 struct btrfs_root *root);
29struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root,
30 int num_blocks);
31int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
32 struct btrfs_root *root);
33int btrfs_commit_tree_roots(struct btrfs_trans_handle *trans,
34 struct btrfs_root *root);
Chris Masone089f052007-03-16 16:20:31 -040035#endif