diff options
Diffstat (limited to 'fs/btrfs/transaction.h')
| -rw-r--r-- | fs/btrfs/transaction.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h index e8b8416c688b..80961947a6b2 100644 --- a/fs/btrfs/transaction.h +++ b/fs/btrfs/transaction.h | |||
| @@ -47,6 +47,14 @@ struct btrfs_transaction { | |||
| 47 | int aborted; | 47 | int aborted; |
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| 50 | enum btrfs_trans_type { | ||
| 51 | TRANS_START, | ||
| 52 | TRANS_JOIN, | ||
| 53 | TRANS_USERSPACE, | ||
| 54 | TRANS_JOIN_NOLOCK, | ||
| 55 | TRANS_ATTACH, | ||
| 56 | }; | ||
| 57 | |||
| 50 | struct btrfs_trans_handle { | 58 | struct btrfs_trans_handle { |
| 51 | u64 transid; | 59 | u64 transid; |
| 52 | u64 bytes_reserved; | 60 | u64 bytes_reserved; |
| @@ -58,8 +66,9 @@ struct btrfs_trans_handle { | |||
| 58 | struct btrfs_transaction *transaction; | 66 | struct btrfs_transaction *transaction; |
| 59 | struct btrfs_block_rsv *block_rsv; | 67 | struct btrfs_block_rsv *block_rsv; |
| 60 | struct btrfs_block_rsv *orig_rsv; | 68 | struct btrfs_block_rsv *orig_rsv; |
| 61 | int aborted; | 69 | short aborted; |
| 62 | int adding_csums; | 70 | short adding_csums; |
| 71 | enum btrfs_trans_type type; | ||
| 63 | /* | 72 | /* |
| 64 | * this root is only needed to validate that the root passed to | 73 | * this root is only needed to validate that the root passed to |
| 65 | * start_transaction is the same as the one passed to end_transaction. | 74 | * start_transaction is the same as the one passed to end_transaction. |
| @@ -68,6 +77,7 @@ struct btrfs_trans_handle { | |||
| 68 | struct btrfs_root *root; | 77 | struct btrfs_root *root; |
| 69 | struct seq_list delayed_ref_elem; | 78 | struct seq_list delayed_ref_elem; |
| 70 | struct list_head qgroup_ref_list; | 79 | struct list_head qgroup_ref_list; |
| 80 | struct list_head new_bgs; | ||
| 71 | }; | 81 | }; |
| 72 | 82 | ||
| 73 | struct btrfs_pending_snapshot { | 83 | struct btrfs_pending_snapshot { |
| @@ -88,16 +98,18 @@ static inline void btrfs_set_inode_last_trans(struct btrfs_trans_handle *trans, | |||
| 88 | { | 98 | { |
| 89 | BTRFS_I(inode)->last_trans = trans->transaction->transid; | 99 | BTRFS_I(inode)->last_trans = trans->transaction->transid; |
| 90 | BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; | 100 | BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; |
| 101 | BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; | ||
| 91 | } | 102 | } |
| 92 | 103 | ||
| 93 | int btrfs_end_transaction(struct btrfs_trans_handle *trans, | 104 | int btrfs_end_transaction(struct btrfs_trans_handle *trans, |
| 94 | struct btrfs_root *root); | 105 | struct btrfs_root *root); |
| 95 | int btrfs_end_transaction_nolock(struct btrfs_trans_handle *trans, | ||
| 96 | struct btrfs_root *root); | ||
| 97 | struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root, | 106 | struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root, |
| 98 | int num_items); | 107 | int num_items); |
| 108 | struct btrfs_trans_handle *btrfs_start_transaction_noflush( | ||
| 109 | struct btrfs_root *root, int num_items); | ||
| 99 | struct btrfs_trans_handle *btrfs_join_transaction(struct btrfs_root *root); | 110 | struct btrfs_trans_handle *btrfs_join_transaction(struct btrfs_root *root); |
| 100 | struct btrfs_trans_handle *btrfs_join_transaction_nolock(struct btrfs_root *root); | 111 | struct btrfs_trans_handle *btrfs_join_transaction_nolock(struct btrfs_root *root); |
| 112 | struct btrfs_trans_handle *btrfs_attach_transaction(struct btrfs_root *root); | ||
| 101 | struct btrfs_trans_handle *btrfs_start_ioctl_transaction(struct btrfs_root *root); | 113 | struct btrfs_trans_handle *btrfs_start_ioctl_transaction(struct btrfs_root *root); |
| 102 | int btrfs_wait_for_commit(struct btrfs_root *root, u64 transid); | 114 | int btrfs_wait_for_commit(struct btrfs_root *root, u64 transid); |
| 103 | int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans, | 115 | int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans, |
