Btrfs: transaction rework
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
committed by
David Woodhouse
parent
e20d96d64f
commit
79154b1b5b
@@ -1,27 +1,30 @@
|
||||
#ifndef __TRANSACTION__
|
||||
#define __TRANSACTION__
|
||||
|
||||
struct btrfs_transaction {
|
||||
u64 transid;
|
||||
unsigned long num_writers;
|
||||
int in_commit;
|
||||
int use_count;
|
||||
int commit_done;
|
||||
wait_queue_head_t writer_wait;
|
||||
wait_queue_head_t commit_wait;
|
||||
};
|
||||
|
||||
struct btrfs_trans_handle {
|
||||
u64 transid;
|
||||
unsigned long blocks_reserved;
|
||||
unsigned long blocks_used;
|
||||
struct btrfs_transaction *transaction;
|
||||
};
|
||||
|
||||
static inline struct btrfs_trans_handle *
|
||||
btrfs_start_transaction(struct btrfs_root *root, int num_blocks)
|
||||
{
|
||||
struct btrfs_trans_handle *h = kmalloc(sizeof(*h), GFP_NOFS);
|
||||
h->transid = root->root_key.offset;
|
||||
h->blocks_reserved = num_blocks;
|
||||
h->blocks_used = 0;
|
||||
return h;
|
||||
}
|
||||
|
||||
static inline void btrfs_free_transaction(struct btrfs_root *root,
|
||||
struct btrfs_trans_handle *handle)
|
||||
{
|
||||
memset(handle, 0, sizeof(*handle));
|
||||
kfree(handle);
|
||||
}
|
||||
|
||||
int btrfs_end_transaction(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root);
|
||||
struct btrfs_trans_handle *btrfs_start_transaction(struct btrfs_root *root,
|
||||
int num_blocks);
|
||||
int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root);
|
||||
int btrfs_commit_tree_roots(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user