btrfs-progs: Restrict e2fsprogs version for convert
[platform/upstream/btrfs-progs.git] / btrfs-corrupt-block.c
index 0287f0b..66d93e5 100644 (file)
@@ -21,6 +21,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <getopt.h>
+#include <limits.h>
 
 #include "kerncompat.h"
 #include "ctree.h"
@@ -44,7 +45,7 @@ static struct extent_buffer *debug_corrupt_block(struct btrfs_root *root,
        int num_copies;
        int mirror_num = 1;
 
-       eb = btrfs_find_create_tree_block(root, bytenr, blocksize);
+       eb = btrfs_find_create_tree_block(root->fs_info, bytenr, blocksize);
        if (!eb)
                return NULL;
 
@@ -161,7 +162,7 @@ static int corrupt_keys_in_block(struct btrfs_root *root, u64 bytenr)
 {
        struct extent_buffer *eb;
 
-       eb = read_tree_block(root, bytenr, root->leafsize, 0);
+       eb = read_tree_block(root, bytenr, root->nodesize, 0);
        if (!extent_buffer_uptodate(eb))
                return -EIO;;
 
@@ -288,7 +289,7 @@ static void btrfs_corrupt_extent_tree(struct btrfs_trans_handle *trans,
                struct extent_buffer *next;
 
                next = read_tree_block(root, btrfs_node_blockptr(eb, i),
-                                      root->leafsize,
+                                      root->nodesize,
                                       btrfs_node_ptr_generation(eb, i));
                if (!extent_buffer_uptodate(next))
                        continue;
@@ -475,7 +476,7 @@ static int corrupt_dir_item(struct btrfs_root *root, struct btrfs_key *key,
        struct btrfs_trans_handle *trans;
        struct btrfs_dir_item *di;
        struct btrfs_path *path;
-       char *name;
+       char name[PATH_MAX];
        struct btrfs_key location;
        struct btrfs_disk_key disk_key;
        unsigned long name_ptr;
@@ -514,17 +515,11 @@ static int corrupt_dir_item(struct btrfs_root *root, struct btrfs_key *key,
        switch (corrupt_field) {
        case BTRFS_DIR_ITEM_NAME:
                name_len = btrfs_dir_name_len(path->nodes[0], di);
-               name = malloc(name_len);
-               if (!name) {
-                       ret = -ENOMEM;
-                       goto out;
-               }
                name_ptr = (unsigned long)(di + 1);
                read_extent_buffer(path->nodes[0], name, name_ptr, name_len);
                name[0]++;
                write_extent_buffer(path->nodes[0], name, name_ptr, name_len);
                btrfs_mark_buffer_dirty(path->nodes[0]);
-               free(name);
                goto out;
        case BTRFS_DIR_ITEM_LOCATION_OBJECTID:
                btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location);
@@ -705,7 +700,7 @@ static int corrupt_metadata_block(struct btrfs_root *root, u64 block,
                return -EINVAL;
        }
 
-       eb = read_tree_block(root, block, root->leafsize, 0);
+       eb = read_tree_block(root, block, root->nodesize, 0);
        if (!extent_buffer_uptodate(eb)) {
                fprintf(stderr, "Couldn't read in tree block %s\n", field);
                return -EINVAL;
@@ -1017,7 +1012,7 @@ out:
        return ret;
 
 }
-int main(int ac, char **av)
+int main(int argc, char **argv)
 {
        struct cache_tree root_cache;
        struct btrfs_key key;
@@ -1074,7 +1069,7 @@ int main(int ac, char **av)
                        { NULL, 0, NULL, 0 }
                };
 
-               c = getopt_long(ac, av, "l:c:b:eEkuUi:f:x:m:K:IDdr:C:",
+               c = getopt_long(argc, argv, "l:c:b:eEkuUi:f:x:m:K:IDdr:C:",
                                long_options, NULL);
                if (c < 0)
                        break;
@@ -1146,11 +1141,10 @@ int main(int ac, char **av)
                                print_usage(c != GETOPT_VAL_HELP);
                }
        }
-       set_argv0(av);
-       ac = ac - optind;
-       if (check_argc_min(ac, 1))
+       set_argv0(argv);
+       if (check_argc_min(argc - optind, 1))
                print_usage(1);
-       dev = av[optind];
+       dev = argv[optind];
 
        radix_tree_init();
        cache_tree_init(&root_cache);