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 D0D1CC2BD09 for ; Mon, 1 Jul 2024 13:53:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 328D36B009B; Mon, 1 Jul 2024 09:53:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D65E6B009C; Mon, 1 Jul 2024 09:53:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 19E696B009D; Mon, 1 Jul 2024 09:53:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id EEBAE6B009B for ; Mon, 1 Jul 2024 09:53:24 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 6F2561A1C04 for ; Mon, 1 Jul 2024 13:53:24 +0000 (UTC) X-FDA: 82291325928.23.9BFE9C8 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by imf20.hostedemail.com (Postfix) with ESMTP id 9CCC01C001B for ; Mon, 1 Jul 2024 13:53:22 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wp6ViqFK; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719841986; a=rsa-sha256; cv=none; b=RnYolFcLgKXiX79fjyU6CLy75ofJNmmJ6fxmFosjC7a1XMMjMgM1MS6wZUffInAP/ZvMoh 6yoZXwofiZ0a+81Sxp/JYkWLwg23Y2gm/VmrjSL8H9n/7/n+vOGZoI6+5vgA5PZfZFR9GS A9BSpev8EXNfPNCw7tt7PiAX2+ZObiY= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=wp6ViqFK; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719841986; 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=GtxGfK4yLjwSTonSngrkMxlYB6Z35sREqX9RHajOJwI=; b=5TfWZZQkuMljf9VoObEtzdk87mbe2pWpgSVCVa3Wetw8W6OGbn/I5KyIsjlocreLu7qisf mV7OXUlgdK5LlH0r/Oqo2poGFpF/mOcgeP3XAHHEv4bKYycmC3FWuolvEXpNHrfXvjoowx C6j/ZSYSnUuuLRMrB6htALlIO0WUMpQ= Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a72988749f0so452205766b.0 for ; Mon, 01 Jul 2024 06:53:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1719842001; x=1720446801; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GtxGfK4yLjwSTonSngrkMxlYB6Z35sREqX9RHajOJwI=; b=wp6ViqFKvx0AwrupLsAYWOJ/HOH078T6WhF4CMrCXBbsZQNkz0uAL46DdHXbm4COBU xDK6/WhEb5evM8ZR3pPWgfMPGguQvfVhC0U84PGEyT4BikGP/tC5PSBRiGukuiklOdod 34pVj4ZGhD9eEkDKflDshMeL3FxbeNhD77XV5s1zr7Vvbw2nDUe93LmCyVKf/IwzwoZa LbJymapwZcpNv2Oblga7Q0kj1iu2i/Hgx6iUaCDCIfJSOSYahI0hGibbn/CGi77p6MtH ZH6PP+j71hC8el6KPwhkS7osxhKbyCNTdacD3lTr/iRZob8vTr3E7ZKkEaDU/fH//sjy 9rDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719842001; x=1720446801; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=GtxGfK4yLjwSTonSngrkMxlYB6Z35sREqX9RHajOJwI=; b=CpuwhM6bufOd5Fm5KAMe3L7zkc/EwzmYBaxFM8GvIKEQGH6aXk8Pt1b+Up7iA1sfpk SrI7+QwuwFvQAulNT4gakyWdPkdZFn/b4MUR7V6Rdk2mUKZr7iBmgxd8HJ50E8mASzBK CkqksWkgYAShZVdEbbQFZV3iyhwrD3nyNj0m6S8WB+HRozvtMxJDuQbuAg0sJ/0SOe+8 UrUPCbnZb0c+uy3wQBHRRmIRFsP3ngQntmCkqOGOximpcLEcKEgrypZm8rjnsOBjVR8q d0Ya0tipSVrjoVjjeTkuMsuupmSM52m/RR1tjuvtFBMiLpzldnWi9HzviW4NwH61O3MS enhw== X-Forwarded-Encrypted: i=1; AJvYcCVlo7p0OxEUoCeLh2sWuftBwg+/0BH7Lff3Gcr3/ZsvOYtGbxASAN8Xn2+wwuaAJgRrCLGVLsrLmr5SE9d1/RhWLZI= X-Gm-Message-State: AOJu0YywY/45QbW01ZhnK6j7TOqrKBI+awiVn9wesT4yox/0G3Ez09Mr NCL+odwKriLUy2hyUKPsz5tOM3UiVotiZvrK30B9eedr/vxnbe5gqilTknrc0Iak5pP3Fpj+VfV C4WShQ8TRa5aQQyPfRwc0k1vsLTBQWackY47E X-Google-Smtp-Source: AGHT+IEj/WEjMM90CqMbsBXDQszqWHwvtMWOSFUvdlbqfaAyuUVnOKSlS8P7Xlvi4rDSBfas+oUPjqXu/50ji0L2W90= X-Received: by 2002:a17:906:7d2:b0:a72:4b31:13b5 with SMTP id a640c23a62f3a-a75144f61a2mr370014766b.54.1719842000514; Mon, 01 Jul 2024 06:53:20 -0700 (PDT) MIME-Version: 1.0 References: <20240629111010.230484-1-21cnbao@gmail.com> <20240629111010.230484-3-21cnbao@gmail.com> In-Reply-To: <20240629111010.230484-3-21cnbao@gmail.com> From: Yosry Ahmed Date: Mon, 1 Jul 2024 06:52:44 -0700 Message-ID: Subject: Re: [PATCH RFC v4 2/2] mm: support large folios swapin as a whole for zRAM-like swapfile To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, linux-mm@kvack.org, chrisl@kernel.org, david@redhat.com, hannes@cmpxchg.org, kasong@tencent.com, linux-kernel@vger.kernel.org, mhocko@suse.com, nphamcs@gmail.com, ryan.roberts@arm.com, shy828301@gmail.com, surenb@google.com, kaleshsingh@google.com, hughd@google.com, v-songbaohua@oppo.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com, baolin.wang@linux.alibaba.com, shakeel.butt@linux.dev, senozhatsky@chromium.org, minchan@kernel.org, Chuanhua Han Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 9CCC01C001B X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 9xtrha5z5jb6ncim718fti5gxz6xw8qu X-HE-Tag: 1719842002-53599 X-HE-Meta: U2FsdGVkX18ji/LiHumiFR6mCaXSfb02XmaNrMyHA9jZeaeoG5Mg9N1BzQsE6fG8GvaMV7XUzL32Kco4YpozJilmVr5QfTt3vBOW0qwCjY+QNIDnUPQs/rB+/0LYtKlSriCj08SKR5q9up+bRSW6TzV8S+Y8l7SwCb8er7+eTQ0pgq8YNRbBvnPf7b6kvE8mFr9ia/gXbtRf/YwUeoSTj05kyHQ40gdjkrnNeDobttKDeTZwBGgqXOxun8cvCLDwIge87zYvqXYYWspr5MUckz7r7FW9U3DpJdkBJL4O0SaqnPWBHbsIpJKr7vVIehMDaCDay7+EgX/qcewQpT8kmflLXHXaFBBMA07T3/yH0A6n1xN3+U7QrS1yGYK/47NMBYgaIv1bRXS578YNXcV+AYLYA5jKypzlbvsKHTLWfB7lkZTx9rUMrNvDTiUF13QRlYzHS+6jFlMAiSb6FAekQBN/wtfLgHVhSNhmRUheuflh/QA8WUra6cn/qFjUEy0rTg51fqL3ktoKvC2hx4+kibwPvisaOpuLKm7LZPBWlH+6gPk5R7zHj06pZ+5C9QFnlfOrdeb+dg+dfIcEoNui3yXnzE680aBmuG2wqwJytTBYXMhSzGD42eFqhTdIOsM8qIonQg33HzLifgf/muykVrOYLSqpfldDUOx4rm4L3JQ+JOvKc+GtgfukMTmMTqv0TnpY7wion6hI61Mj1HbwetruXZgiUEaUfjrstHUdK4mMdoPHjt2jQsbMyZsPotf4LGnEUJjFdZEiKl0U7XbnSkfYEYqaHuqfiQqTDAP29IvwVnMLDZmvLTEdUXRcxi2DN5ltrlrhR+1Dtp249cuvlXn2N03jyhhaGfVB5EZEsilv4ACaUYWgCJpsrA37wJdv3bmuE/vwqr5P90u9yLbcUbh5VLhdsoLRoTOuTx/H1tsG8MMQcNi8wm+uJ4KzD+WcJ+pqfPcfYxsvsdzJL4M EK30Jmq4 KdWu/CNkQu+XvpQ624tViooL8w9q4z8OVc5iE3pKXZnGQKqJpfgmvl3fmrP55ZcCZzPEL4gVFid3H5V7VSbFshUHuWg5T5lEuvBZ+/XwsL0OFXXKLNwR1SYpy1L08/C+FwNRP 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: [..] > +static struct folio *alloc_swap_folio(struct vm_fault *vmf) > +{ > + struct vm_area_struct *vma = vmf->vma; > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > + unsigned long orders; > + struct folio *folio; > + unsigned long addr; > + spinlock_t *ptl; > + pte_t *pte; > + gfp_t gfp; > + int order; > + > + /* > + * If uffd is active for the vma we need per-page fault fidelity to > + * maintain the uffd semantics. > + */ > + if (unlikely(userfaultfd_armed(vma))) > + goto fallback; > + > + /* > + * a large folio being swapped-in could be partially in > + * zswap and partially in swap devices, zswap doesn't > + * support large folios yet, we might get corrupted > + * zero-filled data by reading all subpages from swap > + * devices while some of them are actually in zswap > + */ If we read all subpages from swap devices while some of them are actually in zswap, the corrupted data won't be zero-filled AFAICT, it could be anything (old swapped out data). There are also more ways this can go wrong: if the first page is in zswap, we will only fill the first page and leave the rest of the folio uninitialized. How about a more generic comment? Perhaps something like: A large swapped out folio could be partially or fully in zswap. We lack handling for such cases, so fallback to swapping in order-0 folio. > + if (!zswap_never_enabled()) > + goto fallback; > +