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 D31C9C05027 for ; Fri, 10 Feb 2023 01:16:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 307396B00C1; Thu, 9 Feb 2023 20:16:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 290506B00C3; Thu, 9 Feb 2023 20:16:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 159E86B00C4; Thu, 9 Feb 2023 20:16:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 04CAD6B00C1 for ; Thu, 9 Feb 2023 20:16:52 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C5F621C5D2F for ; Fri, 10 Feb 2023 01:16:51 +0000 (UTC) X-FDA: 80449617822.01.22828D7 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.216.63.40]) by imf26.hostedemail.com (Postfix) with ESMTP id 271B8140005 for ; Fri, 10 Feb 2023 01:16:48 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of yang.yang29@zte.com.cn designates 63.216.63.40 as permitted sender) smtp.mailfrom=yang.yang29@zte.com.cn; dmarc=pass (policy=none) header.from=zte.com.cn ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675991809; a=rsa-sha256; cv=none; b=E3sXyef24z4KHXSWjGRCut0Uy8RHK3iRFUwe6TSfU8Ka7w3Kpry2Lih9ljdwG29pXqMP+G LI8/L6jqds+VDVGNoBE5zSn2uElPETOM/31E3ZQ+PZlz/brD8Zqb+rKmG31Ki9EfZyRxU8 mrCw6L38sc+zXbBzcdyltelHuQ5FXCg= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of yang.yang29@zte.com.cn designates 63.216.63.40 as permitted sender) smtp.mailfrom=yang.yang29@zte.com.cn; dmarc=pass (policy=none) header.from=zte.com.cn ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675991809; 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:in-reply-to: references; bh=Go5knzcgdTW3rle4PYI2BccmNgMMlWTFK6bplH5FMRI=; b=1jmyBcj2gwqigtO8EY8KXapTQCV27hiOtfP5ABW8zW69NxcTseofcwQcyxQFabuUStFkAS 8kX11fYP1dFwHp/PdzdpLEgrD07XxiU16e4bCuDAAkYNN1+7Qs5wvgCEp8VmISjHyPpDNn VtubIeMnJe+Ho2Dad7+TZQInuTLvwwk= Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4PCbRd2v10z8R044; Fri, 10 Feb 2023 09:16:45 +0800 (CST) Received: from szxlzmapp05.zte.com.cn ([10.5.230.85]) by mse-fl1.zte.com.cn with SMTP id 31A1GfQW007483; Fri, 10 Feb 2023 09:16:41 +0800 (+08) (envelope-from yang.yang29@zte.com.cn) Received: from mapi (szxlzmapp01[null]) by mapi (Zmail) with MAPI id mid14; Fri, 10 Feb 2023 09:16:42 +0800 (CST) Date: Fri, 10 Feb 2023 09:16:42 +0800 (CST) X-Zmail-TransId: 2b0363e59afa1ea3fe53 X-Mailer: Zmail v1.0 Message-ID: <202302100916423431376@zte.com.cn> Mime-Version: 1.0 From: To: Cc: , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIHY2IDEvNl0ga3NtOiBhYnN0cmFjdCB0aGUgZnVuY3Rpb24gdHJ5X3RvX2dldF9vbGRfcm1hcF9pdGVt?= Content-Type: text/plain; charset="UTF-8" X-MAIL:mse-fl1.zte.com.cn 31A1GfQW007483 X-Fangmail-Gw-Spam-Type: 0 X-FangMail-Miltered: at cgslv5.04-192.168.250.137.novalocal with ID 63E59AFD.000 by FangMail milter! X-FangMail-Envelope: 1675991805/4PCbRd2v10z8R044/63E59AFD.000/10.5.228.132/[10.5.228.132]/mse-fl1.zte.com.cn/ X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 63E59AFD.000/4PCbRd2v10z8R044 X-Rspam-User: X-Rspamd-Queue-Id: 271B8140005 X-Rspamd-Server: rspam01 X-Stat-Signature: 6nzj8rp48iwc1tjac8f4ezxjhwrpamsd X-HE-Tag: 1675991808-868535 X-HE-Meta: U2FsdGVkX1+WGszZUf+CqEYa3CKq4IAZS0BUsA3eb2Kvs32RFWGBMWyN1AsvVWUCT5oFqwrKtakMDkzZDfzgAgB0Hw/QO9rdum6Py3MME642sfS63nl6SiWit0jyhJq9tnNxwSNYulNZIlWv4/9Hvrx9KDIP4OxUtWj4clfvTLBnP+bOV+y364kzKqFnyU4b1iC+45KLvYGquIAiNPbEJK5pIJvR7goAeffBOZflVx0r4vCTp2xFdeXWHmzdOtx9jdhOhnUbczFBpFTVcsUqpTT0EtBCoonB684jKXieNJdJD1F8iSVhXjlxkw2KbTkAezk+chuXJCdHZctZja6g7kAQLh00zsDnygqL3YyZ61ZhZB4fXLx76vI4GIkUeJdrSmOp/fKJHZleLp58XdQTM6Km+zDqfTLcR8KOeR933wXTHgwXD3RHj/k62IPKi9MfYDtjKox/eAehQ6cNrOup3b1AkbbqiX1YCTQad4t31V4yD5Epr9rJ5479qQpcurifweOWw9C1hYsFq5QQtSIZn7sxQV4GN8k0hQnF5Zb9iyhbpJbnLD/vJTc4EY3Yq2dL+wQrysJbQFfWw0mWRYccLlCX08YNFTYhuTUW0ILb2fg+WKfwBnhjIr8eSyXVlOkNGZ/9rzTPrFAb7VU84xw+Vb2pDmpf3YwAh85C8TNCXtV9XyOluiiw9UWdkelgOAlV0IRNIuGIBHkEUBg0StaqHtCl8attKnQpCCTlF/tAQvOZ3ozF07TOw/F7UWQW+qDtD8irADPJe9J/6ZiGOquHuvo1944+1r9rUvZ3j4vwXIrkexKJC7GNw17h74fm4X4sDaLRCp6skxKiM7xQdUPMEsD/O6Ext5I8F72HKxqKx+uEhkpw0ftId3NF+v3uT8w234KuyKk8TRiTP3RtIvNY51I53Tbl6aQgPQKMjw5iNVqg8bM3cQ6oyj8PYFDepuGAf9tqUkla4kmtXdE+VN3 sUobxSac Bx+xg/icuzsboqdZlU6s9w77aMq+j5zuyQzkmJkQbJljjO3WgLwumw7LE+pJE5KBRN1I1OpdZzFCRoKKXayPSSp9V2419bE5Ga3KDYV3r+Mzw3M6ED48MVrqaToevhOHfbPJmqn0GBc9BOaSkMXx1lmnsMh6+nkAbAZvQqKeHs2MnABg0rLAIJC8hIeda++bro6OYMt5ERgS8nlhdRK8bL6Seq+3dr0hx/uu2wkdSZ9oTM4heYyZcBY66ET4OVCqEUpoh5ksp2kaAecDSKPHvBBdvJT3IRcqAbJNe2TiCYJ+yI+M2Tua5l/tUWJxSWIWXDL2JzXM6ZH42Y4cKzRn/qVMRYq5gR4QlRjl1hRp+oFcJ/+ypnC7zHdtbqSR4ioEVy+ERZAQrdQPRgPaTfGJlOlyo9A== 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: From: xu xin A new function try_to_get_old_rmap_item is abstracted from get_next_rmap_item. This function will be reused by the subsequent patches about counting ksm_zero_pages. The patch improves the readability and reusability of KSM code. Signed-off-by: xu xin Cc: David Hildenbrand Cc: Claudio Imbrenda Cc: Xuexin Jiang Reviewed-by: Xiaokai Ran Reviewed-by: Yang Yang v5->v6: Modify some comments according to David's suggestions. --- mm/ksm.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/mm/ksm.c b/mm/ksm.c index 83e2f74ae7da..905a79d213da 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2214,23 +2214,38 @@ static void cmp_and_merge_page(struct page *page, struct ksm_rmap_item *rmap_ite } } -static struct ksm_rmap_item *get_next_rmap_item(struct ksm_mm_slot *mm_slot, - struct ksm_rmap_item **rmap_list, - unsigned long addr) +static struct ksm_rmap_item *try_to_get_old_rmap_item(unsigned long addr, + struct ksm_rmap_item **rmap_list) { - struct ksm_rmap_item *rmap_item; - while (*rmap_list) { - rmap_item = *rmap_list; + struct ksm_rmap_item *rmap_item = *rmap_list; + if ((rmap_item->address & PAGE_MASK) == addr) return rmap_item; if (rmap_item->address > addr) break; *rmap_list = rmap_item->rmap_list; + /* + * If we end up here, the VMA is MADV_UNMERGEABLE or its page + * is ineligible or discarded, e.g. MADV_DONTNEED. + */ remove_rmap_item_from_tree(rmap_item); free_rmap_item(rmap_item); } + return NULL; +} + +static struct ksm_rmap_item *get_next_rmap_item(struct ksm_mm_slot *mm_slot, + struct ksm_rmap_item **rmap_list, + unsigned long addr) +{ + struct ksm_rmap_item *rmap_item; + + rmap_item = try_to_get_old_rmap_item(addr, rmap_list); + if (rmap_item) + return rmap_item; + rmap_item = alloc_rmap_item(); if (rmap_item) { /* It has already been zeroed */ -- 2.15.2