From mboxrd@z Thu Jan 1 00:00:00 1970 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 7610DC433FE for ; Fri, 24 Dec 2021 06:23:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A8176B007D; Fri, 24 Dec 2021 01:23:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ED5406B007E; Fri, 24 Dec 2021 01:23:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C8AC56B0080; Fri, 24 Dec 2021 01:23:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0201.hostedemail.com [216.40.44.201]) by kanga.kvack.org (Postfix) with ESMTP id B9B946B007D for ; Fri, 24 Dec 2021 01:23:12 -0500 (EST) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 83514180E4EFC for ; Fri, 24 Dec 2021 06:23:12 +0000 (UTC) X-FDA: 78951695424.06.12A504D Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf25.hostedemail.com (Postfix) with ESMTP id D1F68A001B for ; Fri, 24 Dec 2021 06:23:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=M+rMLN9/ESUQyF+dU/QyIxNWoktxuGpNXMdE3S1bzr8=; b=u2aCIEsShRRBipFbon/84kdy6b o51ou3OG2XQNs8ws15p2AbuWNOvSA7WuYlC4JR5lAeRwIQU8wTT2IbZ6LY99Mi2t+Jd1qK3IMdCLL CbjDLjgEiDhPPg3i/TgQEtut3jC6skioz6itpl7Gjr3zr3eHqa8Y9tAnEYCMiaUatlBunf7/Y/lL1 0vtegYjYk2cI0OoWbvSgPQc6R/qyIFvdth2827PUUJcAr6LZmiR5gGdLlzP3S5C0fy/GysXUNI8Uc j7ezAJ1AfuTlAEQD5ZPAEXitfwJGeey9kHyzinj9/Rq9xbOO+qf5Gv+MzJGoB57/ipi2JbDqQAsuz 5iicauAA==; Received: from p4fdb0b85.dip0.t-ipconnect.de ([79.219.11.133] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1n0dyn-00Dn0h-2n; Fri, 24 Dec 2021 06:23:01 +0000 From: Christoph Hellwig To: Andrew Morton , Konrad Rzeszutek Wilk Cc: Hugh Dickins , Seth Jennings , Dan Streetman , Vitaly Wool , Matthew Wilcox , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH 04/13] frontswap: remove frontswap_shrink Date: Fri, 24 Dec 2021 07:22:37 +0100 Message-Id: <20211224062246.1258487-5-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211224062246.1258487-1-hch@lst.de> References: <20211224062246.1258487-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: D1F68A001B X-Stat-Signature: shbtjx7w8wcyhugbf1beu6ax7y9ebrns Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=u2aCIEsS; spf=none (imf25.hostedemail.com: domain of BATV+afcec93cc8ffef6ccdbc+6697+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+afcec93cc8ffef6ccdbc+6697+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none X-HE-Tag: 1640326981-400637 Content-Transfer-Encoding: quoted-printable 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: frontswap_shrink is never called, so remove it. Signed-off-by: Christoph Hellwig --- Documentation/vm/frontswap.rst | 13 ------ include/linux/frontswap.h | 1 - mm/frontswap.c | 83 ---------------------------------- 3 files changed, 97 deletions(-) diff --git a/Documentation/vm/frontswap.rst b/Documentation/vm/frontswap.= rst index 2ab660651d04e..feecc5e244778 100644 --- a/Documentation/vm/frontswap.rst +++ b/Documentation/vm/frontswap.rst @@ -255,19 +255,6 @@ the old data and ensure that it is no longer accessi= ble. Since the swap subsystem then writes the new data to the read swap device, this is the correct course of action to ensure coherency. =20 -* What is frontswap_shrink for? - -When the (non-frontswap) swap subsystem swaps out a page to a real -swap device, that page is only taking up low-value pre-allocated disk -space. But if frontswap has placed a page in transcendent memory, that -page may be taking up valuable real estate. The frontswap_shrink -routine allows code outside of the swap subsystem to force pages out -of the memory managed by frontswap and back into kernel-addressable memo= ry. -For example, in RAMster, a "suction driver" thread will attempt -to "repatriate" pages sent to a remote machine back to the local machine= ; -this is driven using the frontswap_shrink mechanism when memory pressure -subsides. - * Why does the frontswap patch create the new include file swapfile.h? =20 The frontswap code depends on some swap-subsystem-internal data diff --git a/include/linux/frontswap.h b/include/linux/frontswap.h index 83a56392cc7f6..d268d7bb65134 100644 --- a/include/linux/frontswap.h +++ b/include/linux/frontswap.h @@ -24,7 +24,6 @@ struct frontswap_ops { }; =20 extern void frontswap_register_ops(struct frontswap_ops *ops); -extern void frontswap_shrink(unsigned long); extern unsigned long frontswap_curr_pages(void); =20 extern bool __frontswap_test(struct swap_info_struct *, pgoff_t); diff --git a/mm/frontswap.c b/mm/frontswap.c index dba7f087ee862..a77ebba6101bd 100644 --- a/mm/frontswap.c +++ b/mm/frontswap.c @@ -341,89 +341,6 @@ static unsigned long __frontswap_curr_pages(void) return totalpages; } =20 -static int __frontswap_unuse_pages(unsigned long total, unsigned long *u= nused, - int *swapid) -{ - int ret =3D -EINVAL; - struct swap_info_struct *si =3D NULL; - int si_frontswap_pages; - unsigned long total_pages_to_unuse =3D total; - unsigned long pages =3D 0, pages_to_unuse =3D 0; - - assert_spin_locked(&swap_lock); - plist_for_each_entry(si, &swap_active_head, list) { - si_frontswap_pages =3D atomic_read(&si->frontswap_pages); - if (total_pages_to_unuse < si_frontswap_pages) { - pages =3D pages_to_unuse =3D total_pages_to_unuse; - } else { - pages =3D si_frontswap_pages; - pages_to_unuse =3D 0; /* unuse all */ - } - /* ensure there is enough RAM to fetch pages from frontswap */ - if (security_vm_enough_memory_mm(current->mm, pages)) { - ret =3D -ENOMEM; - continue; - } - vm_unacct_memory(pages); - *unused =3D pages_to_unuse; - *swapid =3D si->type; - ret =3D 0; - break; - } - - return ret; -} - -/* - * Used to check if it's necessary and feasible to unuse pages. - * Return 1 when nothing to do, 0 when need to shrink pages, - * error code when there is an error. - */ -static int __frontswap_shrink(unsigned long target_pages, - unsigned long *pages_to_unuse, - int *type) -{ - unsigned long total_pages =3D 0, total_pages_to_unuse; - - assert_spin_locked(&swap_lock); - - total_pages =3D __frontswap_curr_pages(); - if (total_pages <=3D target_pages) { - /* Nothing to do */ - *pages_to_unuse =3D 0; - return 1; - } - total_pages_to_unuse =3D total_pages - target_pages; - return __frontswap_unuse_pages(total_pages_to_unuse, pages_to_unuse, ty= pe); -} - -/* - * Frontswap, like a true swap device, may unnecessarily retain pages - * under certain circumstances; "shrink" frontswap is essentially a - * "partial swapoff" and works by calling try_to_unuse to attempt to - * unuse enough frontswap pages to attempt to -- subject to memory - * constraints -- reduce the number of pages in frontswap to the - * number given in the parameter target_pages. - */ -void frontswap_shrink(unsigned long target_pages) -{ - unsigned long pages_to_unuse =3D 0; - int type, ret; - - /* - * we don't want to hold swap_lock while doing a very - * lengthy try_to_unuse, but swap_list may change - * so restart scan from swap_active_head each time - */ - spin_lock(&swap_lock); - ret =3D __frontswap_shrink(target_pages, &pages_to_unuse, &type); - spin_unlock(&swap_lock); - if (ret =3D=3D 0) - try_to_unuse(type, true, pages_to_unuse); - return; -} -EXPORT_SYMBOL(frontswap_shrink); - /* * Count and return the number of frontswap pages across all * swap devices. This is exported so that backend drivers can --=20 2.30.2