perf cpumap: Add new map type for aggregation
[linux-2.6-microblaze.git] / fs / btrfs / backref.c
index 771a036..02d7d7b 100644 (file)
@@ -783,8 +783,8 @@ static int add_missing_keys(struct btrfs_fs_info *fs_info,
                BUG_ON(ref->key_for_search.type);
                BUG_ON(!ref->wanted_disk_byte);
 
-               eb = read_tree_block(fs_info, ref->wanted_disk_byte, 0,
-                                    ref->level - 1, NULL);
+               eb = read_tree_block(fs_info, ref->wanted_disk_byte,
+                                    ref->root_id, 0, ref->level - 1, NULL);
                if (IS_ERR(eb)) {
                        free_pref(ref);
                        return PTR_ERR(eb);
@@ -1331,7 +1331,7 @@ again:
                                struct extent_buffer *eb;
 
                                eb = read_tree_block(fs_info, ref->parent, 0,
-                                                    ref->level, NULL);
+                                                    0, ref->level, NULL);
                                if (IS_ERR(eb)) {
                                        ret = PTR_ERR(eb);
                                        goto out;
@@ -1341,14 +1341,12 @@ again:
                                        goto out;
                                }
 
-                               if (!path->skip_locking) {
+                               if (!path->skip_locking)
                                        btrfs_tree_read_lock(eb);
-                                       btrfs_set_lock_blocking_read(eb);
-                               }
                                ret = find_extent_in_eb(eb, bytenr,
                                                        *extent_item_pos, &eie, ignore_offset);
                                if (!path->skip_locking)
-                                       btrfs_tree_read_unlock_blocking(eb);
+                                       btrfs_tree_read_unlock(eb);
                                free_extent_buffer(eb);
                                if (ret < 0)
                                        goto out;
@@ -1671,13 +1669,11 @@ char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
        s64 bytes_left = ((s64)size) - 1;
        struct extent_buffer *eb = eb_in;
        struct btrfs_key found_key;
-       int leave_spinning = path->leave_spinning;
        struct btrfs_inode_ref *iref;
 
        if (bytes_left >= 0)
                dest[bytes_left] = '\0';
 
-       path->leave_spinning = 1;
        while (1) {
                bytes_left -= name_len;
                if (bytes_left >= 0)
@@ -1685,7 +1681,7 @@ char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
                                           name_off, name_len);
                if (eb != eb_in) {
                        if (!path->skip_locking)
-                               btrfs_tree_read_unlock_blocking(eb);
+                               btrfs_tree_read_unlock(eb);
                        free_extent_buffer(eb);
                }
                ret = btrfs_find_item(fs_root, path, parent, 0,
@@ -1705,8 +1701,6 @@ char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
                eb = path->nodes[0];
                /* make sure we can use eb after releasing the path */
                if (eb != eb_in) {
-                       if (!path->skip_locking)
-                               btrfs_set_lock_blocking_read(eb);
                        path->nodes[0] = NULL;
                        path->locks[0] = 0;
                }
@@ -1723,7 +1717,6 @@ char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path,
        }
 
        btrfs_release_path(path);
-       path->leave_spinning = leave_spinning;
 
        if (ret)
                return ERR_PTR(ret);