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 233A4C4332F for ; Tue, 12 Dec 2023 12:43:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B53076B02C7; Tue, 12 Dec 2023 07:43:18 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B02EB6B02C9; Tue, 12 Dec 2023 07:43:18 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9CAA26B02CA; Tue, 12 Dec 2023 07:43:18 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 882956B02C7 for ; Tue, 12 Dec 2023 07:43:18 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 525C680992 for ; Tue, 12 Dec 2023 12:43:18 +0000 (UTC) X-FDA: 81558131676.02.0B011F1 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf05.hostedemail.com (Postfix) with ESMTP id 73DDF10000D for ; Tue, 12 Dec 2023 12:43:15 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=OVuWjJCQ; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702384996; 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:in-reply-to:references:references:dkim-signature; bh=kGIWvdXSgrFnrKeNoXNc/+7W3LmShLHvRAo60PHyg/M=; b=Fo8fGpBcmaNzazR4t06Cma8Ola0p2vzbzEVvvVh7DqFk2xe2wRvPn3Nce53UEZz+/av9Fz FEan6skcDrtxiEHeen+/LUM5Kc1HkGgiY/jRMngM1gufCGGn/RTcBsh673wJCVv9TsjVaZ 0y0DFZxtRsbt6rdW1+N0G8TIM27tEGc= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=OVuWjJCQ; spf=none (imf05.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702384996; a=rsa-sha256; cv=none; b=E2FsB3ib/frGx5x3PoYbeQ0rU3NQqDOXfmQAG0stGZ7khpMfmy+pSEMCx7QsGEDW8OKTG7 rTwKXqbW091ZKZd8FWoKeLV2u20n9Jt+SWHAqwpQicpV6UsB6kveauMFvtjLQ3Oginus2B P8KJX1f5G55V8nLaceF70/fSw8Nrens= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=kGIWvdXSgrFnrKeNoXNc/+7W3LmShLHvRAo60PHyg/M=; b=OVuWjJCQTQihqD7SOTNhcinH8W TMoDHlaz6Iqakvo/mdbhVV56+W52iIe/pFhDcXbeejZhiLzIVZl6kiS4rk9tu7QP8DgYD5n1qSnhb 2plNgG225/vFQ5t5JLWNwdIw9RYXVQDAVm60BXtzXaCdjySTJ5WFh2mI5yTkSGlZq/HCUXnQ5+Ii5 bR097E6eV9xe8TSY9d3pHlR9ldoN93cVGxI2w5xv/YVlPT5hW3tSLKk6Yro1J5zH5n5mYFPza06mi wcbxwx5QS8cOVUUONa5iIN5qtP5CHHYZ84DsvcqtVaADAFwxmNawkAljBoowA3tGik9vvMjLVNWCb 5+SvYfjQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rD26R-00AD93-Fw; Tue, 12 Dec 2023 12:43:11 +0000 Date: Tue, 12 Dec 2023 12:43:11 +0000 From: Matthew Wilcox To: David Hildenbrand Cc: Andrew Morton , linux-mm@kvack.org Subject: Re: [PATCH 1/9] mm: Convert ksm_might_need_to_copy() to work on folios Message-ID: References: <20231211162214.2146080-1-willy@infradead.org> <20231211162214.2146080-2-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 73DDF10000D X-Rspam-User: X-Stat-Signature: uppsyrecagta87phrb8z99yg4bf5pgdw X-Rspamd-Server: rspam01 X-HE-Tag: 1702384995-255629 X-HE-Meta: U2FsdGVkX185eWh/iCxOzECmT4+UzEBZADx1uDHlBB9JMTyWuenuexegnNTy0thQhxqSQIyejOmeAqD1ufQIoGvm6v5D++2FBXnnmpcfJysYqizojB0AZRN3Yrf0S0TojOfK1c0HzoJcL7Zn96rB7dJiMLiz3Xr/MtJeMKWLV7WKonmUNfFnDHKw5S7KvO1/zov3xSmUFZHzk++njczNJ0lWn9VOketKXgFmDo7yZxDUdzw/1r/QjrKxXfpo2YhgMr6DvoDcTPllth0Ki+vSHvTdwO8Q7MQIldfPCYkjcGpxzXdortWtzPYcimNZl4c/e6vWMPF7vsl/peXipAekEbNSoyBUdNhMy7hTpl2utw1MKMDUVVxe6yw92A/rL+qRVHbCczpxJUw0taagwwH1wSebf7eMd/4JWXFRKyprq2XKb+MeDctZPVsEWQRcZcxR6GdjuEYaf8bloP3ON95c6DeMx+g8XOux8dsMlSY6MGJINoEfcb8ZVtD8gkJqNPRecwKOGrrqLw7YhBcue/w09Y3IA8bPC2q92g/LQE9nBKETsN21yYzcMHP9CX03KA1aqL+eK+kzQf6jjmhioiNErdpPTqxhGx/JXbaWfyKd9ZnUR8a2kzRfOZIP81qz+QAD5YcK20ek9KzvwtSeVGIm3Ltoo3q+4+SASZPyEXndApik5K7kzhAYVrs57juC27YhwH+aALE1wJhA9gkJde0v3L0lhSnoFHTgz38Pqr1Gq/3F1q2ri7MZHyVtixvrVsm6UFlBdL+GeH/mxWF0AxnEDwLe7toEn9XcGvLJC835udgPt+hAuAQ4UdFJ8LhGjpZ//37IrbqqJjPuQuzT3qyIGPgbvBC7Odr8XRC7HbTbf+fHbdv2gGRInYdP1nAjcckNEUAl8LLi6Zh60oj79ixj/cQGfgCSF9gsmz5nr5S7YPCsiv8XpJWhCRZ+4X9mmJmxAYiChu5fAEjjgcrb2gE mrYEZk2h 8UX3dL8CRegwnQ8+RhsN3iys6sa1EgCyYhyUS6cBSzlcAvm+kLY4fL81DIzcKwgl4e/PptZ4Jwf1Y66ezABdQXsgk0YTz1hkqt/PJruw8xQ6zoWnDQjYr5GHn2QwI/xf03nX4UIlb6j+eloAZArPSHh2RmY7pKUbNxVqBws/2528xMQF9fvADfogI0Q== 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: On Tue, Dec 12, 2023 at 01:32:50PM +0100, David Hildenbrand wrote: > > +++ b/mm/swapfile.c > > @@ -1749,11 +1749,13 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd, > > int ret = 1; > > swapcache = page; > > - page = ksm_might_need_to_copy(page, vma, addr); > > - if (unlikely(!page)) > > + folio = ksm_might_need_to_copy(folio, vma, addr); > > + if (unlikely(!folio)) > > return -ENOMEM; > > - else if (unlikely(PTR_ERR(page) == -EHWPOISON)) > > + else if (unlikely(folio == ERR_PTR(-EHWPOISON))) > > hwpoisoned = true; > > + else > > + page = folio_file_page(folio, swp_offset(entry)); > > Just to double-check: > > assuming ksm_might_need_to_copy() in fact allocated a fresh (order-0) folio, > folio_file_page() will simply translate to "folio_page(folio, 0)" and should > be fine. That's right: static inline struct page *folio_file_page(struct folio *folio, pgoff_t index) { return folio_page(folio, index & (folio_nr_pages(folio) - 1)); } so an order-0 folio will return the only page in the folio.