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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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])




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux