Now we can see there is redundant goto for SSD case. In these two places, we can just let the code walk through to the correct tag instead of explicitly jump to it. Let's remove them for better readability. Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> --- mm/swapfile.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index adf48d4b1b63..f903e5a165d5 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -756,9 +756,7 @@ static int scan_swap_map_slots(struct swap_info_struct *si, /* SSD algorithm */ if (si->cluster_info) { - if (scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) - goto checks; - else + if (!scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto scan; } else if (unlikely(!si->cluster_nr--)) { if (si->pages - si->inuse_pages < SWAPFILE_CLUSTER) { @@ -866,8 +864,6 @@ static int scan_swap_map_slots(struct swap_info_struct *si, if (si->cluster_info) { if (scan_swap_map_try_ssd_cluster(si, &offset, &scan_base)) goto checks; - else - goto done; } else if (si->cluster_nr && !si->swap_map[++offset]) { /* non-ssd case, still more slots in cluster? */ --si->cluster_nr; -- 2.23.0