#include "transaction.h"
/* for testing only */
-int next_key(int i, int max_key) {
+static int next_key(int i, int max_key) {
return rand() % max_key;
// return i;
}
struct btrfs_root *root;
struct btrfs_trans_handle *trans;
- buf = malloc(512);
- memset(buf, 0, 512);
+ buf = calloc(1, 512);
radix_tree_init();
- root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, OPEN_CTREE_WRITES);
+ if (!root) {
+ fprintf(stderr, "Open ctree failed\n");
+ exit(1);
+ }
trans = btrfs_start_transaction(root, 1);
+ BUG_ON(IS_ERR(trans));
srand(55);
- btrfs_set_key_type(&ins, BTRFS_STRING_ITEM_KEY);
+ ins.type = BTRFS_STRING_ITEM_KEY;
for (i = 0; i < run_size; i++) {
num = next_key(i, max_key);
// num = i;
if (i == run_size - 5) {
btrfs_commit_transaction(trans, root);
trans = btrfs_start_transaction(root, 1);
+ BUG_ON(IS_ERR(trans));
}
}
btrfs_commit_transaction(trans, root);
close_ctree(root);
exit(1);
- root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, OPEN_CTREE_WRITES);
+ if (!root) {
+ fprintf(stderr, "Open ctree failed\n");
+ exit(1);
+ }
printf("starting search\n");
srand(55);
for (i = 0; i < run_size; i++) {
fprintf(stderr, "search %d:%d\n", num, i);
ret = btrfs_search_slot(NULL, root, &ins, &path, 0, 0);
if (ret) {
- btrfs_print_tree(root, root->node);
+ btrfs_print_tree(root, root->node, 1);
printf("unable to find %d\n", num);
exit(1);
}
- btrfs_release_path(root, &path);
+ btrfs_release_path(&path);
}
close_ctree(root);
- root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, OPEN_CTREE_WRITES);
+ if (!root) {
+ fprintf(stderr, "Open ctree failed\n");
+ exit(1);
+ }
printf("node %p level %d total ptrs %d free spc %lu\n", root->node,
btrfs_header_level(root->node),
btrfs_header_nritems(root->node),
- (unsigned long)BTRFS_NODEPTRS_PER_BLOCK(root) -
+ (unsigned long)BTRFS_NODEPTRS_PER_BLOCK(root->fs_info) -
btrfs_header_nritems(root->node));
printf("all searches good, deleting some items\n");
i = 0;
srand(55);
trans = btrfs_start_transaction(root, 1);
+ BUG_ON(IS_ERR(trans));
for (i = 0 ; i < run_size/4; i++) {
num = next_key(i, max_key);
ins.objectid = num;
BUG();
tree_size--;
}
- btrfs_release_path(root, &path);
+ btrfs_release_path(&path);
}
btrfs_commit_transaction(trans, root);
close_ctree(root);
- root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, OPEN_CTREE_WRITES);
+ if (!root) {
+ fprintf(stderr, "Open ctree failed\n");
+ exit(1);
+ }
trans = btrfs_start_transaction(root, 1);
+ BUG_ON(IS_ERR(trans));
srand(128);
for (i = 0; i < run_size; i++) {
num = next_key(i, max_key);
btrfs_commit_transaction(trans, root);
close_ctree(root);
- root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, OPEN_CTREE_WRITES);
+ if (!root) {
+ fprintf(stderr, "Open ctree failed\n");
+ exit(1);
+ }
srand(128);
printf("starting search2\n");
for (i = 0; i < run_size; i++) {
fprintf(stderr, "search %d:%d\n", num, i);
ret = btrfs_search_slot(NULL, root, &ins, &path, 0, 0);
if (ret) {
- btrfs_print_tree(root, root->node);
+ btrfs_print_tree(root, root->node, 1);
printf("unable to find %d\n", num);
exit(1);
}
- btrfs_release_path(root, &path);
+ btrfs_release_path(&path);
}
printf("starting big long delete run\n");
trans = btrfs_start_transaction(root, 1);
+ BUG_ON(IS_ERR(trans));
while(root->node && btrfs_header_nritems(root->node) > 0) {
struct extent_buffer *leaf;
int slot;
}
tree_size--;
}
- btrfs_release_path(root, &path);
+ btrfs_release_path(&path);
}
/*
printf("previous tree:\n");
btrfs_commit_transaction(trans, root);
printf("tree size is now %d\n", tree_size);
printf("root %p commit root %p\n", root->node, root->commit_root);
- btrfs_print_tree(root, root->node);
+ btrfs_print_tree(root, root->node, 1);
close_ctree(root);
return 0;
}