btrfs: Make reada_tree_block_flagged private
[linux-2.6-microblaze.git] / fs / btrfs / reada.c
index 0b034c4..ee6f605 100644 (file)
@@ -639,6 +639,35 @@ static int reada_pick_zone(struct btrfs_device *dev)
        return 1;
 }
 
+static int reada_tree_block_flagged(struct btrfs_fs_info *fs_info, u64 bytenr,
+                                   int mirror_num, struct extent_buffer **eb)
+{
+       struct extent_buffer *buf = NULL;
+       int ret;
+
+       buf = btrfs_find_create_tree_block(fs_info, bytenr);
+       if (IS_ERR(buf))
+               return 0;
+
+       set_bit(EXTENT_BUFFER_READAHEAD, &buf->bflags);
+
+       ret = read_extent_buffer_pages(buf, WAIT_PAGE_LOCK, mirror_num);
+       if (ret) {
+               free_extent_buffer_stale(buf);
+               return ret;
+       }
+
+       if (test_bit(EXTENT_BUFFER_CORRUPT, &buf->bflags)) {
+               free_extent_buffer_stale(buf);
+               return -EIO;
+       } else if (extent_buffer_uptodate(buf)) {
+               *eb = buf;
+       } else {
+               free_extent_buffer(buf);
+       }
+       return 0;
+}
+
 static int reada_start_machine_dev(struct btrfs_device *dev)
 {
        struct btrfs_fs_info *fs_info = dev->fs_info;