Skip to content

Commit a3f7fde

Browse files
zhaoleiddkdave
authored andcommitted
btrfs: reada: Move is_need_to_readahead contition earlier
Move is_need_to_readahead contition earlier to avoid useless loop to get relative data for readahead. Signed-off-by: Zhao Lei <[email protected]> Signed-off-by: David Sterba <[email protected]>
1 parent 97d5f0e commit a3f7fde

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

fs/btrfs/reada.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,6 @@ static int reada_start_machine_dev(struct btrfs_fs_info *fs_info,
660660
u64 logical;
661661
int ret;
662662
int i;
663-
int need_kick = 0;
664663

665664
spin_lock(&fs_info->reada_lock);
666665
if (dev->reada_curr_zone == NULL) {
@@ -696,6 +695,15 @@ static int reada_start_machine_dev(struct btrfs_fs_info *fs_info,
696695

697696
spin_unlock(&fs_info->reada_lock);
698697

698+
spin_lock(&re->lock);
699+
if (re->scheduled_for || list_empty(&re->extctl)) {
700+
spin_unlock(&re->lock);
701+
reada_extent_put(fs_info, re);
702+
return 0;
703+
}
704+
re->scheduled_for = dev;
705+
spin_unlock(&re->lock);
706+
699707
/*
700708
* find mirror num
701709
*/
@@ -707,18 +715,8 @@ static int reada_start_machine_dev(struct btrfs_fs_info *fs_info,
707715
}
708716
logical = re->logical;
709717

710-
spin_lock(&re->lock);
711-
if (!re->scheduled_for && !list_empty(&re->extctl)) {
712-
re->scheduled_for = dev;
713-
need_kick = 1;
714-
}
715-
spin_unlock(&re->lock);
716-
717718
reada_extent_put(fs_info, re);
718719

719-
if (!need_kick)
720-
return 0;
721-
722720
atomic_inc(&dev->reada_in_flight);
723721
ret = reada_tree_block_flagged(fs_info->extent_root, logical,
724722
mirror_num, &eb);

0 commit comments

Comments
 (0)