Wei Yang <richard.weiyang@xxxxxxxxx> writes: > On Mon, Apr 20, 2020 at 09:03:43AM +0800, Huang, Ying wrote: >>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. >> > > If you really want to avoid the lock, my suggestion is to add: > > if (tmp < max) { > ci = lock_cluster(si, tmp); > while (tmp < max) { > ... > } > unlock_cluster(ci); > } > > Instead of do the similar thing twice. This is a coding style problem. The original code is common to avoid too many nested code block. But in this case, I think both works. Best Regards, Huang, Ying >>Best Regards, >>Huang, Ying >> >>> ci = lock_cluster(si, tmp); >>> while (tmp < max) { >>> if (!si->swap_map[tmp])