Btrfs: transaction rework

Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Chris Mason
2007-03-22 15:59:16 -04:00
committed by David Woodhouse
parent e20d96d64f
commit 79154b1b5b
7 changed files with 235 additions and 146 deletions

View File

@@ -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