]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/btrfs/reada.c
Merge tag 'drm-intel-next-2017-05-29' of git://anongit.freedesktop.org/git/drm-intel...
[karo-tx-linux.git] / fs / btrfs / reada.c
index 306e5108aac705d56e10c4a14ef18e842da4584b..a17e775a4a89fca1e48214c5abb02756dd1c69d6 100644 (file)
@@ -235,10 +235,10 @@ start_machine:
        return ret;
 }
 
-static struct reada_zone *reada_find_zone(struct btrfs_fs_info *fs_info,
-                                         struct btrfs_device *dev, u64 logical,
+static struct reada_zone *reada_find_zone(struct btrfs_device *dev, u64 logical,
                                          struct btrfs_bio *bbio)
 {
+       struct btrfs_fs_info *fs_info = dev->fs_info;
        int ret;
        struct reada_zone *zone;
        struct btrfs_block_group_cache *cache = NULL;
@@ -320,7 +320,6 @@ static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info,
        struct btrfs_bio *bbio = NULL;
        struct btrfs_device *dev;
        struct btrfs_device *prev_dev;
-       u32 blocksize;
        u64 length;
        int real_stripes;
        int nzones = 0;
@@ -341,7 +340,6 @@ static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info,
        if (!re)
                return NULL;
 
-       blocksize = fs_info->nodesize;
        re->logical = logical;
        re->top = *top;
        INIT_LIST_HEAD(&re->extctl);
@@ -351,10 +349,10 @@ static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info,
        /*
         * map block
         */
-       length = blocksize;
+       length = fs_info->nodesize;
        ret = btrfs_map_block(fs_info, BTRFS_MAP_GET_READ_MIRRORS, logical,
                        &length, &bbio, 0);
-       if (ret || !bbio || length < blocksize)
+       if (ret || !bbio || length < fs_info->nodesize)
                goto error;
 
        if (bbio->num_stripes > BTRFS_MAX_MIRRORS) {
@@ -374,7 +372,7 @@ static struct reada_extent *reada_find_extent(struct btrfs_fs_info *fs_info,
                 if (!dev->bdev)
                        continue;
 
-               zone = reada_find_zone(fs_info, dev, logical, bbio);
+               zone = reada_find_zone(dev, logical, bbio);
                if (!zone)
                        continue;
 
@@ -653,9 +651,9 @@ static int reada_pick_zone(struct btrfs_device *dev)
        return 1;
 }
 
-static int reada_start_machine_dev(struct btrfs_fs_info *fs_info,
-                                  struct btrfs_device *dev)
+static int reada_start_machine_dev(struct btrfs_device *dev)
 {
+       struct btrfs_fs_info *fs_info = dev->fs_info;
        struct reada_extent *re = NULL;
        int mirror_num = 0;
        struct extent_buffer *eb = NULL;
@@ -768,8 +766,7 @@ static void __reada_start_machine(struct btrfs_fs_info *fs_info)
                list_for_each_entry(device, &fs_devices->devices, dev_list) {
                        if (atomic_read(&device->reada_in_flight) <
                            MAX_IN_FLIGHT)
-                               enqueued += reada_start_machine_dev(fs_info,
-                                                                   device);
+                               enqueued += reada_start_machine_dev(device);
                }
                mutex_unlock(&fs_devices->device_list_mutex);
                total += enqueued;