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 AD324C3DA4A for ; Mon, 29 Jul 2024 13:32:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 33EC66B009A; Mon, 29 Jul 2024 09:32:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2EE9D6B009B; Mon, 29 Jul 2024 09:32:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1B6576B009C; Mon, 29 Jul 2024 09:32:38 -0400 (EDT) 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 F0AA96B009A for ; Mon, 29 Jul 2024 09:32:37 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 735F81403BF for ; Mon, 29 Jul 2024 13:32:37 +0000 (UTC) X-FDA: 82392879954.20.56A0054 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) by imf06.hostedemail.com (Postfix) with ESMTP id 8080D180021 for ; Mon, 29 Jul 2024 13:32:34 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KPgZWbtC; spf=pass (imf06.hostedemail.com: domain of chuanhuahan@gmail.com designates 209.85.167.43 as permitted sender) smtp.mailfrom=chuanhuahan@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722259928; 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=YbRjAHQtUB3Dfr8gxrGGpoQyBA89PQB8SKva9HnXgRk=; b=jcnfF7fJhbulelS+OAIdURk6UNbOsW1T+zfKHZ9PLiiQO3SQ693f2afAYme9yyclv4HbZc JpkxSeHSk4cQq2LlakD9hXUbFiKtgUhcS+VMAGE/WBB3FobOSJvO2ugfCax6Qvm/MfepNo spdslV9zuY8hBISRvCerPzVECWKhEd0= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KPgZWbtC; spf=pass (imf06.hostedemail.com: domain of chuanhuahan@gmail.com designates 209.85.167.43 as permitted sender) smtp.mailfrom=chuanhuahan@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722259928; a=rsa-sha256; cv=none; b=rjoUQw/XVohLxfMg2YYHQaB8ryAR3DXt8bVnquA4bzW8dfzYnHdQzYcejsNgGBaWIvFe86 HSEozOGNwba0ooOL1DdrS1FmdrPny00PRoUVCwGrGIZxD4AsgJps5Q/Yir34gkaeQl/39Z z6Y9KBJJCB2kK9+fmlsDt8x45nfX6Co= Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-52efbb55d24so5023029e87.1 for ; Mon, 29 Jul 2024 06:32:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722259953; x=1722864753; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YbRjAHQtUB3Dfr8gxrGGpoQyBA89PQB8SKva9HnXgRk=; b=KPgZWbtC8+Mb0A6N/IIK8LYByUSz8aRj/TdUGSMpNAygihhPdRRC7FG/m+BDSZNKF9 S7hvh6K34BzJzIu/HccUU/zmdgAFP44xAE4kLriDBOzBLzCn5RipbC5m0yFIc7c7/2b0 LAugZSk/DXDW+vLdDlwGM1H5oUnykMsZhRXB6i8xgrtGroj1RN3U5OYuBXbCy5YzXNKZ SFi9U3ZhSkiUNz9xS6TJPYlrPALrY3S2VZj+vsGIGFAXGL50GeGfuwStZeIeSvZK78Ti GSY3RsnEtWStAOdxCJqRRGIroyIF6PP8XY2kJPRLLPAIfSN2OyeSp3/ZqvX/6uZIU6Il aSjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722259953; x=1722864753; h=content-transfer-encoding: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=YbRjAHQtUB3Dfr8gxrGGpoQyBA89PQB8SKva9HnXgRk=; b=LOAZdIyv6CG7HylyDuhrrwRP7ouNDl63xlN6E7WYf+EL58zXtp+XNbmZr+WSMyXrl+ okFPnBrSzU1igMHHb0Z9ssxUYjosjYZsHtPRkoJUdY9jfG1oMNNquseBp0Z7UIurbVs1 b3s294SCyAayjSjC4WiekqRRHzfjIOJY3776oXB6W+VVAXKrw4iB3ks2+ZI0VxVeVYov wxAY/sxswG71tyfSOehyKNq63GcvUj+PF4x2eovGDEaYlrOgH3LugwNbcjNwnt7mSH5L yflrKLAMnK9jkxdDhNTjrS/cKdhdyOJHXfaGmLsfPmCS2pI0eUK3vEEHpXoX1YJd8elY uVvw== X-Forwarded-Encrypted: i=1; AJvYcCWcUGkfHLOi8JX7neinBeOVGQsfFfInN8GbhefujPYyvDvYj6ZvsMPZ9jNE0g/WcMLI3Z4Ytv8zfIbmcWW3anD7+xY= X-Gm-Message-State: AOJu0YwJ/qM9/tJAQju5vPuGaklhGoDtKL3zJtuFVZRaNSo0Wd6G6nZK 6hvsDxXUCdpLJQEVfN4yZVO5TQ30QAAYrtwwFdeMOSS6E8kWr/pJs+Zg0eaxAl4HoSPnjnILJtp L72eTE8HJuPvwU8vwveoL19/3e0Yf9wXGYss= X-Google-Smtp-Source: AGHT+IE71KUp2UUw2nzU+qFo3xxkx15j6FcheRdalU9a6Wo0DAliW7C/B2RxOZOo+MHMdZNXOuTl+qDdqcspqNW0Q7Q= X-Received: by 2002:ac2:4bc7:0:b0:52c:84ac:8fa2 with SMTP id 2adb3069b0e04-5309b269275mr7252892e87.7.1722259952209; Mon, 29 Jul 2024 06:32:32 -0700 (PDT) MIME-Version: 1.0 References: <20240726094618.401593-1-21cnbao@gmail.com> <20240726094618.401593-4-21cnbao@gmail.com> In-Reply-To: From: Chuanhua Han Date: Mon, 29 Jul 2024 21:32:20 +0800 Message-ID: Subject: Re: [PATCH v5 3/4] mm: support large folios swapin as a whole for zRAM-like swapfile To: Matthew Wilcox Cc: Barry Song <21cnbao@gmail.com>, akpm@linux-foundation.org, linux-mm@kvack.org, ying.huang@intel.com, baolin.wang@linux.alibaba.com, chrisl@kernel.org, david@redhat.com, hannes@cmpxchg.org, hughd@google.com, kaleshsingh@google.com, kasong@tencent.com, linux-kernel@vger.kernel.org, mhocko@suse.com, minchan@kernel.org, nphamcs@gmail.com, ryan.roberts@arm.com, senozhatsky@chromium.org, shakeel.butt@linux.dev, shy828301@gmail.com, surenb@google.com, v-songbaohua@oppo.com, xiang@kernel.org, yosryahmed@google.com, Chuanhua Han Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 8080D180021 X-Stat-Signature: uaregnsoohow8fmkcesn4g9qg6ykm7xg X-HE-Tag: 1722259954-818604 X-HE-Meta: U2FsdGVkX1/Ut6WyVKcwcbX/XBTbsLEC2dXdvjfHPvIYUuYFolK5nguTfGzOt6qq6ArGQXF3wazo+TlCUqEtec6zAY5LPcaqfmw7g9hP0XGIayVC99uL3gg2GlcnDqkhqd3cTmIuDVoFXFza5Lzt1JaTmzhZBZxucvKjrpv92r/1QYF0xrbpMBaSXDfcU6HDFJIDp3j+ajvQk5zI+oS87wquqslUAKztv7Hlq+dF1tiZ0TD/jZoKcOO4zvbA/c9VMFpHdzHIkzRGjOfAPBkf2oJq3ILjZgrirLvyYRwj0CNskyuRqDcPL1MtsPKg1tr++4rS72vTm/cw4QomZYs0TB5kGsxWdHec74gqyrVUULLZZRaylzogN0syqfKrU5iDTrCg1AY5RVX+TKdtjlp1Vt14SCITP3sIo1p00Nx1JF3VnxH0WF5yB9gjCH0ms8nIJaPLQfkUMniQSlnPq3aU3V8wcWlXbw645YjUfv9wQtIkzQmpTE9devzBxVE8BKRbamjTW7DPxW0tzesogXrPenABdiaEfUPMUJv7ymjUgCqwbPeHsAhoSM1oz9At/ineEJNW8fWJOJp2F/H2K6JG+bKYPHj6zRz/oY2sGKJ+wc0S/yC98rKCvTaghvuIWxzNvhU6VfAyLQyvL0aWjyp0XeeHCiZrvIG6EvN+cueViCF/mdiQ+KuucizoRJguQB+ulw2lBNPeDupXM2uanwd5LPDbqYKFgy1UNHJKc6jwjkCSl70Fa7L/cSRHskbDD7YzuFYKDsmyji4Oq+ls6vZs7mh8EyG9+KkPS7BmOEBuOmlU+QGWXWnX0GHpZSpNzvkyTLrklbDAGeGRiCUlwE+C3MbxX1L08lY0YPlHewKIMB3GUXqUT9DDP6RBO7nWrPomyDUXdTvfi9qVN4F9yXyeozQLji0H1A3JzPRx0d4fgIYcFZ4DxK5tVJXm/MHJhX7gGC8jW/HrfP8eBCSMK7w IqNAdtoC XDL+QHt+E1AXs2/r8xy/p/cqM3D4Up3ThgQMefVY5nhfS3AvIVlg7jObmPzElKXLF3T3/CEQoV2FNtYKaN/Af0po+eHdCJx7bcqUue1xc9rYGdT5n5VP+gqwZG61t+AbiZyZn9cGH+8cE03B73wPdB57w9wisEBYxMunLOfFrkNWaXaOhYn3vvPaFvHx34y5cP1dq4cAY/X4Ktw23L4k9PgdDnVKcHjBF8echSz31iRuCFtHPRsADLZOveIpcgwguEeVModMtuu6Z1FXxOUAnOXKSqakirJPD2Vb6R0bJ9Xua4I3eDgqB9kuF93REklDc4FY6MQUpxgoJOyK6h6fTUgBWQIvQXbJCZyzdjCXONo99M6k= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Matthew Wilcox =E4=BA=8E2024=E5=B9=B47=E6=9C=8829=E6= =97=A5=E5=91=A8=E4=B8=80 20:55=E5=86=99=E9=81=93=EF=BC=9A > > On Mon, Jul 29, 2024 at 02:36:38PM +0800, Chuanhua Han wrote: > > Matthew Wilcox =E4=BA=8E2024=E5=B9=B47=E6=9C=8829= =E6=97=A5=E5=91=A8=E4=B8=80 11:51=E5=86=99=E9=81=93=EF=BC=9A > > > > > > On Fri, Jul 26, 2024 at 09:46:17PM +1200, Barry Song wrote: > > > > - folio =3D vma_alloc_folio(GFP_HIGHUSER_MOVABL= E, 0, > > > > - vma, vmf->address, fa= lse); > > > > + folio =3D alloc_swap_folio(vmf); > > > > page =3D &folio->page; > > > > > > This is no longer correct. You need to set 'page' to the precise pag= e > > > that is being faulted rather than the first page of the folio. It wa= s > > > fine before because it always allocated a single-page folio, but now = it > > > must use folio_page() or folio_file_page() (whichever has the correct > > > semantics for you). > > > > > > Also you need to fix your test suite to notice this bug. I suggest > > > doing that first so that you know whether you've got the calculation > > > correct. > > > > > > > > > > This is no problem now, we support large folios swapin as a whole, so > > the head page is used here instead of the page that is being faulted. > > You can also refer to the current code context, now support large > > folios swapin as a whole, and previously only support small page > > swapin is not the same. > > You have completely failed to understand the problem. Let's try it this > way: > > We take a page fault at address 0x123456789000. > If part of a 16KiB folio, that's page 1 of the folio at 0x123456788000. > If you now map page 0 of the folio at 0x123456789000, you've > given the user the wrong page! That looks like data corruption. The user does not get the wrong data because we are mapping the whole, and for 16KiB folio, we map 16KiB through the page table. > > The code in > if (folio_test_large(folio) && folio_test_swapcache(folio)) { > as Barry pointed out will save you -- but what if those conditions fail? > What if the mmap has been mremap()ed and the folio now crosses a PMD > boundary? mk_pte() will now be called on the wrong page. These special cases have been dealt with in our patch. For mthp's large folio, mk_pte uses head page to construct pte. --=20 Thanks, Chuanhua