diff mbox series

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

Message ID 20200421213824.8099-3-richard.weiyang@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/3] mm/swapfile.c: found_free could be represented by (tmp < max) | expand

Commit Message

Wei Yang April 21, 2020, 9:38 p.m. UTC
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@gmail.com>

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

Patch

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;