summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-04-15 11:32:17 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2008-04-15 11:32:17 -0400
commit7e7628ec4ebec9a5046025b4a139d55ac3a69d49 (patch)
treedb6296e27121f75cefc821077620d0b841d0f982
parent9462e711a70c3820f490221eb2e4aeef0c8c495b (diff)
Fix up the quick btree code test program
-rw-r--r--Makefile2
-rw-r--r--quick-test.c69
2 files changed, 39 insertions, 32 deletions
diff --git a/Makefile b/Makefile
index f74aafd8..63fddcf0 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ prefix ?= /usr/local
bindir = $(prefix)/bin
LIBS=-luuid
-progs = btrfsctl btrfsck mkfs.btrfs debug-tree
+progs = btrfsctl btrfsck mkfs.btrfs debug-tree quick-test
# make C=1 to enable sparse
ifdef C
diff --git a/quick-test.c b/quick-test.c
index 881a579f..16a3bf47 100644
--- a/quick-test.c
+++ b/quick-test.c
@@ -38,11 +38,10 @@ int main(int ac, char **av) {
int i;
int num;
int ret;
- int run_size = 100000;
+ int run_size = 300000;
int max_key = 100000000;
- int tree_size = 0;
+ int tree_size = 2;
struct btrfs_path path;
- struct btrfs_super_block super;
struct btrfs_root *root;
struct btrfs_trans_handle *trans;
@@ -51,10 +50,9 @@ int main(int ac, char **av) {
radix_tree_init();
- root = open_ctree(av[1], &super);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET);
trans = btrfs_start_transaction(root, 1);
srand(55);
- ins.flags = 0;
btrfs_set_key_type(&ins, BTRFS_STRING_ITEM_KEY);
for (i = 0; i < run_size; i++) {
num = next_key(i, max_key);
@@ -68,11 +66,14 @@ int main(int ac, char **av) {
if (!ret)
tree_size++;
if (i == run_size - 5) {
- btrfs_commit_transaction(trans, root, &super);
+ btrfs_commit_transaction(trans, root);
+ trans = btrfs_start_transaction(root, 1);
}
}
- close_ctree(root, &super);
- root = open_ctree(av[1], &super);
+ btrfs_commit_transaction(trans, root);
+ close_ctree(root);
+ exit(1);
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET);
printf("starting search\n");
srand(55);
for (i = 0; i < run_size; i++) {
@@ -81,7 +82,7 @@ int main(int ac, char **av) {
btrfs_init_path(&path);
if (i % 10000 == 0)
fprintf(stderr, "search %d:%d\n", num, i);
- ret = btrfs_search_slot(trans, root, &ins, &path, 0, 0);
+ ret = btrfs_search_slot(NULL, root, &ins, &path, 0, 0);
if (ret) {
btrfs_print_tree(root, root->node);
printf("unable to find %d\n", num);
@@ -89,16 +90,18 @@ int main(int ac, char **av) {
}
btrfs_release_path(root, &path);
}
- close_ctree(root, &super);
- root = open_ctree(av[1], &super);
+ close_ctree(root);
+
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET);
printf("node %p level %d total ptrs %d free spc %lu\n", root->node,
- btrfs_header_level(&root->node->node.header),
- btrfs_header_nritems(&root->node->node.header),
+ btrfs_header_level(root->node),
+ btrfs_header_nritems(root->node),
BTRFS_NODEPTRS_PER_BLOCK(root) -
- btrfs_header_nritems(&root->node->node.header));
+ btrfs_header_nritems(root->node));
printf("all searches good, deleting some items\n");
i = 0;
srand(55);
+ trans = btrfs_start_transaction(root, 1);
for (i = 0 ; i < run_size/4; i++) {
num = next_key(i, max_key);
ins.objectid = num;
@@ -114,8 +117,11 @@ int main(int ac, char **av) {
}
btrfs_release_path(root, &path);
}
- close_ctree(root, &super);
- root = open_ctree(av[1], &super);
+ btrfs_commit_transaction(trans, root);
+ close_ctree(root);
+
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET);
+ trans = btrfs_start_transaction(root, 1);
srand(128);
for (i = 0; i < run_size; i++) {
num = next_key(i, max_key);
@@ -127,8 +133,10 @@ int main(int ac, char **av) {
if (!ret)
tree_size++;
}
- close_ctree(root, &super);
- root = open_ctree(av[1], &super);
+ btrfs_commit_transaction(trans, root);
+ close_ctree(root);
+
+ root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET);
srand(128);
printf("starting search2\n");
for (i = 0; i < run_size; i++) {
@@ -137,7 +145,7 @@ int main(int ac, char **av) {
btrfs_init_path(&path);
if (i % 10000 == 0)
fprintf(stderr, "search %d:%d\n", num, i);
- ret = btrfs_search_slot(trans, root, &ins, &path, 0, 0);
+ ret = btrfs_search_slot(NULL, root, &ins, &path, 0, 0);
if (ret) {
btrfs_print_tree(root, root->node);
printf("unable to find %d\n", num);
@@ -146,9 +154,9 @@ int main(int ac, char **av) {
btrfs_release_path(root, &path);
}
printf("starting big long delete run\n");
- while(root->node &&
- btrfs_header_nritems(&root->node->node.header) > 0) {
- struct btrfs_leaf *leaf;
+ trans = btrfs_start_transaction(root, 1);
+ while(root->node && btrfs_header_nritems(root->node) > 0) {
+ struct extent_buffer *leaf;
int slot;
ins.objectid = (u64)-1;
btrfs_init_path(&path);
@@ -156,16 +164,17 @@ int main(int ac, char **av) {
if (ret == 0)
BUG();
- leaf = &path.nodes[0]->leaf;
+ leaf = path.nodes[0];
slot = path.slots[0];
- if (slot != btrfs_header_nritems(&leaf->header))
+ if (slot != btrfs_header_nritems(leaf))
BUG();
while(path.slots[0] > 0) {
path.slots[0] -= 1;
slot = path.slots[0];
- leaf = &path.nodes[0]->leaf;
+ leaf = path.nodes[0];
+
+ btrfs_item_key_to_cpu(leaf, &last, slot);
- btrfs_disk_key_to_cpu(&last, &leaf->items[slot].key);
if (tree_size % 10000 == 0)
printf("big del %d:%d\n", tree_size, i);
ret = btrfs_del_item(trans, root, &path);
@@ -183,12 +192,10 @@ int main(int ac, char **av) {
printf("map before commit\n");
btrfs_print_tree(root->extent_root, root->extent_root->node);
*/
- btrfs_commit_transaction(trans, root, &super);
+ 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);
- printf("map tree\n");
- btrfs_print_tree(root->fs_info->extent_root,
- root->fs_info->extent_root->node);
- close_ctree(root, &super);
+ btrfs_print_tree(root, root->node);
+ close_ctree(root);
return 0;
}