From patchwork Wed Feb 5 09:27:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baoquan He X-Patchwork-Id: 13960706 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C98E8C02194 for ; Wed, 5 Feb 2025 09:28:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D979280016; Wed, 5 Feb 2025 04:28:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5884728000E; Wed, 5 Feb 2025 04:28:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D9EE280016; Wed, 5 Feb 2025 04:28:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1C5B628000E for ; Wed, 5 Feb 2025 04:28:31 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C4F73160842 for ; Wed, 5 Feb 2025 09:28:30 +0000 (UTC) X-FDA: 83085365580.13.E7CFD3D Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf01.hostedemail.com (Postfix) with ESMTP id 1550140006 for ; Wed, 5 Feb 2025 09:28:28 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KR4BhiDT; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf01.hostedemail.com: domain of bhe@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bhe@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738747709; a=rsa-sha256; cv=none; b=VjQKY6EGb4sc6rHV4EJ3GluDc8369ytIYcGSJTY1bw27UWyq6skEAjW83FaYhXObPwF7WO E9AAHwK9M4n6/GBrtEdG8eurm8vd5P6uXZ5V7PIutpEp/m/m9+Vx4HpoPDruz1+6ZE+0P6 fdgJTPMaLYRq7qFTe7sOhKj+6YJdkzg= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KR4BhiDT; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf01.hostedemail.com: domain of bhe@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bhe@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738747709; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=eJxZpNwhXiHzAqXXfk54vRZnvA5qQBJ34Wvs1FodgiE=; b=K5B+0hGfUU8ZRiG1dF9W8oHfz18bidc8b2CQsjvG94vo8d9rc1gnjH6gy2jWTMMcV3DYCC j2dqeeZyp3/d30zWZ/3bKmZmusRWZ5jukapBiwNBiROxcPwyePK6fwMp4R3iX1+TIt4m60 Q6+//4XXjCMr3T1VLJRWC8fIay1m+us= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1738747708; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eJxZpNwhXiHzAqXXfk54vRZnvA5qQBJ34Wvs1FodgiE=; b=KR4BhiDTOTV7MhVJCNS1wF53o8ALVhPhUWffvDrO8VHgeRO2OuO0YL1kzAmmZcwQjNGMsk wzPR7Q3pNPCiXbWPE+Yzxkrj+RofBiZKQvSWBlTTu6qYkQWtZG7xHSZGj84zEmqQaQEelH +Szbz3aTTtoS/CZ/WHh75pxyceVl4SY= Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-34-gOIRUj3mNiWKdkWAHtpU_w-1; Wed, 05 Feb 2025 04:28:26 -0500 X-MC-Unique: gOIRUj3mNiWKdkWAHtpU_w-1 X-Mimecast-MFC-AGG-ID: gOIRUj3mNiWKdkWAHtpU_w Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8B858195608B; Wed, 5 Feb 2025 09:28:25 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.72.112.190]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D381C300018D; Wed, 5 Feb 2025 09:28:21 +0000 (UTC) From: Baoquan He To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, ryncsn@gmail.com, chrisl@kernel.org, Baoquan He Subject: [PATCH 12/12] mm/swapfile.c: open code cluster_alloc_swap() Date: Wed, 5 Feb 2025 17:27:21 +0800 Message-ID: <20250205092721.9395-13-bhe@redhat.com> In-Reply-To: <20250205092721.9395-1-bhe@redhat.com> References: <20250205092721.9395-1-bhe@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 1550140006 X-Stat-Signature: j3hzs8tq6so1kgmokmmn9exugzazrywd X-HE-Tag: 1738747708-443321 X-HE-Meta: U2FsdGVkX1/NT8Ggbaj37wZ/xL+f000CpcsEdaCQaO144ddqRs0bvV7anX8uLse5DVOTuiw/UD8ljkgyGHilNTq6UzX1py/0VL/MzyjqPi7zk2pi7XdI1ol9DgTHwFOzCc1qA5RVUH6qPAhdnsc5MSJLV5EUwQyXjokxhOR2qiYyQka1FpgQcC++t36KyfSEGnYlPlFBpjORK3R7JzKu2QtQZxjulEZ3t/XPZ4VpNLcmMoa+iJgnMDE842K95B3xYKxiQv0V7Fy8pF27rkRGfbJD6VFwBXKQ0vK+XJai5UyCn3M8dzN/5uRHm27kL1PEhp9XpVWLG6Hpu9vlDBS9etFgDk76lqdiPWaHukYsK3S7BXo/pjMvcdaUCYQWX1XJVf/UsXSSIiauGaTBLL6zbkx3kWiYYgLIm+IBUbVyR8LWE5ZmVVQ0G5AJwTeAQ5vLgFyAItZbYbfUZXGCzPRk8MgpbeMUIWaAl4PWyopG91N8W9Z6qHVUyAiZtqbMVt2s6kJmb+PZcGOoB5anYNSNdPOw6UURqWOs6yapAHdG3mglgMpJc+D63Gm8Lz5/pfXRp1qNwGmuoqYO3JqN8LegO+QShPybeABZkqdPe2AWPeG+jTYAdN7jGKFFNHMmF989t6SqT/r7eryNfC1ZTvIclZA8EcwFTRQholBhx+czCdl95iEGT0AxHLGln/RaSuP3d5Pl4WjH7gPmrhtLboKKNbDa/x5h4/82kfWpktOsRrX4AjKW4En6xdV9kUPcm90H7cLT8H7jnyAucc3/3hlOAuK39+3N2woLhdpFP8TEz7yVxYcBMfORH731d8dvrrB7x2Bh1UgW/KbEWSwebbhPCNwNm8PToU1AjAduKL+RX1RMZ/5Ki0YiZFuPZmg7Gj+9CSC1ZV9uQ9DjZyTFeMweRfQQqlq5+1SZf669V1ymVARgSIr/S7gZ4NFgGSR18BEkDOa8++YsO18hHFjf6/V 81972uoK AanekwRjq51tIsu0kOrVmyZYNqsq6q0PP7qNZRUlh48fVXvNujMWYiUN3kqZkENHRkgv1XSO5uH9nm045JJK/WrSggs5LuN5XeQ020um9vsDBTX2A5Zvra6pf0uLSQjDRNVrnLZZLHCNxbxFhY0lRzlDkV360kviTxHZvdL6XapGmm5xr5/sDpEV12Gs0qFB1B2TMaf5Td4tAwhw2R0mdzgW03/O/4FXB3IabcgRqHWzTodnQL4Zs0DQhXM572GhZRq7VRBcA4Da0Qqgv2ZpNW+bluR4GqzY5fJ32s3L4YaNyd2vnngjrOSLNVBsskL6CxIuGKRJYhPZrtj05cg+CPqDSxReaj3BHFDmsAm8v+86sqRl1QLLa6ute+Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: It's only called in scan_swap_map_slots(). And also remove the stale code comment in scan_swap_map_slots() because it's not fit for the current cluster allocation mechanism. Signed-off-by: Baoquan He --- mm/swapfile.c | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index 12bb7556c7f1..7448a387621d 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1158,39 +1158,13 @@ static void swap_range_free(struct swap_info_struct *si, unsigned long offset, swap_usage_sub(si, nr_entries); } -static int cluster_alloc_swap(struct swap_info_struct *si, - unsigned char usage, int nr, - swp_entry_t slots[], int order) -{ - int n_ret = 0; - - while (n_ret < nr) { - unsigned long offset = cluster_alloc_swap_entry(si, order, usage); - - if (!offset) - break; - slots[n_ret++] = swp_entry(si->type, offset); - } - - return n_ret; -} - static int scan_swap_map_slots(struct swap_info_struct *si, unsigned char usage, int nr, swp_entry_t slots[], int order) { unsigned int nr_pages = 1 << order; + int n_ret = 0; - /* - * We try to cluster swap pages by allocating them sequentially - * in swap. Once we've allocated SWAPFILE_CLUSTER pages this - * way, however, we resort to first-free allocation, starting - * a new cluster. This prevents us from scattering swap pages - * all over the entire swap partition, so that we reduce - * overall disk seek times between swap pages. -- sct - * But we do now try to find an empty cluster. -Andrea - * And we let swap pages go all over an SSD partition. Hugh - */ if (order > 0) { /* * Should not even be attempting large allocations when huge @@ -1210,7 +1184,15 @@ static int scan_swap_map_slots(struct swap_info_struct *si, return 0; } - return cluster_alloc_swap(si, usage, nr, slots, order); + while (n_ret < nr) { + unsigned long offset = cluster_alloc_swap_entry(si, order, usage); + + if (!offset) + break; + slots[n_ret++] = swp_entry(si->type, offset); + } + + return n_ret; } static bool get_swap_device_info(struct swap_info_struct *si)