Re: [PATCH 3/4] mm/swapfile.c: compare tmp and max after trying to iterate on swap_map

From: Huang\, Ying
Date: Sun Apr 19 2020 - 21:05:16 EST


Wei Yang <richard.weiyang@xxxxxxxxx> writes:

> There are two duplicate code to handle the case when there is no
> available swap entry. Just let the code go through and do the check at
> second place.
>
> No functional change is expected.
>
> Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx>
> ---
> mm/swapfile.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index 3aae700f9931..07b0bc095411 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -629,10 +629,6 @@ static bool scan_swap_map_try_ssd_cluster(struct swap_info_struct *si,
> tmp = cluster->next;
> max = min_t(unsigned long, si->max,
> (cluster_next(&cluster->index) + 1) * SWAPFILE_CLUSTER);
> - if (tmp >= max) {
> - cluster_set_null(&cluster->index);
> - goto new_cluster;
> - }

The code is to avoid to acquire the cluster lock unnecessarily. So I think
we should keep this.

Best Regards,
Huang, Ying

> ci = lock_cluster(si, tmp);
> while (tmp < max) {
> if (!si->swap_map[tmp])