[Patch v2 3/3] mm/swapfile.c: omit a duplicate code by compare tmp and max first

From: Wei Yang
Date: Tue Apr 21 2020 - 17:39:19 EST


There are two duplicate code to handle the case when there is no
available swap entry. To avoid this, we can compare tmp and max first
and let the second guard do its job.

No functional change is expected.

Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx>

---
v2: Huang Ying suggest to do this check to avoid lock contention
---
mm/swapfile.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/mm/swapfile.c b/mm/swapfile.c
index bc435c2eb916..f3eee6d8cddf 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -629,17 +629,15 @@ 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;
- }
- ci = lock_cluster(si, tmp);
- while (tmp < max) {
- if (!si->swap_map[tmp])
- break;
- tmp++;
+ if (tmp < max) {
+ ci = lock_cluster(si, tmp);
+ while (tmp < max) {
+ if (!si->swap_map[tmp])
+ break;
+ tmp++;
+ }
+ unlock_cluster(ci);
}
- unlock_cluster(ci);
if (tmp >= max) {
cluster_set_null(&cluster->index);
goto new_cluster;
--
2.23.0