Messages in this thread | | | Date | Mon, 20 Apr 2020 21:37:26 +0000 | From | Wei Yang <> | Subject | Re: [PATCH 3/4] mm/swapfile.c: compare tmp and max after trying to iterate on swap_map |
| |
On Mon, Apr 20, 2020 at 09:03:43AM +0800, Huang, Ying wrote: >Wei Yang <richard.weiyang@gmail.com> 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@gmail.com> >> --- >> 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.
>Best Regards, >Huang, Ying > >> ci = lock_cluster(si, tmp); >> while (tmp < max) { >> if (!si->swap_map[tmp])
-- Wei Yang Help you, Help me
| |